From 24051a9ed1058372157939f8340e24061a3ca38c Mon Sep 17 00:00:00 2001 From: Yiming Cao Date: Wed, 26 Oct 2022 10:43:53 +0800 Subject: [PATCH 1/2] Add logic to store service instance to global for dev environment as recommended by Prisma --- packages/schema/package.json | 2 +- .../schema/src/generator/service/index.ts | 28 ++++++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/packages/schema/package.json b/packages/schema/package.json index 410a1ac06..64006a272 100644 --- a/packages/schema/package.json +++ b/packages/schema/package.json @@ -3,7 +3,7 @@ "publisher": "zenstack", "displayName": "ZenStack Language Tools", "description": "ZenStack is a toolkit that simplifies full-stack development", - "version": "0.1.54", + "version": "0.1.55", "author": { "name": "ZenStack Team" }, diff --git a/packages/schema/src/generator/service/index.ts b/packages/schema/src/generator/service/index.ts index d2c1ef4eb..c80ec193b 100644 --- a/packages/schema/src/generator/service/index.ts +++ b/packages/schema/src/generator/service/index.ts @@ -27,6 +27,16 @@ export default class ServiceGenerator implements Generator { isTypeOnly: true, }); + sf.addVariableStatement({ + declarationKind: VariableDeclarationKind.Let, + declarations: [ + { + name: 'guardModule', + type: 'any', + }, + ], + }); + const cls = sf.addClass({ name: 'ZenStackService', isExported: true, @@ -44,15 +54,6 @@ export default class ServiceGenerator implements Generator { .addBody() .setBodyText('return this._prisma;'); - sf.addVariableStatement({ - declarationKind: VariableDeclarationKind.Let, - declarations: [ - { - name: 'guardModule', - type: 'any', - }, - ], - }); cls .addMethod({ name: 'resolveField', @@ -100,7 +101,14 @@ export default class ServiceGenerator implements Generator { return provider(context); `); - sf.addStatements(['export default new ZenStackService();']); + // Recommended by Prisma for Next.js + // https://www.prisma.io/docs/guides/database/troubleshooting-orm/help-articles/nextjs-prisma-client-dev-practices#problem + sf.addStatements([ + 'declare global { var zenstackService: ZenStackService | undefined}', + 'const service = global.zenstackService || new ZenStackService();', + 'export default service;', + `if (process.env.NODE_ENV !== 'production') global.zenstackService = service;`, + ]); sf.formatText(); await project.save(); From 5e05f8ca77b2da686048aaaca967d9501db3d8df Mon Sep 17 00:00:00 2001 From: Yiming Cao Date: Wed, 26 Oct 2022 10:47:18 +0800 Subject: [PATCH 2/2] update todo version --- samples/todo/package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/samples/todo/package-lock.json b/samples/todo/package-lock.json index de9973faf..8b3404e0e 100644 --- a/samples/todo/package-lock.json +++ b/samples/todo/package-lock.json @@ -32,7 +32,7 @@ "postcss": "^8.4.16", "tailwindcss": "^3.1.8", "typescript": "^4.6.2", - "zenstack": "^0.1.54" + "zenstack": "^0.1.55" } }, "node_modules/@babel/code-frame": { @@ -4521,9 +4521,9 @@ } }, "node_modules/zenstack": { - "version": "0.1.54", - "resolved": "https://registry.npmjs.org/zenstack/-/zenstack-0.1.54.tgz", - "integrity": "sha512-Ah//m+PHhlMIVWm63JnKUvKBI0fHTbdP49TRdPAbyPIdV3rDzbUOF7cp/X/zZhd2xvEefW8zkGbxLtNbE2Da4Q==", + "version": "0.1.55", + "resolved": "https://registry.npmjs.org/zenstack/-/zenstack-0.1.55.tgz", + "integrity": "sha512-bVqh5eXM7QmG3lRzCVEpxPfxjPAiSFte5E7HcisTLCo/lI1dQ+svAFPzlFLlv4AwNCKZfhGaOtp9mMBjLVI4Xw==", "dev": true, "dependencies": { "@zenstackhq/internal": "0.1.26", @@ -7761,9 +7761,9 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, "zenstack": { - "version": "0.1.54", - "resolved": "https://registry.npmjs.org/zenstack/-/zenstack-0.1.54.tgz", - "integrity": "sha512-Ah//m+PHhlMIVWm63JnKUvKBI0fHTbdP49TRdPAbyPIdV3rDzbUOF7cp/X/zZhd2xvEefW8zkGbxLtNbE2Da4Q==", + "version": "0.1.55", + "resolved": "https://registry.npmjs.org/zenstack/-/zenstack-0.1.55.tgz", + "integrity": "sha512-bVqh5eXM7QmG3lRzCVEpxPfxjPAiSFte5E7HcisTLCo/lI1dQ+svAFPzlFLlv4AwNCKZfhGaOtp9mMBjLVI4Xw==", "dev": true, "requires": { "@zenstackhq/internal": "0.1.26",