@zenstackhq/sdk 1.0.0-alpha.62 → 1.0.0-alpha.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ import { DMMF } from '@prisma/generator-helper';
2
+ import { AggregateOperationSupport } from './types';
3
+ export declare const isAggregateInputType: (name: string) => boolean;
4
+ export declare function addMissingInputObjectTypesForAggregate(inputObjectTypes: DMMF.InputType[], outputObjectTypes: DMMF.OutputType[]): void;
5
+ export declare function resolveAggregateOperationSupport(inputObjectTypes: DMMF.InputType[]): AggregateOperationSupport;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveAggregateOperationSupport = exports.addMissingInputObjectTypesForAggregate = exports.isAggregateInputType = void 0;
4
+ const isAggregateOutputType = (name) => /(?:Count|Avg|Sum|Min|Max)AggregateOutputType$/.test(name);
5
+ const isAggregateInputType = (name) => name.endsWith('CountAggregateInput') ||
6
+ name.endsWith('SumAggregateInput') ||
7
+ name.endsWith('AvgAggregateInput') ||
8
+ name.endsWith('MinAggregateInput') ||
9
+ name.endsWith('MaxAggregateInput');
10
+ exports.isAggregateInputType = isAggregateInputType;
11
+ function addMissingInputObjectTypesForAggregate(inputObjectTypes, outputObjectTypes) {
12
+ const aggregateOutputTypes = outputObjectTypes.filter(({ name }) => isAggregateOutputType(name));
13
+ for (const aggregateOutputType of aggregateOutputTypes) {
14
+ const name = aggregateOutputType.name.replace(/(?:OutputType|Output)$/, '');
15
+ inputObjectTypes.push({
16
+ constraints: { maxNumFields: null, minNumFields: null },
17
+ name: `${name}Input`,
18
+ fields: aggregateOutputType.fields.map((field) => ({
19
+ name: field.name,
20
+ isNullable: false,
21
+ isRequired: false,
22
+ inputTypes: [
23
+ {
24
+ isList: false,
25
+ type: 'True',
26
+ location: 'scalar',
27
+ },
28
+ ],
29
+ })),
30
+ });
31
+ }
32
+ }
33
+ exports.addMissingInputObjectTypesForAggregate = addMissingInputObjectTypesForAggregate;
34
+ function resolveAggregateOperationSupport(inputObjectTypes) {
35
+ const aggregateOperationSupport = {};
36
+ for (const inputType of inputObjectTypes) {
37
+ if ((0, exports.isAggregateInputType)(inputType.name)) {
38
+ const name = inputType.name.replace('AggregateInput', '');
39
+ if (name.endsWith('Count')) {
40
+ const model = name.replace('Count', '');
41
+ aggregateOperationSupport[model] = Object.assign(Object.assign({}, aggregateOperationSupport[model]), { count: true });
42
+ }
43
+ else if (name.endsWith('Min')) {
44
+ const model = name.replace('Min', '');
45
+ aggregateOperationSupport[model] = Object.assign(Object.assign({}, aggregateOperationSupport[model]), { min: true });
46
+ }
47
+ else if (name.endsWith('Max')) {
48
+ const model = name.replace('Max', '');
49
+ aggregateOperationSupport[model] = Object.assign(Object.assign({}, aggregateOperationSupport[model]), { max: true });
50
+ }
51
+ else if (name.endsWith('Sum')) {
52
+ const model = name.replace('Sum', '');
53
+ aggregateOperationSupport[model] = Object.assign(Object.assign({}, aggregateOperationSupport[model]), { sum: true });
54
+ }
55
+ else if (name.endsWith('Avg')) {
56
+ const model = name.replace('Avg', '');
57
+ aggregateOperationSupport[model] = Object.assign(Object.assign({}, aggregateOperationSupport[model]), { avg: true });
58
+ }
59
+ }
60
+ }
61
+ return aggregateOperationSupport;
62
+ }
63
+ exports.resolveAggregateOperationSupport = resolveAggregateOperationSupport;
64
+ //# sourceMappingURL=aggregate-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregate-helpers.js","sourceRoot":"","sources":["../../src/dmmf-helpers/aggregate-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { DMMF } from '@prisma/generator-helper';
2
+ export declare function addMissingInputObjectTypesForInclude(inputObjectTypes: DMMF.InputType[], models: DMMF.Model[]): void;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addMissingInputObjectTypesForInclude = void 0;
4
+ const model_helpers_1 = require("./model-helpers");
5
+ function addMissingInputObjectTypesForInclude(inputObjectTypes, models) {
6
+ // generate input object types necessary to support ModelInclude with relation support
7
+ const generatedIncludeInputObjectTypes = generateModelIncludeInputObjectTypes(models);
8
+ for (const includeInputObjectType of generatedIncludeInputObjectTypes) {
9
+ inputObjectTypes.push(includeInputObjectType);
10
+ }
11
+ }
12
+ exports.addMissingInputObjectTypesForInclude = addMissingInputObjectTypesForInclude;
13
+ function generateModelIncludeInputObjectTypes(models) {
14
+ const modelIncludeInputObjectTypes = [];
15
+ for (const model of models) {
16
+ const { name: modelName, fields: modelFields } = model;
17
+ const fields = [];
18
+ for (const modelField of modelFields) {
19
+ const { name: modelFieldName, isList, type } = modelField;
20
+ const isRelationField = (0, model_helpers_1.checkIsModelRelationField)(modelField);
21
+ if (isRelationField) {
22
+ const field = {
23
+ name: modelFieldName,
24
+ isRequired: false,
25
+ isNullable: false,
26
+ inputTypes: [
27
+ { isList: false, type: 'Boolean', location: 'scalar' },
28
+ {
29
+ isList: false,
30
+ type: isList ? `${type}FindManyArgs` : `${type}Args`,
31
+ location: 'inputObjectTypes',
32
+ namespace: 'prisma',
33
+ },
34
+ ],
35
+ };
36
+ fields.push(field);
37
+ }
38
+ }
39
+ /**
40
+ * include is not generated for models that do not have a relation with any other models
41
+ * -> continue onto the next model
42
+ */
43
+ const hasRelationToAnotherModel = (0, model_helpers_1.checkModelHasModelRelation)(model);
44
+ if (!hasRelationToAnotherModel) {
45
+ continue;
46
+ }
47
+ const hasManyRelationToAnotherModel = (0, model_helpers_1.checkModelHasManyModelRelation)(model);
48
+ const shouldAddCountField = hasManyRelationToAnotherModel;
49
+ if (shouldAddCountField) {
50
+ const inputTypes = [{ isList: false, type: 'Boolean', location: 'scalar' }];
51
+ inputTypes.push({
52
+ isList: false,
53
+ type: `${modelName}CountOutputTypeArgs`,
54
+ location: 'inputObjectTypes',
55
+ namespace: 'prisma',
56
+ });
57
+ const _countField = {
58
+ name: '_count',
59
+ isRequired: false,
60
+ isNullable: false,
61
+ inputTypes,
62
+ };
63
+ fields.push(_countField);
64
+ }
65
+ const modelIncludeInputObjectType = {
66
+ name: `${modelName}Include`,
67
+ constraints: {
68
+ maxNumFields: null,
69
+ minNumFields: null,
70
+ },
71
+ fields,
72
+ };
73
+ modelIncludeInputObjectTypes.push(modelIncludeInputObjectType);
74
+ }
75
+ return modelIncludeInputObjectTypes;
76
+ }
77
+ //# sourceMappingURL=include-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"include-helpers.js","sourceRoot":"","sources":["../../src/dmmf-helpers/include-helpers.ts"],"names":[],"mappings":";;;AACA,mDAAwH;AAExH,SAAgB,oCAAoC,CAAC,gBAAkC,EAAE,MAAoB;IACzG,sFAAsF;IACtF,MAAM,gCAAgC,GAAG,oCAAoC,CAAC,MAAM,CAAC,CAAC;IAEtF,KAAK,MAAM,sBAAsB,IAAI,gCAAgC,EAAE;QACnE,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KACjD;AACL,CAAC;AAPD,oFAOC;AACD,SAAS,oCAAoC,CAAC,MAAoB;IAC9D,MAAM,4BAA4B,GAAqB,EAAE,CAAC;IAC1D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QACxB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QACvD,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YAClC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC;YAE1D,MAAM,eAAe,GAAG,IAAA,yCAAyB,EAAC,UAAU,CAAC,CAAC;YAE9D,IAAI,eAAe,EAAE;gBACjB,MAAM,KAAK,GAAmB;oBAC1B,IAAI,EAAE,cAAc;oBACpB,UAAU,EAAE,KAAK;oBACjB,UAAU,EAAE,KAAK;oBACjB,UAAU,EAAE;wBACR,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;wBACtD;4BACI,MAAM,EAAE,KAAK;4BACb,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM;4BACpD,QAAQ,EAAE,kBAAkB;4BAC5B,SAAS,EAAE,QAAQ;yBACtB;qBACJ;iBACJ,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;SACJ;QAED;;;WAGG;QACH,MAAM,yBAAyB,GAAG,IAAA,0CAA0B,EAAC,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,yBAAyB,EAAE;YAC5B,SAAS;SACZ;QAED,MAAM,6BAA6B,GAAG,IAAA,8CAA8B,EAAC,KAAK,CAAC,CAAC;QAE5E,MAAM,mBAAmB,GAAG,6BAA6B,CAAC;QAC1D,IAAI,mBAAmB,EAAE;YACrB,MAAM,UAAU,GAA8B,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvG,UAAU,CAAC,IAAI,CAAC;gBACZ,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,GAAG,SAAS,qBAAqB;gBACvC,QAAQ,EAAE,kBAAkB;gBAC5B,SAAS,EAAE,QAAQ;aACtB,CAAC,CAAC;YACH,MAAM,WAAW,GAAmB;gBAChC,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,KAAK;gBACjB,UAAU;aACb,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC5B;QAED,MAAM,2BAA2B,GAAmB;YAChD,IAAI,EAAE,GAAG,SAAS,SAAS;YAC3B,WAAW,EAAE;gBACT,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;aACrB;YACD,MAAM;SACT,CAAC;QACF,4BAA4B,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;KAClE;IACD,OAAO,4BAA4B,CAAC;AACxC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './aggregate-helpers';
2
+ export * from './include-helpers';
3
+ export * from './model-helpers';
4
+ export * from './modelArgs-helpers';
5
+ export * from './select-helpers';
6
+ export * from './types';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./aggregate-helpers"), exports);
18
+ __exportStar(require("./include-helpers"), exports);
19
+ __exportStar(require("./model-helpers"), exports);
20
+ __exportStar(require("./modelArgs-helpers"), exports);
21
+ __exportStar(require("./select-helpers"), exports);
22
+ __exportStar(require("./types"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dmmf-helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,oDAAkC;AAClC,kDAAgC;AAChC,sDAAoC;AACpC,mDAAiC;AACjC,0CAAwB"}
@@ -0,0 +1,6 @@
1
+ import { DMMF } from '@prisma/generator-helper';
2
+ export declare function checkModelHasModelRelation(model: DMMF.Model): boolean;
3
+ export declare function checkModelHasManyModelRelation(model: DMMF.Model): boolean;
4
+ export declare function checkIsModelRelationField(modelField: DMMF.Field): boolean;
5
+ export declare function checkIsManyModelRelationField(modelField: DMMF.Field): boolean;
6
+ export declare function findModelByName(models: DMMF.Model[], modelName: string): DMMF.Model | undefined;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findModelByName = exports.checkIsManyModelRelationField = exports.checkIsModelRelationField = exports.checkModelHasManyModelRelation = exports.checkModelHasModelRelation = void 0;
4
+ function checkModelHasModelRelation(model) {
5
+ const { fields: modelFields } = model;
6
+ for (const modelField of modelFields) {
7
+ const isRelationField = checkIsModelRelationField(modelField);
8
+ if (isRelationField) {
9
+ return true;
10
+ }
11
+ }
12
+ return false;
13
+ }
14
+ exports.checkModelHasModelRelation = checkModelHasModelRelation;
15
+ function checkModelHasManyModelRelation(model) {
16
+ const { fields: modelFields } = model;
17
+ for (const modelField of modelFields) {
18
+ const isManyRelationField = checkIsManyModelRelationField(modelField);
19
+ if (isManyRelationField) {
20
+ return true;
21
+ }
22
+ }
23
+ return false;
24
+ }
25
+ exports.checkModelHasManyModelRelation = checkModelHasManyModelRelation;
26
+ function checkIsModelRelationField(modelField) {
27
+ const { kind, relationName } = modelField;
28
+ return kind === 'object' && !!relationName;
29
+ }
30
+ exports.checkIsModelRelationField = checkIsModelRelationField;
31
+ function checkIsManyModelRelationField(modelField) {
32
+ return checkIsModelRelationField(modelField) && modelField.isList;
33
+ }
34
+ exports.checkIsManyModelRelationField = checkIsManyModelRelationField;
35
+ function findModelByName(models, modelName) {
36
+ return models.find(({ name }) => name === modelName);
37
+ }
38
+ exports.findModelByName = findModelByName;
39
+ //# sourceMappingURL=model-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-helpers.js","sourceRoot":"","sources":["../../src/dmmf-helpers/model-helpers.ts"],"names":[],"mappings":";;;AAEA,SAAgB,0BAA0B,CAAC,KAAiB;IACxD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IACtC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QAClC,MAAM,eAAe,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,eAAe,EAAE;YACjB,OAAO,IAAI,CAAC;SACf;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AATD,gEASC;AAED,SAAgB,8BAA8B,CAAC,KAAiB;IAC5D,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IACtC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QAClC,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,UAAU,CAAC,CAAC;QACtE,IAAI,mBAAmB,EAAE;YACrB,OAAO,IAAI,CAAC;SACf;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AATD,wEASC;AAED,SAAgB,yBAAyB,CAAC,UAAsB;IAC5D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC;IAC1C,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,YAAY,CAAC;AAC/C,CAAC;AAHD,8DAGC;AAED,SAAgB,6BAA6B,CAAC,UAAsB;IAChE,OAAO,yBAAyB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC;AACtE,CAAC;AAFD,sEAEC;AAED,SAAgB,eAAe,CAAC,MAAoB,EAAE,SAAiB;IACnE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AACzD,CAAC;AAFD,0CAEC"}
@@ -0,0 +1,2 @@
1
+ import { DMMF } from '@prisma/generator-helper';
2
+ export declare function addMissingInputObjectTypesForModelArgs(inputObjectTypes: DMMF.InputType[], models: DMMF.Model[]): void;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addMissingInputObjectTypesForModelArgs = void 0;
4
+ const model_helpers_1 = require("./model-helpers");
5
+ function addMissingInputObjectTypesForModelArgs(inputObjectTypes, models) {
6
+ const modelArgsInputObjectTypes = generateModelArgsInputObjectTypes(models);
7
+ for (const modelArgsInputObjectType of modelArgsInputObjectTypes) {
8
+ inputObjectTypes.push(modelArgsInputObjectType);
9
+ }
10
+ }
11
+ exports.addMissingInputObjectTypesForModelArgs = addMissingInputObjectTypesForModelArgs;
12
+ function generateModelArgsInputObjectTypes(models) {
13
+ const modelArgsInputObjectTypes = [];
14
+ for (const model of models) {
15
+ const { name: modelName } = model;
16
+ const fields = [];
17
+ const selectField = {
18
+ name: 'select',
19
+ isRequired: false,
20
+ isNullable: false,
21
+ inputTypes: [
22
+ {
23
+ isList: false,
24
+ type: `${modelName}Select`,
25
+ location: 'inputObjectTypes',
26
+ namespace: 'prisma',
27
+ },
28
+ ],
29
+ };
30
+ fields.push(selectField);
31
+ const hasRelationToAnotherModel = (0, model_helpers_1.checkModelHasModelRelation)(model);
32
+ if (hasRelationToAnotherModel) {
33
+ const includeField = {
34
+ name: 'include',
35
+ isRequired: false,
36
+ isNullable: false,
37
+ inputTypes: [
38
+ {
39
+ isList: false,
40
+ type: `${modelName}Include`,
41
+ location: 'inputObjectTypes',
42
+ namespace: 'prisma',
43
+ },
44
+ ],
45
+ };
46
+ fields.push(includeField);
47
+ }
48
+ const modelArgsInputObjectType = {
49
+ name: `${modelName}Args`,
50
+ constraints: {
51
+ maxNumFields: null,
52
+ minNumFields: null,
53
+ },
54
+ fields,
55
+ };
56
+ modelArgsInputObjectTypes.push(modelArgsInputObjectType);
57
+ }
58
+ return modelArgsInputObjectTypes;
59
+ }
60
+ //# sourceMappingURL=modelArgs-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelArgs-helpers.js","sourceRoot":"","sources":["../../src/dmmf-helpers/modelArgs-helpers.ts"],"names":[],"mappings":";;;AACA,mDAA6D;AAE7D,SAAgB,sCAAsC,CAAC,gBAAkC,EAAE,MAAoB;IAC3G,MAAM,yBAAyB,GAAG,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAE5E,KAAK,MAAM,wBAAwB,IAAI,yBAAyB,EAAE;QAC9D,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;KACnD;AACL,CAAC;AAND,wFAMC;AACD,SAAS,iCAAiC,CAAC,MAAoB;IAC3D,MAAM,yBAAyB,GAAqB,EAAE,CAAC;IACvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QACxB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAClC,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,MAAM,WAAW,GAAmB;YAChC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE;gBACR;oBACI,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,GAAG,SAAS,QAAQ;oBAC1B,QAAQ,EAAE,kBAAkB;oBAC5B,SAAS,EAAE,QAAQ;iBACtB;aACJ;SACJ,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzB,MAAM,yBAAyB,GAAG,IAAA,0CAA0B,EAAC,KAAK,CAAC,CAAC;QAEpE,IAAI,yBAAyB,EAAE;YAC3B,MAAM,YAAY,GAAmB;gBACjC,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE,KAAK;gBACjB,UAAU,EAAE;oBACR;wBACI,MAAM,EAAE,KAAK;wBACb,IAAI,EAAE,GAAG,SAAS,SAAS;wBAC3B,QAAQ,EAAE,kBAAkB;wBAC5B,SAAS,EAAE,QAAQ;qBACtB;iBACJ;aACJ,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC7B;QAED,MAAM,wBAAwB,GAAmB;YAC7C,IAAI,EAAE,GAAG,SAAS,MAAM;YACxB,WAAW,EAAE;gBACT,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,IAAI;aACrB;YACD,MAAM;SACT,CAAC;QACF,yBAAyB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;KAC5D;IACD,OAAO,yBAAyB,CAAC;AACrC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { DMMF } from '@prisma/generator-helper';
2
+ export declare function addMissingInputObjectTypesForSelect(inputObjectTypes: DMMF.InputType[], outputObjectTypes: DMMF.OutputType[], models: DMMF.Model[]): void;
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addMissingInputObjectTypesForSelect = void 0;
4
+ const model_helpers_1 = require("./model-helpers");
5
+ function addMissingInputObjectTypesForSelect(inputObjectTypes, outputObjectTypes, models) {
6
+ // generate input object types necessary to support ModelSelect._count
7
+ const modelCountOutputTypes = getModelCountOutputTypes(outputObjectTypes);
8
+ const modelCountOutputTypeSelectInputObjectTypes = generateModelCountOutputTypeSelectInputObjectTypes(modelCountOutputTypes);
9
+ const modelCountOutputTypeArgsInputObjectTypes = generateModelCountOutputTypeArgsInputObjectTypes(modelCountOutputTypes);
10
+ const modelSelectInputObjectTypes = generateModelSelectInputObjectTypes(models);
11
+ const generatedInputObjectTypes = [
12
+ modelCountOutputTypeSelectInputObjectTypes,
13
+ modelCountOutputTypeArgsInputObjectTypes,
14
+ modelSelectInputObjectTypes,
15
+ ].flat();
16
+ for (const inputObjectType of generatedInputObjectTypes) {
17
+ inputObjectTypes.push(inputObjectType);
18
+ }
19
+ }
20
+ exports.addMissingInputObjectTypesForSelect = addMissingInputObjectTypesForSelect;
21
+ function getModelCountOutputTypes(outputObjectTypes) {
22
+ return outputObjectTypes.filter(({ name }) => name.includes('CountOutputType'));
23
+ }
24
+ function generateModelCountOutputTypeSelectInputObjectTypes(modelCountOutputTypes) {
25
+ const modelCountOutputTypeSelectInputObjectTypes = [];
26
+ for (const modelCountOutputType of modelCountOutputTypes) {
27
+ const { name: modelCountOutputTypeName, fields: modelCountOutputTypeFields } = modelCountOutputType;
28
+ const modelCountOutputTypeSelectInputObjectType = {
29
+ name: `${modelCountOutputTypeName}Select`,
30
+ constraints: {
31
+ maxNumFields: null,
32
+ minNumFields: null,
33
+ },
34
+ fields: modelCountOutputTypeFields.map(({ name }) => ({
35
+ name,
36
+ isRequired: false,
37
+ isNullable: false,
38
+ inputTypes: [
39
+ {
40
+ isList: false,
41
+ type: `Boolean`,
42
+ location: 'scalar',
43
+ },
44
+ ],
45
+ })),
46
+ };
47
+ modelCountOutputTypeSelectInputObjectTypes.push(modelCountOutputTypeSelectInputObjectType);
48
+ }
49
+ return modelCountOutputTypeSelectInputObjectTypes;
50
+ }
51
+ function generateModelCountOutputTypeArgsInputObjectTypes(modelCountOutputTypes) {
52
+ const modelCountOutputTypeArgsInputObjectTypes = [];
53
+ for (const modelCountOutputType of modelCountOutputTypes) {
54
+ const { name: modelCountOutputTypeName } = modelCountOutputType;
55
+ const modelCountOutputTypeArgsInputObjectType = {
56
+ name: `${modelCountOutputTypeName}Args`,
57
+ constraints: {
58
+ maxNumFields: null,
59
+ minNumFields: null,
60
+ },
61
+ fields: [
62
+ {
63
+ name: 'select',
64
+ isRequired: false,
65
+ isNullable: false,
66
+ inputTypes: [
67
+ {
68
+ isList: false,
69
+ type: `${modelCountOutputTypeName}Select`,
70
+ location: 'inputObjectTypes',
71
+ namespace: 'prisma',
72
+ },
73
+ ],
74
+ },
75
+ ],
76
+ };
77
+ modelCountOutputTypeArgsInputObjectTypes.push(modelCountOutputTypeArgsInputObjectType);
78
+ }
79
+ return modelCountOutputTypeArgsInputObjectTypes;
80
+ }
81
+ function generateModelSelectInputObjectTypes(models) {
82
+ const modelSelectInputObjectTypes = [];
83
+ for (const model of models) {
84
+ const { name: modelName, fields: modelFields } = model;
85
+ const fields = [];
86
+ for (const modelField of modelFields) {
87
+ const { name: modelFieldName, isList, type } = modelField;
88
+ const isRelationField = (0, model_helpers_1.checkIsModelRelationField)(modelField);
89
+ const field = {
90
+ name: modelFieldName,
91
+ isRequired: false,
92
+ isNullable: false,
93
+ inputTypes: [{ isList: false, type: 'Boolean', location: 'scalar' }],
94
+ };
95
+ if (isRelationField) {
96
+ const schemaArgInputType = {
97
+ isList: false,
98
+ type: isList ? `${type}FindManyArgs` : `${type}Args`,
99
+ location: 'inputObjectTypes',
100
+ namespace: 'prisma',
101
+ };
102
+ field.inputTypes.push(schemaArgInputType);
103
+ }
104
+ fields.push(field);
105
+ }
106
+ const hasManyRelationToAnotherModel = (0, model_helpers_1.checkModelHasManyModelRelation)(model);
107
+ const shouldAddCountField = hasManyRelationToAnotherModel;
108
+ if (shouldAddCountField) {
109
+ const _countField = {
110
+ name: '_count',
111
+ isRequired: false,
112
+ isNullable: false,
113
+ inputTypes: [
114
+ { isList: false, type: 'Boolean', location: 'scalar' },
115
+ {
116
+ isList: false,
117
+ type: `${modelName}CountOutputTypeArgs`,
118
+ location: 'inputObjectTypes',
119
+ namespace: 'prisma',
120
+ },
121
+ ],
122
+ };
123
+ fields.push(_countField);
124
+ }
125
+ const modelSelectInputObjectType = {
126
+ name: `${modelName}Select`,
127
+ constraints: {
128
+ maxNumFields: null,
129
+ minNumFields: null,
130
+ },
131
+ fields,
132
+ };
133
+ modelSelectInputObjectTypes.push(modelSelectInputObjectType);
134
+ }
135
+ return modelSelectInputObjectTypes;
136
+ }
137
+ //# sourceMappingURL=select-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-helpers.js","sourceRoot":"","sources":["../../src/dmmf-helpers/select-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { DMMF as PrismaDMMF } from '@prisma/generator-helper';
2
+ export type TransformerParams = {
3
+ enumTypes?: PrismaDMMF.SchemaEnum[];
4
+ fields?: PrismaDMMF.SchemaArg[];
5
+ name?: string;
6
+ models?: PrismaDMMF.Model[];
7
+ modelOperations?: PrismaDMMF.ModelMapping[];
8
+ aggregateOperationSupport?: AggregateOperationSupport;
9
+ isDefaultPrismaClientOutput?: boolean;
10
+ prismaClientOutputPath?: string;
11
+ };
12
+ export type AggregateOperationSupport = {
13
+ [model: string]: {
14
+ count?: boolean;
15
+ min?: boolean;
16
+ max?: boolean;
17
+ sum?: boolean;
18
+ avg?: boolean;
19
+ };
20
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dmmf-helpers/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zenstackhq/sdk",
3
- "version": "1.0.0-alpha.62",
3
+ "version": "1.0.0-alpha.71",
4
4
  "description": "ZenStack plugin development SDK",
5
5
  "main": "index.js",
6
6
  "publishConfig": {
@@ -12,7 +12,7 @@
12
12
  "license": "MIT",
13
13
  "dependencies": {
14
14
  "@prisma/generator-helper": "^4.7.1",
15
- "@zenstackhq/language": "1.0.0-alpha.62"
15
+ "@zenstackhq/language": "1.0.0-alpha.71"
16
16
  },
17
17
  "devDependencies": {
18
18
  "copyfiles": "^2.4.1",
package/utils.d.ts CHANGED
@@ -1,9 +1,10 @@
1
- import { AstNode, DataModelAttribute, DataModelFieldAttribute, Expression, Reference } from '@zenstackhq/language/ast';
1
+ import { AstNode, DataModel, DataModelAttribute, DataModelField, DataModelFieldAttribute, Enum, EnumField, Expression, Reference } from '@zenstackhq/language/ast';
2
2
  export declare function resolved<T extends AstNode>(ref: Reference<T>): T;
3
3
  export declare function getLiteral<T extends string | number | boolean | any = any>(expr: Expression | undefined): T | undefined;
4
4
  export declare function getArray(expr: Expression | undefined): Expression[] | undefined;
5
5
  export declare function getLiteralArray<T extends string | number | boolean | any = any>(expr: Expression | undefined): (T | undefined)[] | undefined;
6
6
  export default function indentString(string: string, count?: number): string;
7
+ export declare function hasAttribute(decl: DataModel | DataModelField | Enum | EnumField, name: string): boolean;
7
8
  export declare function getAttributeArgs(attr: DataModelAttribute | DataModelFieldAttribute): Record<string, Expression>;
8
9
  export declare function getAttributeArg(attr: DataModelAttribute | DataModelFieldAttribute, name: string): Expression | undefined;
9
10
  export declare function getAttributeArgLiteral<T extends string | number | boolean>(attr: DataModelAttribute | DataModelFieldAttribute, name: string): T | undefined;
package/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAttributeArgLiteral = exports.getAttributeArg = exports.getAttributeArgs = exports.getLiteralArray = exports.getArray = exports.getLiteral = exports.resolved = void 0;
3
+ exports.getAttributeArgLiteral = exports.getAttributeArg = exports.getAttributeArgs = exports.hasAttribute = exports.getLiteralArray = exports.getArray = exports.getLiteral = exports.resolved = void 0;
4
4
  const ast_1 = require("@zenstackhq/language/ast");
5
5
  function resolved(ref) {
6
6
  if (!ref.ref) {
@@ -34,6 +34,10 @@ function indentString(string, count = 4) {
34
34
  return string.replace(/^(?!\s*$)/gm, indent.repeat(count));
35
35
  }
36
36
  exports.default = indentString;
37
+ function hasAttribute(decl, name) {
38
+ return !!decl.attributes.find((attr) => resolved(attr.decl).name === name);
39
+ }
40
+ exports.hasAttribute = hasAttribute;
37
41
  function getAttributeArgs(attr) {
38
42
  const result = {};
39
43
  for (const arg of attr.args) {
package/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,kDAQkC;AAElC,SAAgB,QAAQ,CAAoB,GAAiB;IACzD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC9D;IACD,OAAO,GAAG,CAAC,GAAG,CAAC;AACnB,CAAC;AALD,4BAKC;AAED,8DAA8D;AAC9D,SAAgB,UAAU,CACtB,IAA4B;IAE5B,IAAI,CAAC,IAAA,mBAAa,EAAC,IAAI,CAAC,EAAE;QACtB,OAAO,SAAS,CAAC;KACpB;IACD,OAAO,IAAI,CAAC,KAAU,CAAC;AAC3B,CAAC;AAPD,gCAOC;AAED,SAAgB,QAAQ,CAAC,IAA4B;IACjD,OAAO,IAAA,iBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAFD,4BAEC;AAED,SAAgB,eAAe,CAG7B,IAA4B;IAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,EAAE;QACN,OAAO,SAAS,CAAC;KACpB;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAI,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AATD,0CASC;AAED,SAAwB,YAAY,CAAC,MAAc,EAAE,KAAK,GAAG,CAAC;IAC1D,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAHD,+BAGC;AAED,SAAgB,gBAAgB,CAAC,IAAkD;IAC/E,MAAM,MAAM,GAA+B,EAAE,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;QACzB,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;YACrB,SAAS;SACZ;QACD,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;KAC/C;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AATD,4CASC;AAED,SAAgB,eAAe,CAC3B,IAAkD,EAClD,IAAY;;IAEZ,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;QACzB,IAAI,CAAA,MAAA,GAAG,CAAC,cAAc,0CAAE,IAAI,MAAK,IAAI,EAAE;YACnC,OAAO,GAAG,CAAC,KAAK,CAAC;SACpB;KACJ;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAVD,0CAUC;AAED,SAAgB,sBAAsB,CAClC,IAAkD,EAClD,IAAY;;IAEZ,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;QACzB,IAAI,CAAA,MAAA,GAAG,CAAC,cAAc,0CAAE,IAAI,MAAK,IAAI,EAAE;YACnC,OAAO,UAAU,CAAI,GAAG,CAAC,KAAK,CAAC,CAAC;SACnC;KACJ;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAVD,wDAUC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,kDAYkC;AAElC,SAAgB,QAAQ,CAAoB,GAAiB;IACzD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC9D;IACD,OAAO,GAAG,CAAC,GAAG,CAAC;AACnB,CAAC;AALD,4BAKC;AAED,8DAA8D;AAC9D,SAAgB,UAAU,CACtB,IAA4B;IAE5B,IAAI,CAAC,IAAA,mBAAa,EAAC,IAAI,CAAC,EAAE;QACtB,OAAO,SAAS,CAAC;KACpB;IACD,OAAO,IAAI,CAAC,KAAU,CAAC;AAC3B,CAAC;AAPD,gCAOC;AAED,SAAgB,QAAQ,CAAC,IAA4B;IACjD,OAAO,IAAA,iBAAW,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAFD,4BAEC;AAED,SAAgB,eAAe,CAG7B,IAA4B;IAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG,EAAE;QACN,OAAO,SAAS,CAAC;KACpB;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAI,IAAI,CAAC,CAAC,CAAC;AAClD,CAAC;AATD,0CASC;AAED,SAAwB,YAAY,CAAC,MAAc,EAAE,KAAK,GAAG,CAAC;IAC1D,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAHD,+BAGC;AAED,SAAgB,YAAY,CAAC,IAAmD,EAAE,IAAY;IAC1F,OAAO,CAAC,CAAE,IAAI,CAAC,UAA+D,CAAC,IAAI,CAC/E,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAC9C,CAAC;AACN,CAAC;AAJD,oCAIC;AAED,SAAgB,gBAAgB,CAAC,IAAkD;IAC/E,MAAM,MAAM,GAA+B,EAAE,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;QACzB,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;YACrB,SAAS;SACZ;QACD,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;KAC/C;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AATD,4CASC;AAED,SAAgB,eAAe,CAC3B,IAAkD,EAClD,IAAY;;IAEZ,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;QACzB,IAAI,CAAA,MAAA,GAAG,CAAC,cAAc,0CAAE,IAAI,MAAK,IAAI,EAAE;YACnC,OAAO,GAAG,CAAC,KAAK,CAAC;SACpB;KACJ;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAVD,0CAUC;AAED,SAAgB,sBAAsB,CAClC,IAAkD,EAClD,IAAY;;IAEZ,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;QACzB,IAAI,CAAA,MAAA,GAAG,CAAC,cAAc,0CAAE,IAAI,MAAK,IAAI,EAAE;YACnC,OAAO,UAAU,CAAI,GAAG,CAAC,KAAK,CAAC,CAAC;SACnC;KACJ;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAVD,wDAUC"}