prismock icon indicating copy to clipboard operation
prismock copied to clipboard

chore(deps): update prisma monorepo to v5.20.0

Open renovate[bot] opened this issue 7 months ago • 0 comments

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@prisma/client (source) 5.17.0 -> 5.20.0 age adoption passing confidence
@prisma/generator-helper (source) 5.17.0 -> 5.20.0 age adoption passing confidence
@prisma/internals (source) 5.17.0 -> 5.20.0 age adoption passing confidence
prisma (source) 5.17.0 -> 5.20.0 age adoption passing confidence

Release Notes

prisma/prisma (@​prisma/client)

v5.20.0

Compare Source

🌟 Help us spread the word about Prisma by starring the repo or posting on X about the release. 🌟

Highlights

strictUndefinedChecks in Preview

With Prisma ORM 5.20.0, the Preview feature strictUndefinedChecks will disallow any value that is explicitly undefined and will be a runtime error. This change is direct feedback from this GitHub issue and follows our latest proposal on the same issue.

To demonstrate the change, take the following code snippet:

prisma.table.deleteMany({
  where: {
    // If `nullableThing` is nullish, this query will remove all data.
    email: nullableThing?.property,
  }
})

In Prisma ORM 5.19.0 and below, this could result in unintended behavior. In Prisma ORM 5.20.0, if the strictUndefinedChecks Preview feature is enabled, you will get a runtime error instead:

