Skip to content

Releases: medz/prisma-dart

🎉 v2.2.0 released

20 Sep 07:01
1d0abc3
Compare
Choose a tag to compare

🌟 Help us spread the word about Prisma ORM for Dart by starring the repo or Tweeting about the release. 🌟

Major improvements:

Input object Types without PrismaUnion wrapper, Before:

final User user = await prisma.user.create(
   data: PrismaUnion(
      zero: UserCreateInput(name: 'odroe'),
   ),
);

After:

final User user = await prisma.user.create(
   data: UserCreateInput(name: 'odroe'),
);

Bug fixes:

  • Nullable fields generating broken field implementations - #23

Features:

  • Add precache command, Populate the Prisma engines cache of binary artifacts.

v2.1.3 🎉

12 Sep 21:33
Compare
Choose a tag to compare

🌟 Help us spread the word about Prisma ORM for Dart by starring the repo or Tweeting about the release. 🌟

Major improvements:

  1. refactor PrismaClientKnownRequestError, Prisma Client throws a PrismaClientKnownRequestError exception if the query engine returns a known error related to the request - for example, a unique constraint violation. Reference 👉 PrismaClientKnownRequestError
  2. All exceptions on the client side will throw predictable errors,Reference 👉 PrismaClientKnownRequestError
  3. query_engine renamed to engine_core

Better error message

Take transaction errors as an example, before simply throwing PrismaServerError without any friendly prompts. Now:

PrismaClientUnknownRequestError:
Use the `prisma.$transaction()` API to run queries in a transaction.

Add the following to your `schema.prisma` file:

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

Read more about transactions in our documentation:
 - https://github.com/odroe/prisma-dart#qa
 - https://www.prisma.io/docs/concepts/components/prisma-client/transactions#interactive-transactions-in-preview

If the engine is not found:

PrismaClientInitializationError:
  message: Could not find query engine binary for current platform "macos" in query-engine path.

This probably happens, because you built Prisma Client on a different platform.

Searched Locations:
  - /Users/seven/workspace/prisma/example
  - /Users/seven/workspace/prisma/example/.dart_tool/prisma
  - /Users/seven/workspace/prisma/example/prisma
  - /Users/seven/workspace/prisma/example/.dart_tool/pub/bin/example

You already added the platform "macos" to the "generator" block in the "schema.prisma" file as described in https://pris.ly/d/client-generator, but something went wrong. That's suboptimal.

Please create an issue at https://github.com/odroe/prisma-dart/issues/new
  errorCode: null
  clientVersion: 2.1.2

$transaction options

prisma.$transaction now supports the following options:

final prisma = PrismaClient();
await prisma.$transaction((prisma) async {
   // ...
}, TransactionOptions(
   maxWait: 2000,
   timeout: 5000,
   isolationLevel: TransactionIsolationLevel.ReadUncommitted,
));

More details 👉 Interactive transactions

Bug fixes

  1. Fixed packageVersion not updating with version
  2. Fixed binary query engine not automatically searching when executable is specified
  3. Fixed binary query engine not automatically searching when specifying PRISMA_QUERY_ENGINE_BINARY environment variable

Engines version

c875e43600dfe042452e0b868f7a48b817b9640b

🎉 Prisma ORM for Dart 2.1.2 released

09 Sep 14:18
Compare
Choose a tag to compare

🌟 Help us spread the word about Prisma ORM for Dart by starring the repo or Tweeting about the release. 🌟

Bug fixes

  • Fix the problem of repeated operation of the lookup runtime configuration
  • Fix setting owerwrite datasources causing engine startup failure

Refactor

Refactored to owerwrite datasources to convert to engine readable settings

2.1.1

09 Sep 09:14
Compare
Choose a tag to compare

Support custom runtime configuration.

🎉 Prisma for Dart v2.1.0 released

08 Sep 10:43
bf3de28
Compare
Choose a tag to compare

🌟 Help us spread the word about Prisma ORM for Dart by starring the repo or Tweeting about the release. 🌟

Major improvements:

Runtime configuration

Previously, use prisma.yaml to configure Prisma:

environment:
   DATABASE_URL: postgres://user:password@localhost:5432/mydb

