Skip to content

3.1.1

Compare
Choose a tag to compare
@Jolg42 Jolg42 released this 21 Sep 15:11
· 3685 commits to main since this release
66e6e36

Today, we are excited to share the 3.1.1 stable release 🎉

🌟 Help us spread the word about Prisma by starring the repo ☝️ or tweeting about the release.

Major improvements

Referential Integrity is in Preview 🚀

Relational databases typically ensure integrity between relations with foreign key constraints, for example, given a 1:n relation between User:Post, you can configure the deletion of a user to cascade to posts so that no posts are left pointing to a User that doesn't exist. In Prisma, these constraints are defined in the Prisma schema with the @relation() attribute.

However, databases like PlanetScale do not support defining foreign keys. To work around this limitation so that you can use Prisma with PlanetScale, we're introducing a new referentialIntegrity setting in Preview.

This was initially introduced in version 2.24.0 of Prisma with the planetScaleMode preview feature and setting. Starting with this release both have been renamed to referentialIntegrity.

The setting lets you control whether referential integrity is enforced by the database with foreign keys (default), or by Prisma, by setting referentialIntegrity = "prisma".

Setting Referential Integrity to prisma has the following implications:

  • Prisma Migrate will generate SQL migrations without any foreign key constraints.
  • Prisma Client will emulate foreign key constraints and referential actions on a best-effort basis.

You can give it a try in version 3.1.1 by enabling the referentialIntegrity preview flag:

datasource db {
  provider             = "mysql"
  url                  = env("DATABASE_URL")
  referentialIntegrity = "prisma"
}

generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"]
}

After changing referentialIntegrity to prisma, make sure you run prisma generate to ensure that the Prisma Client logic has been updated.

Note that Referential Integrity is set to prisma by default when using MongoDB.

Learn more about it in our documentation, and share your feedback.

Full-Text Search for the Go Client

In an earlier release, we added Full-Text Search (for PostgreSQL) to the Typescript Client. This was released as a Preview feature.

In this release, we've added that Preview feature to the Go Client. Enable it in your Go project by adding the fullTextSearch preview feature.

Here's an example:

// Fetch all drafts with a title that contains the words fox or dog
posts, _ := client.Post.FindMany(
  db.Post.Title.Search("fox | dog"),
  db.Post.Status.Equals("Draft"),
).Exec(context.Background())

// Loop over the posts and print the title
for _, post := range posts {
  fmt.Println(post.Title)
}

You can get started with the Go Client using our Quick Start Guide. Learn more about Full-Text Search in our documentation.

Interested in Prisma’s upcoming Data Proxy for serverless backends? Get notified! 👀

Database connection management in serverless backends is challenging: taming the number of database connections, additional query latencies for setting up connections, etc.

At Prisma, we are working on a Prisma Data Proxy that makes integrating traditional relational and NoSQL databases in serverless Prisma-backed applications a breeze. If you are interested, you can sign up to get notified of our upcoming Early Access Program here:

https://pris.ly/prisma-data-proxy

📺 Join us for another "What's new in Prisma" livestream

Learn about the latest 3.1.1 release and other news from the Prisma community by joining Daniel Norman from the Prisma team for another What's new in Prisma livestream.

The stream takes place on Youtube on Thursday, September 23 at 5pm Berlin | 8am San Francisco.

Fixes and improvements

Prisma Migrate

Prisma Client

Prisma

Credits

Huge thanks to @saintmalik, @benkenawell, @ShubhankarKG, @hehex9 for helping!