🦁

Blitzjs 0.25 -> 0.29へのupgrade

2021/01/17に公開

Breaking Change

0.28

isAuthorized の API 変更

// blitz.config.js
-const { sessionMiddleware, unstable_simpleRolesIsAuthorized } = require("@blitzjs/server")
+const { sessionMiddleware, simpleRolesIsAuthorized } = require("@blitzjs/server")

module.exports = {
  middleware: [
    sessionMiddleware({
-      unstable_isAuthorized: unstable_simpleRolesIsAuthorized,
+      isAuthorized: simpleRolesIsAuthorized,
    }),
  ],

0.29

Prisma 2.13+ Support に伴う DB の migrate

これがデカイです・・・。
Prisma が2.13 バージョンを発表しました
Prisma 自体が seed に対応したり、findFirst の API が提供されたりと、大幅な変更がされてました。
blitz.js コミュニティはこの変更を受け止め、CLI のインタフェースを Prisma に合わせることにしました。[1]

以上により、Prisma のmigrateが必要です。

公式 document に沿って実行します。

1) introspect

blitz@0.29ではblitz prismaprismaコマンドになります。

introspect は次のように実行します。

$ blitz prisma introspect
Introspecting based on datasource defined in db/schema.prisma …

✔ Introspected 11 models and wrote them into db/schema.prisma in 164ms

*** WARNING ***

These DateTime fields were enriched with `@updatedAt` information taken from the previous Prisma schema.
- Model "Hoge", field: "updatedAt"
...

Run prisma generate to generate Prisma Client.

blitz prisma migrate devが実行できない

私の場合、blitz@0.23 or @0.25 を使っていたので、myapp/package.json@prisma/cli2.7.1でした。

最新を取り込みます。

手っ取り早く、blitz new myAppName(blitz@0.29.2)で生成された package.json をmyapp@package.jsonコピペします。

"@prisma/cli": "~2.14",
"@prisma/client": "~2.14",
"blitz": "0.29.2",
"react": "0.0.0-experimental-3310209d0",
"react-dom": "0.0.0-experimental-3310209d0",
"react-error-boundary": "3.1.0",
"typescript": "4.1.3",
"zod": "1.11.11"

@prisma/cliが更新されました。

2) If you have a prisma/migrations folder, delete, move, rename, or otherwise archive this folder.

db/migrationsを削除、もしくは別フォルダに退避しましょう。

3) Initialize a new migration history by running the following command:

migrate を実行します。

$ prisma migrate dev --preview-feature

実行ユーザーに権限が足りない場合は、次のようなエラーがでます。
これは内部的に shadow database を作成するためです。


Error: A migration failed when applied to the shadow database:

P3014
Prisma Migrate could not create the shadow database. Please make sure the database user has permission to create databases.  More info: https://pris.ly/d/migrate-shadow. Original error: Error code: P1010

こちらを参考に権限を調整後、再度実行しましょう。

お疲れ様デス・・・!

僕の場合これで移行が完了しました。

seedが失われたのはでかいですが、feature として実装予定なので気長に待ちましょう!


脚注
  1. https://github.com/blitz-js/blitz/discussions/1611 ↩︎

Discussion