Skip to content

Commit b22c6a3

Browse files
authored
fix: avoid importing prisma-related code into language server (#1441)
1 parent a49b7b3 commit b22c6a3

File tree

8 files changed

+21
-24
lines changed

8 files changed

+21
-24
lines changed

packages/plugins/openapi/src/rpc-generator.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Inspired by: https://github.com/omar-dulaimi/prisma-trpc-generator
22

3-
import { PluginError, analyzePolicies, requireOption, resolvePath, supportCreateMany } from '@zenstackhq/sdk';
3+
import { PluginError, analyzePolicies, requireOption, resolvePath } from '@zenstackhq/sdk';
44
import { DataModel, isDataModel } from '@zenstackhq/sdk/ast';
55
import {
66
AggregateOperationSupport,
@@ -10,7 +10,7 @@ import {
1010
addMissingInputObjectTypesForSelect,
1111
resolveAggregateOperationSupport,
1212
} from '@zenstackhq/sdk/dmmf-helpers';
13-
import { type DMMF } from '@zenstackhq/sdk/prisma';
13+
import { supportCreateMany, type DMMF } from '@zenstackhq/sdk/prisma';
1414
import * as fs from 'fs';
1515
import { lowerCaseFirst } from 'lower-case-first';
1616
import type { OpenAPIV3_1 as OAPI } from 'openapi-types';

packages/plugins/swr/src/generator.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ import {
88
requireOption,
99
resolvePath,
1010
saveProject,
11-
supportCreateMany,
1211
} from '@zenstackhq/sdk';
1312
import { DataModel, DataModelFieldType, Model, isEnum } from '@zenstackhq/sdk/ast';
14-
import { getPrismaClientImportSpec, type DMMF } from '@zenstackhq/sdk/prisma';
13+
import { getPrismaClientImportSpec, supportCreateMany, type DMMF } from '@zenstackhq/sdk/prisma';
1514
import { paramCase } from 'change-case';
1615
import path from 'path';
1716
import type { OptionalKind, ParameterDeclarationStructure, Project, SourceFile } from 'ts-morph';

packages/plugins/tanstack-query/src/generator.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ import {
99
requireOption,
1010
resolvePath,
1111
saveProject,
12-
supportCreateMany,
1312
} from '@zenstackhq/sdk';
1413
import { DataModel, DataModelFieldType, Model, isEnum } from '@zenstackhq/sdk/ast';
15-
import { getPrismaClientImportSpec, type DMMF } from '@zenstackhq/sdk/prisma';
14+
import { getPrismaClientImportSpec, supportCreateMany, type DMMF } from '@zenstackhq/sdk/prisma';
1615
import { paramCase } from 'change-case';
1716
import { lowerCaseFirst } from 'lower-case-first';
1817
import path from 'path';

packages/plugins/trpc/src/generator.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ import {
77
requireOption,
88
resolvePath,
99
saveProject,
10-
supportCreateMany,
1110
type PluginOptions,
1211
} from '@zenstackhq/sdk';
1312
import { Model } from '@zenstackhq/sdk/ast';
14-
import { getPrismaClientImportSpec, type DMMF } from '@zenstackhq/sdk/prisma';
13+
import { getPrismaClientImportSpec, supportCreateMany, type DMMF } from '@zenstackhq/sdk/prisma';
1514
import fs from 'fs';
1615
import { lowerCaseFirst } from 'lower-case-first';
1716
import path from 'path';

packages/schema/src/plugins/zod/generator.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,10 @@ import {
1010
isFromStdlib,
1111
parseOptionAsStrings,
1212
resolvePath,
13-
supportCreateMany,
1413
} from '@zenstackhq/sdk';
1514
import { DataModel, EnumField, Model, isDataModel, isEnum } from '@zenstackhq/sdk/ast';
1615
import { addMissingInputObjectTypes, resolveAggregateOperationSupport } from '@zenstackhq/sdk/dmmf-helpers';
17-
import { getPrismaClientImportSpec, type DMMF } from '@zenstackhq/sdk/prisma';
16+
import { getPrismaClientImportSpec, supportCreateMany, type DMMF } from '@zenstackhq/sdk/prisma';
1817
import { streamAllContents } from 'langium';
1918
import path from 'path';
2019
import type { SourceFile } from 'ts-morph';

packages/schema/src/plugins/zod/transformer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/* eslint-disable @typescript-eslint/ban-ts-comment */
2-
import { indentString, supportCreateMany, type PluginOptions } from '@zenstackhq/sdk';
2+
import { indentString, type PluginOptions } from '@zenstackhq/sdk';
33
import type { Model } from '@zenstackhq/sdk/ast';
44
import { checkModelHasModelRelation, findModelByName, isAggregateInputType } from '@zenstackhq/sdk/dmmf-helpers';
5-
import { type DMMF as PrismaDMMF } from '@zenstackhq/sdk/prisma';
5+
import { supportCreateMany, type DMMF as PrismaDMMF } from '@zenstackhq/sdk/prisma';
66
import path from 'path';
77
import type { Project, SourceFile } from 'ts-morph';
88
import { upperCaseFirst } from 'upper-case-first';

packages/sdk/src/prisma.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import type { DMMF } from '@prisma/generator-helper';
44
import { getDMMF as _getDMMF, type GetDMMFOptions } from '@prisma/internals';
55
import { DEFAULT_RUNTIME_LOAD_PATH } from '@zenstackhq/runtime';
66
import path from 'path';
7+
import semver from 'semver';
8+
import { Model } from './ast';
79
import { RUNTIME_PACKAGE } from './constants';
810
import type { PluginOptions } from './types';
11+
import { getDataSourceProvider } from './utils';
912

1013
/**
1114
* Given an import context directory and plugin options, compute the import spec for the Prisma Client.
@@ -75,4 +78,14 @@ export function getPrismaVersion(): string | undefined {
7578
}
7679
}
7780

81+
/**
82+
* Returns if the given model supports `createMany` operation.
83+
*/
84+
export function supportCreateMany(model: Model) {
85+
// `createMany` is supported for sqlite since Prisma 5.12.0
86+
const prismaVersion = getPrismaVersion();
87+
const dsProvider = getDataSourceProvider(model);
88+
return dsProvider !== 'sqlite' || (prismaVersion && semver.gte(prismaVersion, '5.12.0'));
89+
}
90+
7891
export type { DMMF } from '@prisma/generator-helper';

packages/sdk/src/utils.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ import {
3333
} from '@zenstackhq/language/ast';
3434
import fs from 'node:fs';
3535
import path from 'path';
36-
import semver from 'semver';
3736
import { ExpressionContext, STD_LIB_MODULE_NAME } from './constants';
38-
import { getPrismaVersion } from './prisma';
3937
import { PluginError, type PluginDeclaredOptions, type PluginOptions } from './types';
4038

4139
/**
@@ -556,13 +554,3 @@ export function getDataSourceProvider(model: Model) {
556554
}
557555
return getLiteral<string>(provider.value);
558556
}
559-
560-
/**
561-
* Returns if the given model supports `createMany` operation.
562-
*/
563-
export function supportCreateMany(model: Model) {
564-
// `createMany` is supported for sqlite since Prisma 5.12.0
565-
const prismaVersion = getPrismaVersion();
566-
const dsProvider = getDataSourceProvider(model);
567-
return dsProvider !== 'sqlite' || (prismaVersion && semver.gte(prismaVersion, '5.12.0'));
568-
}

0 commit comments

Comments
 (0)