Invalid \`prisma.user.findMany()\` invocation in
/client/tests/functional/strictUndefinedChecks/test.ts:0:0
  XX })
  XX 
  XX test('throws on undefined input field', async () => {
→ XX   const result = prisma.user.deleteMany({
         where: {
           email: undefined
                  ~~~~~~~~~
         }
       })
Invalid value for argument \`where\`: explicitly \`undefined\` values are not allowed."

We have also introduced the Prisma.skip symbol, which will allow you to get the previous behavior if desired.

prisma.table.findMany({
  where: {
    // Use Prisma.skip to skip parts of the query
    email: nullableEmail ?? Prisma.skip
  }
})

From Prisma ORM 5.20.0 onward, we recommend enabling strictUndefinedChecks, along with the TypeScript compiler option exactOptionalPropertyTypes, which will help catch cases of undefined values at compile time. Together, these two changes will help protect your Prisma queries from potentially destructive behavior.

strictUndefinedChecks will be a valid Preview feature for the remainder of Prisma ORM 5. With our next major version, this behavior will become the default and the Preview feature will be “graduated” to Generally Available.

If you have any questions or feedback about strictUndefinedChecks, please ask/comment in our dedicated Preview feature GitHub discussion.

typedSql bug fix

Thank you to everyone who has tried out our typedSql Preview feature and provided feedback! This release has a quick fix for typescript files generated when Prisma Schema enums had hyphens.

Fixes and improvements

Prisma
Prisma Engines

Credits

Huge thanks to @​mcuelenaere, @​pagewang0, @​key-moon, @​pranayat, @​yubrot, @​thijmenjk, @​mydea, @​HRM, @​haaawk, @​baileywickham, @​brian-dlee, @​nickcarnival, @​eruditmorina, @​nzakas, and @​gutyerrez for helping!

v5.19.1

Compare Source

Today, we are issuing the 5.19.1 patch release.

What's Changed

We've fixed the following issues:

Full Changelog: https://github.com/prisma/prisma/compare/5.19.0...5.19.x, https://github.com/prisma/prisma-engines/compare/5.19.0...5.19.x

v5.19.0

Compare Source

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

🌟 Help us spread the word about Prisma by starring the repo or posting on X about the release. 🌟

Highlights

Introducing TypedSQL

TypedSQL is a brand new way to interact with your database from Prisma Client. After enabling the typedSql Preview feature, you’re able to write SQL queries in a new sql subdirectory of your prisma directory. These queries are then checked by Prisma during using the new --sql flag of prisma generate and added to your client for use in your code.

To get started with TypedSQL:

  1. Make sure that you have the latest version of prisma and @prisma/client installed:

    npm install -D prisma@latest
    npm install @​prisma/client@latest
    
  2. Enable the typedSql Preview feature in your Prisma Schema.

       generator client {
         provider = "prisma-client-js"
         previewFeatures = ["typedSql"]
       }
    
  3. Create a sql subdirectory of your prisma directory.

    mkdir -p prisma/sql
    
  4. You can now add .sql files to the sql directory! Each file can contain one sql query and the name must be a valid JS identifier. For this example, say you had the file getUsersWithPosts.sql with the following contents:

    SELECT u.id, u.name, COUNT(p.id) as "postCount"
    FROM "User" u
    LEFT JOIN "Post" p ON u.id = p."authorId"
    GROUP BY u.id, u.name
    
  5. Import your SQL query into your code with the @prisma/client/sql import:

       import { PrismaClient } from '@​prisma/client'
       import { getUsersWithPosts } from '@​prisma/client/sql'
    
       const prisma = new PrismaClient()
    
       const usersWithPostCounts = await prisma.$queryRawTyped(getUsersWithPosts)
       console.log(usersWithPostCounts)
    

There’s a lot more to talk about with TypedSQL. We think that the combination of the high-level Prisma Client API and the low-level TypedSQL will make for a great developer experience for all of our users.

To learn more about behind the “why” of TypedSQL be sure to check out our announcement blog post.

For docs, check out our new TypedSQL section.

Bug fixes

Driver adapters and D1

A few issues with our driverAdapters Preview feature and Cloudflare D1 support were resolved via https://github.com/prisma/prisma-engines/pull/4970 and https://github.com/prisma/prisma/pull/24922

  • Mathematic operations such as max, min, eq, etc in queries when using Cloudflare D1.
  • Resolved issues when comparing BigInt IDs when relationMode="prisma" was enabled and Cloudflare D1 was being used.
Joins

Join us

Looking to make an impact on Prisma in a big way? We're now hiring engineers for the ORM team!

  • Senior Engineer (TypeScript): This person will be primarily working on the TypeScript side and evolving our Prisma client. Rust knowledge (or desire to learn Rust) is a plus.
  • Senior Engineer (Rust): This person will be focused on the prisma-engines Rust codebase. TypeScript knowledge (or, again, a desire to learn) is a plus.

Credits

Huge thanks to @​mcuelenaere, @​pagewang0, @​Druue, @​key-moon, @​Jolg42, @​pranayat, @​ospfranco, @​yubrot, @​skyzh for helping!

v5.18.0

Compare Source

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

Highlights
Native support for UUIDv7

Previous to this release, the Prisma Schema function uuid() did not accept any arguments and created a UUIDv4 ID. While sufficient in many cases, UUIDv4 has a few drawbacks, namely that it is not temporally sortable.

UUIDv7 attempts to resolve this issue, making it easy to temporally sort your database rows by ID!

To support this, we’ve updated the uuid() function in Prisma Schema to accept an optional, integer argument. Right now, the only valid values are 4 and 7, with 4 being the default.

model User {
  id   String @​id @​default(uuid()) // defaults to 4
  name String
}

model User {
  id   String @​id @​default(uuid(4)) // same as above, but explicit
  name String
}

model User {
  id   String @​id @​default(uuid(7)) // will use UUIDv7 instead of UUIDv4
  name String
}
Bug squashing

We’ve squashed a number of bugs this release, special thanks to everyone who helped us! A few select highlights are:

Fixes and improvements
Prisma
Language tools (e.g. VS Code)
Credits

Huge thanks to @​mcuelenaere, @​pagewang0, @​Druue, @​key-moon, @​Jolg42, @​pranayat, @​ospfranco, @​yubrot, @​skyzh, @​haaawk for helping!


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • [ ] If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

renovate[bot] avatar Aug 06 '24 15:08 renovate[bot]