Prisma: 2.0.0-beta.7 Release

Release date:
May 29, 2020
Previous version:
2.0.0-beta.6 (released May 26, 2020)
Magnitude:
1,336 Diff Delta
Contributors:
5 total committers
Data confidence:
Commits:

44 Commits in this Release

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

Authored May 29, 2020
Authored May 27, 2020
Authored May 29, 2020
Authored May 27, 2020
Authored May 27, 2020
Authored May 28, 2020
Authored May 29, 2020
Authored May 29, 2020
Authored May 29, 2020
Authored May 29, 2020
Authored May 29, 2020
Authored May 28, 2020
Authored May 26, 2020
Authored May 29, 2020
Authored May 29, 2020
Authored May 29, 2020
Authored May 29, 2020
Authored May 29, 2020
Authored May 29, 2020
Authored May 29, 2020

Top Contributors in 2.0.0-beta.7

timsuchanek
Jolg42
Sytten
steebchen
janpio

Directory Browser for 2.0.0-beta.7

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 issuing the seventh Beta release: 2.0.0-beta.7 (short: beta.7).

New Pagination

Prisma Client's pagination has been simplified a lot!

  • Removed first, last, before, after arguments.
  • Added cursor and take arguments.
  • skip argument unchanged.

The take argument replaces first and last.

Examples

first

prisma.user.findMany({
  first: 10
})

// becomes
prisma.user.findMany({
  take: 10
})

last

prisma.user.findMany({
  last: 10
})

// becomes
prisma.user.findMany({
  take: -10
})

before

prisma.user.findMany({
  before: "someid"
  first: 10
})

// becomes
prisma.user.findMany({
  cursor: "someid"
  take: -10
  skip: 1
})

after

prisma.user.findMany({
  after: "someid"
  first: 10
})

// becomes
prisma.user.findMany({
  cursor: "someid"
  take: 10
  skip: 1
})

The record specified with cursor is now included in the results, making skip: 1 necessary if you want to preserve the previous before / after semantics.

This diagram illustrates how the pagination works: ``` cursor: 5
skip: 0 or undefined
β”‚
β”‚
β”‚
β–Ό
β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”β”β”β”β”“β”β”β”β”β”“β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β” β”‚ 1 β”‚β”‚ 2 β”‚β”‚ 3 │┃ 4 ┃┃ 5 ┃│ 6 β”‚β”‚ 7 β”‚β”‚ 8 β”‚β”‚ 9 β”‚β”‚10 β”‚ β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β”—β”β”β”β”›β”—β”β”β”β”›β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜ ◀────────
take: -2

                cursor: 5                       
                 skip: 1                        
                    β”‚                           
                    β”‚                           
                    β”‚                           
                    β–Ό                           

β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”β”β”β”β”“β”β”β”β”β”“β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β” β”‚ 1 β”‚β”‚ 2 │┃ 3 ┃┃ 4 ┃│ 5 β”‚β”‚ 6 β”‚β”‚ 7 β”‚β”‚ 8 β”‚β”‚ 9 β”‚β”‚10 β”‚ β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β”—β”β”β”β”›β”—β”β”β”β”›β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜ ◀────────
take: -2

                cursor: 5                       
                 skip: 2                        
                    β”‚                           
                    β”‚                           
                    β”‚                           
                    β–Ό                           

β”Œβ”€β”€β”€β”β”β”β”β”β”“β”β”β”β”β”“β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β” β”‚ 1 │┃ 2 ┃┃ 3 ┃│ 4 β”‚β”‚ 5 β”‚β”‚ 6 β”‚β”‚ 7 β”‚β”‚ 8 β”‚β”‚ 9 β”‚β”‚10 β”‚ β””β”€β”€β”€β”˜β”—β”β”β”β”›β”—β”β”β”β”›β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜ ◀────────
take: -2

        cursor: 5                               
        skip: 0 or undefined                    
                  β”‚                             
                  β”‚                             
                  β”‚                             
                  β–Ό                             

β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”β”β”β”β”“β”β”β”β”β”“β”β”β”β”β”“β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”
β”‚ 1 β”‚β”‚ 2 β”‚β”‚ 3 β”‚β”‚ 4 │┃ 5 ┃┃ 6 ┃┃ 7 ┃│ 8 β”‚β”‚ 9 β”‚β”‚10 β”‚
β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β”—β”β”β”β”›β”—β”β”β”β”›β”—β”β”β”β”›β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜
──────────▢
take: 3

              cursor: 5                         
              skip: 1                           
                  β”‚                             
                  β”‚                             
                  β”‚                             
                  β–Ό                             

β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”β”β”β”β”“β”β”β”β”β”“β”β”β”β”β”“β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”
β”‚ 1 β”‚β”‚ 2 β”‚β”‚ 3 β”‚β”‚ 4 β”‚β”‚ 5 │┃ 6 ┃┃ 7 ┃┃ 8 ┃│ 9 β”‚β”‚10 β”‚
β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β”—β”β”β”β”›β”—β”β”β”β”›β”—β”β”β”β”›β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜
──────────▢
take: 3

              cursor: 5                         
              skip: 2                           
                  β”‚                             
                  β”‚                             
                  β”‚                             
                  β–Ό                             

β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”Œβ”€β”€β”€β”β”β”β”β”β”“β”β”β”β”β”“β”β”β”β”β”“β”Œβ”€β”€β”€β”
β”‚ 1 β”‚β”‚ 2 β”‚β”‚ 3 β”‚β”‚ 4 β”‚β”‚ 5 β”‚β”‚ 6 │┃ 7 ┃┃ 8 ┃┃ 9 ┃│10 β”‚
β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β””β”€β”€β”€β”˜β”—β”β”β”β”›β”—β”β”β”β”›β”—β”β”β”β”›β””β”€β”€β”€β”˜
──────────▢
take: 3
```

Auto restart on panic

The Query Engine now automatically restarts with an exponential backoff with jitter, if it exits for some reason, for example in the case of a panic. That helps a lot to make Prisma Client more resilient in production! https://github.com/prisma/prisma/issues/2100

Introspection now recognizes @default(cuid / uuid)

If you introspect a Prisma 1 schema, the introspection now correctly recognizes cuid or uuid usage https://github.com/prisma/prisma/issues/2499

Fixes and improvements

prisma

prisma-client-js

vscode

prisma-engines

Credits

Huge thanks to @Sytten, @thankwsx, @zachasme for helping!