🌟 Help us spread the word about Prisma by starring the repo or tweeting about the release. 🌟
Highlights
Initial support for database views (Preview)
This release introduces a new keyword, view
, behind the views
Preview feature flag. You can manually add a view
to your Prisma schema, which is ignored when running migrations. This is a small step forward but should already be helpful to many of you depending on workarounds and shell scripts to work with views and Migrate.
Here is an example usage of views
:
generator client {
provider = "prisma-client-js"
previewFeatures = ["views"]
}
view UserInfo {
id Int @id
// from the User model
email String
name String
// from the Profile model
bio String
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
profile Profile?
}
model Profile {
id Int @id @default(autoincrement())
bio String
user User @relation(fields: [userId], references: [id])
userId Int @unique
}
To learn more, head to our documentation. Try it out and let us know your thoughts on this GitHub issue.
Multi-schema support for SQL Server (Preview)
We're thrilled to share that this release adds Preview support for multi-schema for SQL Server.
This release adds support for:
- Introspecting databases that organize objects in multiple database schemas
- Managing multi-schema database setups directly from Prisma schema
- Generating migrations that are database schema-aware with Prisma Migrate
- Querying across multiple database schemas with Prisma Client
If you already have a SQL Server database using multiple schemas, you can quickly get up and running and set up multiple schemas by:
- Enabling the Preview feature in the Prisma schema
- Defining the schemas in the
schemas
property in thedatasource
block - Introspecting your database using
prisma db pull
You can further evolve your database schema using the multi-schema Preview feature by using prisma migrate dev
.
For further details, refer to our documentation and let us know what you think in this GitHub issue.
Prisma Client Extensions improvements
In this release, we've made a number of improvements to the Prisma Client Extensions Preview feature:
-
Retrieving the current model name at runtime
You can now get the name of the current model at runtime usingPrisma.getExtensionContext(this).name
. You might use this to write out the model name to a log, to send the name to another service, or to branch your code based on the model. You can learn more about this in our docs. -
Improved type safety when defining custom model methods
Prisma Client now provides a set of type utilities that tap into input and output types. They are fully dynamic, which means they adapt to any given model and schema. You can use them to improve your custom model methods' auto-completion. This is especially useful in shared extensions. Learn more about this in our docs.
Let us know what you think in this GitHub issue and in case you run into any issues, please create a bug report.
Introspection and Migration engine improvements
In this release, we moved the Introspection Engine (responsible for prisma db pull
) which the Migration Engine will now serve. Previously, the Introspection Engine was stand-alone.
Let us know what you think in this GitHub issue and in case you run into any issues, please create a bug report.
MongoDB WriteConflict
bug fix
This version also comes with a notable bug fix: In our MongoDB provider, any queries that are returned with a WriteConflict
error Prisma now will retry the query, similar to how other MongoDB drivers and clients do.
Prisma plugin for JetBrains IDEs
If you are using a JetBrains IDE the team over at JetBrains recently released an official Prisma plugin in their Plugin Marketplace.
Thank you, @JetBrains, for working on this! Next to our VS Code extension for Prisma and our general language server, which works in many editors, most relevant editors should now be covered.
Accelerate (Early Access)
We’re thrilled to announce Early Access to Accelerate.
Accelerate is a global database cache. It is available in 280 locations and has built-in connection pooling for serverless apps. You can make your queries up to 1000 times faster on any Prisma-supported database, reducing your query response times.
Join the waiting list for Accelerate here.
Fixes and improvements
Prisma
- Feature Request: Jetbrains (IntelliJ IDEA, Webstorm) Plugin
- Misleading 'We need to reset the PostgreSQL database' when using PostgreSQL schemas
- Solve "P1012 Introspection failed" errors on Windows CI
- support NanoID
- Create CI worker without a proper
openssl
orlibc
installation to improve snapshot testing suite - db pull --url with an invalid url produces a misleading error message
- (re)-Introspection errors have a misleading error message
- multi-schema + introspection: rename models and enums to avoid name collisions
- multiSchema + introspection: add
--schemas
param to thedb pull
command - Cross schema reference with foreign key not working in 4.7.0+
- Handle missing
schemas
property different when cross schema references are detected (whenmultiSchema
preview feature is enabled) db pull
withmultiSchema
enabled andschemas
defined, outputspublic
in CLI message anyway- Remove DML dependency from MongoDB introspection
- I want short unique id. UUID, CUID are too long
- Completions: for
schemas
property indatasource
- Completions
@@schema
attribute - OS Support: improve SSL detection on
debian
distros multiSchema
: addschemas
property togetConfig
output- multiSchema:
migrate reset
with sqlserver does not delete second schema - Prisma 4.9.x (dev version) broke
openssl
detection for Linux distros besides Alpine and Debian-based distros, like RHEL - Wrong db pull warning with multiSchema preview feature, it says that
These enums were enriched with
@@mapinformation taken from the previous Prisma schema.
but the schema file datamodel is actually empty. - PSL: Recognize the
view
keyword - previewFeatures = ["multiSchema"] Error when doing db pull
- #17126 broke the
platform-serverless-vercel/vercel-cli
ecosystem tests - When
distro
is undefined, the output ofldconfig
is ignored because of thesed: -e expression #1, char 7: unknown option to
s'` silent error
Prisma Client
- Detect absense of openssl and inform the user about it
- prisma@4.7.1 - "RangeError: Maximum call stack size exceeded" when clientExtensions enabled
- Prisma 4.8 produces conflicting typescript types for custom many to many relations
- Using findUnique on 4.8.0 with nested
where
andinclude
produces an object that doesn't include entities you specify ininclude
- Error: Maximum call stack size exceeded is thrown after I used clientExtensions as preview feature.
- MongoDB: Using
delete
on a one-to-one relation while updating removes other relations - Promise types are not unwrapped properly when using async/await in WebStorm
- Deeply nested objects aren't typed when clientExtensions is enabled
Prisma Migrate
Language tools (e.g. VS Code)
- Improve local development workflow and update documentation
- Integer.MAX_VALUE is not portable across clients
- Quick Fix: add
@@schema
attribute to model / enum - Completions: from the list of available schema namespaces
- Recognizing the
view
keyword
Prisma Engines
- update napi dependencies from
2.9.1
to2.10.1
- me/ie rewiring: add
introspect
tests tomigration-engine
Credits
Huge thanks @rintaun, @ivan, @Mini256, @fubhy, @unflxw, @Mosaab-Emam for helping!
📺 Join us for another "What's new in Prisma" live stream
Learn about the latest release and other news from the Prisma community by joining us for another "What's new in Prisma" live stream.
The stream takes place on YouTube on Thursday, January 26 at 5 pm Berlin | 8 am San Francisco.