Now, we have introduced a new configuration method, Runtime Configuration compatible with dotenv format:

# .prismarc
DATABASE_URL=postgres://user:password@localhost:5432/mydb

# Database host
DATABASE_HOST=postgres://user:password@localhost:5432
DATABASE_URL=${DATABASE_HOST}/mydb

If you have dotenv in mind, you just need to add the database URL configuration to .env:

DATABASE_URL=postgres://user:password@localhost:5432/mydb

For more usage of runtime configuration, please see 👉 https://pub.dev/packages/rc

Custom configuration

Now, you can customize your prisma project configuration in pubspec.yaml:

...
prisma:
   prismarc: path/a/b/c/custom.prismarc
   dotenv: path/a/b/c/custom.env
   schema: path/a/b/c/custom.prisma
...
Parameter Description Default
prismarc Custom runtime configuration path .prismarc
dotenv Custom dotenv path .env
schema Custom Prisma schema path prisma/schema.prisma

Custom engine path

Previously, the Prisma engine was downloaded into the .dart_tool/prisma directory, now you can customize it.

Custom engines path with runtime configuration
# Query binary engine
PRISMA_QUERY_ENGINE_BINARY(path) = custom-engines/query-engine

# Migration binary engine
PRISMA_MIGRATION_ENGINE_BINARY(path) = custom-engines/migration-engine

# Introspection binary engine
PRISMA_INTROSPECTION_ENGINE_BINARY(path) = custom-engines/introspection-engine

# Format binary engine
PRISMA_FMT_BINARY(path) = custom-engines/prisma-fmt
Custom engines path with dotenv
PRISMA_QUERY_ENGINE_BINARY=path/to/custom-engines/query-engine
PRISMA_MIGRATION_ENGINE_BINARY=path/to/custom-engines/migration-engine
PRISMA_INTROSPECTION_ENGINE_BINARY=path/to/custom-engines/introspection-engine
PRISMA_FMT_BINARY=path/to/custom-engines/prisma-fmt

Refactored package:orm/configure.dart

Previously, we have package:orm/configure.dart to configure Prisma, now we have refactored it to package:orm/prisma.dart:

import 'package:orm/configure.dart';

print(configure('DATABASE_URL'));

Now, you can use package:orm/configure.dart to configure Prisma:

import 'package:orm/configure.dart';

print(environment.DATABASE_URL);

Bug fixes:

  1. Fix map and throws binary errors - #16
  2. Problems using Model with relation - #14

Features:

  1. Generator generate import support show.
  2. Prisma CLI debug allow set to dotenv or runtime configuration.
  3. Prisma CLI debug print stack trace.

2.0.1

05 Sep 04:40
Compare
Choose a tag to compare

CLI

  1. Fixed model relation deserialization is a must - #7

Runtime

  1. Fixed Create throws assertion error - #10
  2. Fixed UTF-8 decoding error - #11

2.0.0

04 Sep 16:40
Compare
Choose a tag to compare

🌟 Help us spread the word about Prisma ORM for Dart by starring the repo or Tweeting about the release. 🌟

Major improvements:

All packages merged into one

We have reasonably integrated all the packages we split before, before:

dependencies:
   orm: 1.0.0
dev_dependencies:
   prisma_cli: 1.0.0

Now:

dependencies:
   orm: 1.0.0

Support transactions (preview)

Interactive transactions are a stable feature in Prisma For Dart, but a preview feature for the Prisma engine.
Interactive transactions are easier to handle for ORMs:

final result = prisma.$transaction((prisma) async {
   final user = await prisma.user.create({
     data: {
       name: 'Odore',
     },
   });
   final post = await prisma.post.create({
     data: {
       title: 'My first post',
       content: 'This is my first post',
       author: {
         connect: {
           id: user.id,
         },
       },
     },
   });

   return post;
}

CLI

  • Added db pull function
  • Complete refactoring of generate command
  • Built-in RPC engine service refactoring
  • The binary download engine supports the verification version, and the marked version will be downloaded automatically when the engine is updated

Runtime

  • Added GraphQL SDL generation
  • Added prisma.$connect() method
  • Added prisma.$disconnect() method
  • Refactored engine interface and entry parameters