fix(deps): update prisma monorepo to v4 (major) #614
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^3.1.1
->^4.0.0
^3.1.1
->^4.0.0
Release Notes
prisma/prisma
v4.11.0
Compare Source
🌟 Help us spread the word about Prisma by starring the repo or tweeting about the release. 🌟
Highlights
JSON protocol Early Preview
This release introduces an early Preview feature: JSON protocol.
During performance investigations and optimizations, we noticed that the existing implementation added a CPU and memory overhead that was especially noticeable for larger Prisma schemas. Therefore, we found an alternative way to express our queries without needing that overhead: JSON.
To try out the new protocol, enable the
jsonProtocol
Preview feature in your Prisma schema:Regenerate Prisma Client to use the new JSON protocol.
For environments or situations where it is not viable to enable the Preview feature flag to your Prisma schema file, we also added an environment variable that you can use to force the use of the JSON Protocol Preview feature:
PRISMA_ENGINE_PROTOCOL=json
.Note: This is an early Preview feature with a significant limitation: Invalid input to Prisma Client will throw unpolished, internal errors that are less descriptive and user-friendly than our usual ones. We intend to improve these future releases. Using it with Data Proxy and Prisma Data Platform currently also leads to errors.
We expect using
jsonProtocol
to improve Prisma Client's startup performance significantly. This will likely have a more significant impact on applications with larger Prisma schemas.We would appreciate your feedback on this feature on the following particularly:
For feedback, please comment on the GitHub feedback issue.
Introspection support for MySQL, SQL Server, and CockroachDB views
You can now run
prisma db pull
against your database to populate your Prisma schema with your views in MySQL, SQL Server, and CockroachDB.To learn more, refer to our documentation on views introspection. Try it out and let us know your thoughts in this GitHub issue.
Prisma Client extensions improvements: raw query operations
This release adds support for extending top-level raw query operations.
Webpack plugin for Next.js apps using Prisma in monorepo setups
If you've been using Prisma Client in a Next.js app in a monorepo setup, you might have seen this infamous error message:
We finally pinpointed the problem's source to the Next.js bundling step and opened an issue in the Next.js repository for Vercel to investigate and hopefully fix it.
In the meantime, we've created a workaround via a webpack plugin that makes sure your Prisma schema is copied to the correct location:
@prisma/nextjs-monorepo-workaround-plugin
.To use the plugin, first install it:
Import the plugin into your
next.config.js
file and use it inconfig.plugins
:For further information, refer to our documentation to learn how to use it and open an issue if it doesn't work as expected.
Fixes and improvements
Prisma Client
ENOENT: no such file or directory, open '...\.next\server\pages\api\schema.prisma'
Error: ENOENT: no such file or directory, open 'schema.prisma'
ENOENT
with custom output and ESM module in NPM monorepo (including Nextjs):no such file or directory, open /.../schema.prisma...
ignoreEnvVarErrors: true
Node API QE causesdatasourceOverrides
to be ignoredPrisma Migrate
db pull
: add new codes for introspection warnings for views in the CLIdirectUrl
isprisma://
connection stringerrorCode: 'P1012' PrismaClientInitializationError: error: Environment variable not found: DATABASE_URL.
directUrl
env var value, leading to validation error (Affects PDP/Data Proxy and normal Engine)validate
to returnResult<(), JsError>
inWasm
moduleCredits
Huge thanks to @KhooHaoYit, @rintaun, @ivan, @Mini256, @Lioness100, @yukukotani, @sandrewTx08, @fubhy, @zachtil, @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, March 2 at 5 pm Berlin | 8 am San Francisco.
v4.10.1
Compare Source
Today, we are issuing the
4.10.1
patch release.Fixes in Prisma Client
v4.10.0
Compare Source
🌟 Help us spread the word about Prisma by starring the repo or tweeting about the release. 🌟
Highlights
Improved CLI support for connection poolers
When working with connection poolers such as the Prisma Data Proxy, Accelerate or pgBouncer, it is necessary to use a different URL to connect to the database when using Prisma Client and Prisma Migrate.
We're introducing a new datasource property
directUrl
to improve this. When thedirectUrl
property is present, the Prisma CLI will use it to connect to the database for tasks such as introspection and migrations.To learn more, refer to our documentation.
Introspection support for PostgreSQL views
We introduced initial support for database views in 4.9.0 with the addition of the
view
keyword. This release introduces introspection support for PostgreSQL views. You can runprisma db pull
against your database to populate your Prisma schema with your views.To learn more, refer to our documentation on views introspection. Try it out and let us know your thoughts in this GitHub issue.
Improved introspection for unsupported database functionality & partitioned tables
Currently, the Prisma Schema Language(PSL) does not cover the full feature sets of different database providers. For the unsupported database functionality, Prisma provides offers escape hatches like raw queries or manual editing of the migration files.
While we work on adding support for missing database functionality, e.g. database views, some of it is not fully-supported and the escape hatches fail. Objects that use unsupported properties might not be caught during introspection and raw queries might not work. Re-introspection may sometimes remove the information from the schema file and the generated migrations may be invalid or re-generate the same SQL repeatedly.
We're therefore fixing the defects and supporting the unsupported database functionalities Prisma currently doesn't support. We created a list of these features in this GitHub issue we would like to improve.
This release improves introspection support for partitioned tables in PostgreSQL and MySQL. Previously, Prisma would pick up the partitions as
model
s and miss the actual main table. Prisma will now pick up the main table as amodel
, not the partitions.If you're already using partitioned tables in your database, you can use
prisma db pull
to update your Prisma schema. If you're already using Prisma and want to partition a table in your database, you can:prisma migrate dev --create-only
prisma migrate dev
to apply the draft migration to your databaseTry it out and let us know what you think. If you run into an issue, feel free to create a bug report.
Smaller engine size used in Prisma CLI
In 4.8.0, we decreased the size of the engines by ~50%, which significantly impacted Prisma Client, especially in serverless environments.
In this release, we've reduced the size of Prisma CLI by removing the Introspection and Formatter engines. The introspection functionality is now served by the Migration Engine. A cross-platform Wasm module has entirely replaced the Formatter Engine. This reduces the overall installation size for Prisma CLI.
Fixes and improvements
Prisma Client
aarch64-unknown-linux-musl
target (Alpine Linux on ARM, e.g. M1)getDmmf
as Wasm module that could be used in Prisma CLIPrisma
prisma-fmt
formatter binaryintrospection-engine
binary from CLIget-platform
error for non-amd64
Alpine introduced inprisma@4.9.0
prevents using custom Prisma enginesError: Unknown binaryTarget debian-openssl-0.0.x and no custom engine files were provided
after upgrading from 4.8.1 to 4.9.0Language tools (e.g. VS Code)
referentialIntegrity
in favor ofrelationMode
directUrl
Credits
Huge thanks to @rintaun, @ivan, @Mini256, @yukukotani, @sandrewTx08 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, February 9 at 5 pm Berlin | 8 am San Francisco.
v4.9.0
Compare Source
🌟 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 theviews
Preview feature flag. You can manually add aview
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
: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:
If you already have a SQL Server database using multiple schemas, you can quickly get up and running and set up multiple schemas by:
schemas
property in thedatasource
blockprisma 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 using
Prisma.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 fixThis 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
openssl
orlibc
installation to improve snapshot testing suite--schemas
param to thedb pull
commandschemas
property different when cross schema references are detected (whenmultiSchema
preview feature is enabled)db pull
withmultiSchema
enabled andschemas
defined, outputspublic
in CLI message anywayschemas
property indatasource
@@​schema
attributedebian
distrosmultiSchema
: addschemas
property togetConfig
outputmigrate reset
with sqlserver does not delete second schemaopenssl
detection for Linux distros besides Alpine and Debian-based distros, like RHELThese enums were enriched with
@@mapinformation taken from the previous Prisma schema.
but the schema file datamodel is actually empty.view
keywordplatform-serverless-vercel/vercel-cli
ecosystem testsdistro
is undefined, the output ofldconfig
is ignored because of thesed: -e expression #​1, char 7: unknown option to
s'` silent errorPrisma Client
where
andinclude
produces an object that doesn't include entities you specify ininclude
delete
on a one-to-one relation while updating removes other relationsPrisma Migrate
Language tools (e.g. VS Code)
@@​schema
attribute to model / enumview
keywordPrisma Engines
2.9.1
to2.10.1
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.
v4.8.1
Compare Source
Today, we are issuing the
4.8.1
patch release.Fix in Prisma Client
v4.8.0
Compare Source
🌟 Help us spread the word about Prisma by starring the repo or tweeting about the release. 🌟
Highlights
Improved serverless experience — smaller engines size
In this release, we have decreased the size of our engine files by an average of 50%. The size of the Query Engine used on Debian, with OpenSSL 3.0.x, for example, went from 39MB to 14MB. We will also remove some smaller engines to decrease the total size in future versions.
Additionally, we have started optimizing how the Prisma schema is loaded in Prisma Client. You should notice a considerable improvement when executing the first query if you're working with a bigger schema with many models and relations.
We will continue investing in this direction in the next releases and further improve the experience with Prisma and serverless environments.
Multi-schema support for CockroachDB (Preview)
We're pleased to share that this release adds Preview support for multi-schema for CockroachDB. 🎉
This release adds support for:
If you already have a CockroachDB database using multiple schemas, you can quickly get up and running set up multiple schemas by:
schemas
property in thedatasource
blockprisma 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.
Improved OpenSSL 3.x support
Prisma now supports OpenSSL 3 builds for Linux Alpine on
x86_64
architectures. This particularly impacts users running Prisma onnode:alpine
andnode:lts-alpine
Docker images. The images are based on an Alpine version that ships with OpenSSL 3.0.x, which isn’t compatible with OpenSSL 1.1.x (already supported by Prisma). You can read more details about it in this GitHub comment.We also have rewritten our OpenSSL version detection logic, making it future-proof. We now expect Prisma to support systems running with any OpenSSL 3 minor versions out of the box.
Fixes and improvements
Prisma
Uuid
has no default operator class.migrate reset
only resets first schemamultiSchema
introspectionmigrate dev
does not detect drift between database schema and migration history formultiSchema
Prisma Migrate
multiSchema
preview feature with MySQLPrisma Client
clientExtensions
preview feature is used$extends
TS error: "Inferred type of this node exceeds the maximum length the compiler will serialize" with"declaration": true
intsconfig
args
isundefined
console.log
outputs incorrect value whenresult
extensions are usedextendedWhereUnique
on SQLLanguage tools (e.g. VS Code)
@map
although already present'
in optional arguments contextPrisma Engines
@@​schema
attribute should always be required whenschemas
is defined in the datasourceCredits
Huge thanks to @ivan, @Mini256, @cmd-johnson for helping!
Prisma Help Center (New)
We recently just launched our Help Center that you can use to find resources and get help from our support team for both the Prisma ORM and the Prisma Data Platform.
Check it out, and let us know what you think.
📺 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, December 22 at 5 pm Berlin | 8 am San Francisco.
v4.7.1
Compare Source
Today, we are issuing the
4.7.1
patch release.Fixes in Prisma Client
clientExtensions
preview feature is usedconsole.log
outputs incorrect value whenresult
extensions are usedfindUniqueOrThrow
args
isundefined
v4.7.0
Compare Source
🌟 Help us spread the word about Prisma by starring the repo or tweeting about the release. 🌟
Highlights
Interactive transactions are now Generally Available
After an extensive Preview phase and lots of great feedback from our community, we're excited to announce that
interactiveTransactions
is now Generally Available and production ready! 🚀Interactive transactions allow you to pass an async function into a
$transaction
, and execute any code you like between the individual Prisma Client queries. Once the application reaches the end of the function, the transaction is committed to the database. If your application encounters an error as the transaction is being executed, the function will throw an exception and automatically rollback the transaction.Here are some of the feature highlights we've built:
4.2.0
4.6.0
Here's an example of an interactive transaction with a
Serializable
isolation level:You can now remove the
interactiveTransactions
Preview feature in your schema.Relation mode is Generally Available
This release marks
relationMode="prisma"
as stable for our users working with databases that don't rely on foreign keys to manage relations. 🎉Prisma’s relation mode started as a way to support PlanetScale which does not allow you to create foreign keys for better online migration support. We transformed that into our Referential Integrity Emulation in
3.1.1
when we realised that more users could benefit from it, and then integrated it as the default mode for MongoDB, which generally does not have foreign keys. Prisma needed to use emulation to give the same guarantees.We then realized the feature was more than just referential integrity and affected how relations work. To reflect this, we renamed the feature to relation mode and the
datasource
property torelationMode
in4.5.0
Index warnings for
relationMode = "prisma"
In this release, we've added a warning to our Prisma schema validation that informs you that the lack of foreign keys might result in slower performance — and that you should add an
@@​index
manually to your schema to counter that. This ensures your queries are equally fast in relation modeprisma
as they are with foreign keys.We also added a fix to our VS Code extension to help adding the suggested index with minimal effort:
If you are currently using the Preview feature flag to enable relation mode, you can now remove
referentialIntegrity
from thepreviewFeatures
in yourgenerator client
block in your Prisma schema.For more information, check out our updated relation mode documentation.
Prisma Client Extensions (Preview)
This release adds Preview support for Prisma Client Extensions. This feature introduces new capabilities to customize and extend Prisma Client. Today we are opening up four areas for extending Prisma Client:
model
: add custom methods or fields to your modelsclient
: add client-level methods to Prisma Clientresult
: add custom fields to your query resultsquery
: create custom Prisma Client queriesPrisma Client Extensions are self-contained scripts that can tweak the behavior of models, queries, results, and the client (Prisma Client) as a whole. You can associate a single or multiple extensions with an extended client to mix and match Prisma to your needs.
Prisma Client Extensions enables many use cases such as defining virtual fields, custom validation, and custom queries.
It also enables you to share your client extensions with others and import client extensions developed by others into your project.
For example, given the following schema:
You can create a computed field called
fullName
as follows:We're excited to see what you build with them! For more information, check out our docs and let us know what you think in this GitHub issue.
Multi-schema support for PostgreSQL (Preview)
We're pleased to announce that this release adds support for multi-schema support for PostgreSQL. The ability to query and manage multiple database schemas has been a long-standing feature request from our community.
This release adds support for the following:
If you already have a PostgreSQL database using multiple schemas, you can quickly get up and running using
prisma db pull
— on enabling the Preview feature and specifying the schemas in thedatasource
block similar to the example below.You can get started with defining multiple schemas in your Prisma schema as follows:
Then generate and apply the changes to your database with
prisma migrate dev
.We want to thank all our users for helping us design the feature since the early proposal on GitHub up to our current Preview release.
For further details, refer to our documentation and let us know what you think in this GitHub issue.
Request for feedback
Our Product team is currently running a survey for designing Database Views support for Prisma and we would appreciate your feedback.
Fixes and improvements
Prisma Client
RangeError: Invalid count value
duringnpx prisma generate
withDEBUG=*
on integration buildreferentialIntegrity
binary
engineerror
eventPrisma.TransactionClient
todefault-index.d.ts
findMany
errors withPANIC: index out of bounds: the len is 0 but the index is 0
upsert()
with nested selection errors withcalled
Option::unwrap()on a
Nonevalue
in 4.6.0findUnique
concurrently with different key order causes one of them to return nullfindUniqueOrThrow
via middlewareprisma
/ Reproduction test for prisma#16390Prisma
referentialIntegrity
(renamed torelationMode
)db pull
withmultiSchema
error on schema with 2 models with the same table name but in a different schemarelationMode
: make feature GASetDefault
validation error with warnings whenprovider = "mysql"
andrelationMode = "foreignKeys" | default
relationMode
validation warning messagesprisma validate
&prisma format
Prisma Migrate
prisma migrate dev
Language tools (e.g. VS Code)
@@​ignore
d and fields that are@ignore
dreferentialIntegrity = "prisma"
extensions
whenpostgresqlExtensions
preview feature is setrelationMode
GA - remove preview feature conditionrelationMode="prisma"
, for@relation
: add a warning if there is no index on the field(s)relationMode
: missing foreign keys' indexesPrisma Engines
Credits
Huge thanks to @cmd-johnson, @jsoref, @miguelgargallo for helping!
Prisma Data Platform
We're working on the Prisma Data Platform — a collaborative environment for connecting apps to databases. It includes the following:
Try it out. Let us know what you think!
📺 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, December 1 at 5 pm Berlin | 8 am San Francisco.
v4.6.1
Compare Source
Today, we are issuing the
4.6.1
patch release.Fixes in Prisma Client
findMany
errors withPANIC: index out of bounds: the len is 0 but the index is 0
upsert()
with nested selection errors withcalled
Option::unwrap()on a
Nonevalue
in 4.6.0Fix in Prisma Migrate
v4.6.0
[Compare Source](https://togithub.com/prisma/prisma/compare/4.5.0...
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR has been generated by Mend Renovate. View repository job log here.