Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(deps): update prisma monorepo to v4 (major) #614

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jun 28, 2022

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@prisma/client (source) ^3.1.1 -> ^4.0.0 age adoption passing confidence
prisma (source) ^3.1.1 -> ^4.0.0 age adoption passing confidence

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:

generator client {
  provider        = "prisma-client-js"  
  previewFeatures = ["jsonProtocol"]
}

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:

  1. Does using this preview feature introduce any regressions or problems in your application?
  2. If not, how does it influence the performance of your application? Can you share before and after measurements?

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.

const prisma = new PrismaClient().$extends({
  query: {
    // relational databases
    $queryRaw({ args, query, operation }) {
      // handle $queryRaw operation
      return query(args)
    },
    $executeRaw({ args, query, operation }) {
      // handle $executeRaw operation
      return query(args)
    },
    $queryRawUnsafe({ args, query, operation }) {
      // handle $queryRawUnsafe operation
      return query(args)
    },
    $executeRawUnsafe({ args, query, operation }) {
      // handle $executeRawUnsafe operation
      return query(args)
    },
    // MongoDB
    $runCommandRaw({ args, query, operation }) {
      // handle $runCommandRaw operation
      return query(args)
    },
  },
})
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:

Error: ENOENT: no such file or directory, open schema.prisma

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:

npm install -D @​prisma/nextjs-monorepo-workaround-plugin

Import the plugin into your next.config.js file and use it in config.plugins:

const { PrismaPlugin } = require('@​prisma/nextjs-monorepo-workaround-plugin')
module.exports = {
  webpack: (config, { isServer }) => {
    if (isServer) {
      config.plugins = [...config.plugins, new PrismaPlugin()]
    }
    return config
  },
}

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
Prisma Migrate
Credits

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 the directUrl property is present, the Prisma CLI will use it to connect to the database for tasks such as introspection and migrations.

### .env
### Connection to Prisma Data Proxy. Used by Prisma Client.
DATABASE_URL="prisma://__HOST__/?api_key=__KEY__"

### Connection to the database. Used for migrations and introspection.
DIRECT_URL="postgresql://__USER__:__PASSWORD__@​__HOST__:__PORT__/__DATABASE__"
// ./prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider  = "postgresql"
  url       = env("DATABASE_URL")
  directUrl = env("DIRECT_URL")
}

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 run prisma 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 models and miss the actual main table. Prisma will now pick up the main table as a model, 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:

  1. Create a draft migration using prisma migrate dev --create-only
  2. Update the draft migration with the SQL to partition the tables
  3. Re-run prisma migrate dev to apply the draft migration to your database

Try 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
Prisma
Language tools (e.g. VS Code)

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 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 the datasource 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:

  1. 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.

  2. 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
Prisma Client
Prisma Migrate
Language tools (e.g. VS Code)
Prisma Engines
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:

  • 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 CockroachDB database using multiple schemas, you can quickly get up and running set up multiple schemas by:

  • Enabling the Preview feature in the Prisma schema
  • Defining the schemas in the schemas property in the datasource 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.

Improved OpenSSL 3.x support

Prisma now supports OpenSSL 3 builds for Linux Alpine on x86_64 architectures. This particularly impacts users running Prisma on node:alpine and node: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
Prisma Migrate
Prisma Client
Language tools (e.g. VS Code)
Prisma Engines

Credits

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

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:

Here's an example of an interactive transaction with a Serializable isolation level:

await prisma.$transaction(
  async (prisma) => {
    // Your transaction...
  },
  {
    isolationLevel: Prisma.TransactionIsolationLevel.Serializable,
    maxWait: 5000,
    timeout: 10000,
  }
)

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 to relationMode in 4.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 mode prisma as they are with foreign keys.

With relationMode = "prisma", no foreign keys are used, so relation fields will not benefit from the index usually created by the relational database under the hood. This can lead to slower performance when querying these fields. We recommend manually adding an index.

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 the previewFeatures in your generator 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:

Prisma 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:

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["clientExtensions"]
}

model User {
  id        Int     @​id @​default(autoincrement())
  email     String  @​unique
  firstName String?
  lastName  String
}

You can create a computed field called fullName as follows:

import { PrismaClient } from "@​prisma/client"

const prisma = new PrismaClient()
  .$extends({
    result: {
      user: {
        fullName: {
          // the dependencies
          needs: { firstName: true, lastName: true },
          compute(user) {
            // the computation logic
            return `${user.firstName} ${user.lastName}`
          },
        },
      },
    },
  })

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:

  • 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 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 the datasource block similar to the example below.

You can get started with defining multiple schemas in your Prisma schema as follows:

generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["multiSchema"]
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
  schemas  = ["base", "transactional"]
}

model User {
  id     Int     @​id
  orders Order[]

  @​@​schema("base")
}

model Order {
  id      Int  @​id
  user    User @​relation(fields: [id], references: [id])
  user_id Int

  @​@​schema("transactional")
}

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
Prisma
Prisma Migrate
Language tools (e.g. VS Code)
Prisma 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:

  • Data Browser for navigating, editing, and querying data
  • Data Proxy for your database's persistent, reliable, and scalable connection pooling.
  • Query Console for experimenting with queries

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
Fix 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.


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

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot added the dependencies Pull requests that update a dependency file label Jun 28, 2022
@renovate renovate bot force-pushed the renovate/major-prisma-monorepo branch from 9a619f5 to 025be99 Compare July 19, 2022 14:14
@renovate renovate bot force-pushed the renovate/major-prisma-monorepo branch from 025be99 to da32e02 Compare July 28, 2022 11:43
@renovate renovate bot force-pushed the renovate/major-prisma-monorepo branch 2 times, most recently from 6d22e38 to 40146b8 Compare August 10, 2022 16:05
@renovate renovate bot force-pushed the renovate/major-prisma-monorepo branch 2 times, most recently from ce59d22 to e1aa17c Compare September 1, 2022 18:13
@renovate renovate bot force-pushed the renovate/major-prisma-monorepo branch from e1aa17c to 6c893da Compare November 20, 2022 20:21
@renovate renovate bot force-pushed the renovate/major-prisma-monorepo branch 3 times, most recently from d42064a to 9b27b23 Compare March 20, 2023 16:06
@renovate renovate bot force-pushed the renovate/major-prisma-monorepo branch from 9b27b23 to 80531bd Compare April 27, 2023 20:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants