Prisma: 3.7.0 Release

Release date:
December 21, 2021
Previous version:
3.6.0 (released November 30, 2021)
Magnitude:
1,697 Diff Delta
Contributors:
10 total committers
Data confidence:
Commits:

53 Commits in this Release

Ordered by the degree to which they evolved the repo in this version.

Authored December 8, 2021
Authored December 8, 2021
Authored December 15, 2021
Authored December 15, 2021
Authored December 14, 2021

Top Contributors in 3.7.0

millsp
garrensmith
renovate-bot
aqrln
YassinEldeeb
benkroeger
Jolg42
janpio
prisma-bot
chenkie

Directory Browser for 3.7.0

We haven't yet finished calculating and confirming the files and directories changed in this release. Please check back soon.

Release Notes Published

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

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

Major improvements

Referential actions support for MongoDB

In 3.7.0, we've added MongoDB support for onDelete and onUpdate to specify how you want to handle changes to relationships.

MongoDB does not support referential actions out of the box, but we can emulate this feature inside the Prisma Query Engine.

Given the following schema:

 model User {
   id    String @id @default(dbgenerated()) @map("_id") @db.ObjectId
   posts Post[]
   name  String
 }

 model Post {
   id     String @id @default(dbgenerated()) @map("_id") @db.ObjectId
+  author User   @relation(fields: [userId], references: [id], onDelete: Cascade)
-  author User   @relation(fields: [userId], references: [id])
   title  String
   userId String @db.ObjectId
 }

By specifying onDelete: Cascade, Prisma will also delete posts whenever the author of the posts is deleted. There's a lot more to referential actions than cascading deletes. Head over to our documentation to learn more.

Prisma exposes features and workflows that database vendors don't offer.

Prevent referential cycles on MongoDB

As part of getting onDelete and onUpdate ready for MongoDB, we’ve tightened up our validation rules to prevent a potential stack overflow if you create a loop with referential actions.

This change may cause some existing schemas using the mongodb preview feature to become invalid, where your schema now errors out with the following message:

Error parsing attribute "@relation": Reference causes a cycle.

If you run into this, you can learn how to resolve it with this documentation. If you’re still stuck, feel free to open a discussion and we’ll lend a hand!

Deprecating undocumented usage of type in Prisma Schema

With Prisma 3.7.0 release, the Prisma VS Code extension (and other IDEs using our language server implementation) will start to show a warning when detecting unsupported usage of the type keyword.

An example of that is string aliasing:

type MyId = String @id @default(dbgenerated(new_uuid()))

model A {
  id MyId
}

We plan to remove that functionality entirely with the next major release of Prisma. If you happen to depend on similar functionality for type aliasing, please leave a comment on the issue.

Prisma Studio

  • Due to how Prisma Studio executes Prisma Client queries, it was possible to execute arbitrary code on Studio’s local server. This has since been patched.
  • Issues with viewing and updating models with BigInt fields are also resolved. ## Fixes and improvements

Prisma Client

Prisma Migrate

Language tools (e.g. VS Code)

Credits

Huge thanks to @otan, @benkroeger, @YassinEldeeb, @chenkie for helping!

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

Learn about the latest release and other news from the Prisma community by joining us for another "What's new in Prisma Holiday Special" livestream.

The stream takes place on YouTube on Tuesday, December 21 at 5 pm Berlin | 8 am San Francisco.