@baseplate-dev/fastify-generators 0.6.4 → 0.6.6
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.
- package/CHANGELOG.md +32 -0
- package/dist/constants/fastify-packages.d.ts +3 -3
- package/dist/constants/fastify-packages.js +3 -3
- package/dist/generators/auth/auth-roles/auth-roles.generator.d.ts +1 -0
- package/dist/generators/auth/auth-roles/auth-roles.generator.d.ts.map +1 -1
- package/dist/generators/auth/auth-roles/auth-roles.generator.js +5 -1
- package/dist/generators/auth/auth-roles/auth-roles.generator.js.map +1 -1
- package/dist/generators/auth/auth-roles/templates/module/constants/auth-roles.constants.ts +4 -3
- package/dist/generators/pothos/pothos-prisma-enum/pothos-prisma-enum.generator.d.ts +1 -0
- package/dist/generators/pothos/pothos-prisma-enum/pothos-prisma-enum.generator.d.ts.map +1 -1
- package/dist/generators/pothos/pothos-prisma-enum/pothos-prisma-enum.generator.js +11 -2
- package/dist/generators/pothos/pothos-prisma-enum/pothos-prisma-enum.generator.js.map +1 -1
- package/dist/generators/prisma/_shared/build-data-helpers/build-schema-fragments.d.ts +59 -0
- package/dist/generators/prisma/_shared/build-data-helpers/build-schema-fragments.d.ts.map +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/build-schema-fragments.js +67 -0
- package/dist/generators/prisma/_shared/build-data-helpers/build-schema-fragments.js.map +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/build-transform-operation-parts.d.ts +71 -0
- package/dist/generators/prisma/_shared/build-data-helpers/build-transform-operation-parts.d.ts.map +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/build-transform-operation-parts.js +153 -0
- package/dist/generators/prisma/_shared/build-data-helpers/build-transform-operation-parts.js.map +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.d.ts +46 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.d.ts.map +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.js +44 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.js.map +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.d.ts +6 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.d.ts.map +1 -1
- package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.js +13 -1
- package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.js.map +1 -1
- package/dist/generators/prisma/_shared/build-data-helpers/generate-where-type.d.ts +24 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-where-type.d.ts.map +1 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-where-type.js +49 -0
- package/dist/generators/prisma/_shared/build-data-helpers/generate-where-type.js.map +1 -0
- package/dist/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.d.ts +1 -4
- package/dist/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.d.ts.map +1 -1
- package/dist/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.js +10 -2
- package/dist/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.js.map +1 -1
- package/dist/generators/prisma/_shared/field-definition-generators/types.d.ts +47 -1
- package/dist/generators/prisma/_shared/field-definition-generators/types.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/data-utils.generator.d.ts +17 -74
- package/dist/generators/prisma/data-utils/data-utils.generator.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/index.d.ts +50 -145
- package/dist/generators/prisma/data-utils/generated/index.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/template-paths.d.ts +5 -6
- package/dist/generators/prisma/data-utils/generated/template-paths.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/template-paths.js +5 -6
- package/dist/generators/prisma/data-utils/generated/template-paths.js.map +1 -1
- package/dist/generators/prisma/data-utils/generated/template-renderers.d.ts +0 -21
- package/dist/generators/prisma/data-utils/generated/template-renderers.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/template-renderers.js +1 -7
- package/dist/generators/prisma/data-utils/generated/template-renderers.js.map +1 -1
- package/dist/generators/prisma/data-utils/generated/ts-import-providers.d.ts +51 -159
- package/dist/generators/prisma/data-utils/generated/ts-import-providers.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/ts-import-providers.js +32 -64
- package/dist/generators/prisma/data-utils/generated/ts-import-providers.js.map +1 -1
- package/dist/generators/prisma/data-utils/generated/typed-templates.d.ts +66 -142
- package/dist/generators/prisma/data-utils/generated/typed-templates.d.ts.map +1 -1
- package/dist/generators/prisma/data-utils/generated/typed-templates.js +47 -98
- package/dist/generators/prisma/data-utils/generated/typed-templates.js.map +1 -1
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/define-transformer.ts +130 -0
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/execute-transform-plan.ts +108 -0
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/nested-transformers.ts +364 -0
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/prepare-transformers.ts +73 -0
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/prisma-types.ts +6 -83
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/transformer-types.ts +118 -0
- package/dist/generators/prisma/prisma-authorizer-utils/generated/index.d.ts +34 -106
- package/dist/generators/prisma/prisma-authorizer-utils/generated/index.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-authorizer-utils/generated/template-renderers.d.ts +17 -53
- package/dist/generators/prisma/prisma-authorizer-utils/generated/template-renderers.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-authorizer-utils/generated/typed-templates.d.ts +34 -106
- package/dist/generators/prisma/prisma-authorizer-utils/generated/typed-templates.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-authorizer-utils/prisma-authorizer-utils.generator.d.ts +17 -53
- package/dist/generators/prisma/prisma-authorizer-utils/prisma-authorizer-utils.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-authorizer-utils/templates/src/utils/authorizers.ts +11 -11
- package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.d.ts +39 -49
- package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.js +89 -45
- package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.js.map +1 -1
- package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.d.ts +39 -52
- package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.js +48 -32
- package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.js.map +1 -1
- package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.d.ts +16 -2
- package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.js +282 -138
- package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.js.map +1 -1
- package/dist/generators/prisma/prisma-data-nested-field/prisma-data-nested-field.generator.d.ts +19 -55
- package/dist/generators/prisma/prisma-data-nested-field/prisma-data-nested-field.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-nested-field/prisma-data-nested-field.generator.js +18 -4
- package/dist/generators/prisma/prisma-data-nested-field/prisma-data-nested-field.generator.js.map +1 -1
- package/dist/generators/prisma/prisma-data-service/prisma-data-service.generator.d.ts +41 -92
- package/dist/generators/prisma/prisma-data-service/prisma-data-service.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-service/prisma-data-service.generator.js +103 -31
- package/dist/generators/prisma/prisma-data-service/prisma-data-service.generator.js.map +1 -1
- package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.d.ts +40 -52
- package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.js +109 -49
- package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.js.map +1 -1
- package/dist/generators/prisma/prisma-query-filter-utils/generated/index.d.ts +51 -159
- package/dist/generators/prisma/prisma-query-filter-utils/generated/index.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-query-filter-utils/generated/template-renderers.d.ts +17 -53
- package/dist/generators/prisma/prisma-query-filter-utils/generated/template-renderers.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-query-filter-utils/generated/typed-templates.d.ts +68 -212
- package/dist/generators/prisma/prisma-query-filter-utils/generated/typed-templates.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-query-filter-utils/prisma-query-filter-utils.generator.d.ts +17 -53
- package/dist/generators/prisma/prisma-query-filter-utils/prisma-query-filter-utils.generator.d.ts.map +1 -1
- package/dist/generators/prisma/prisma-relation-field/prisma-relation-field.generator.js +1 -1
- package/dist/generators/prisma/prisma-relation-field/prisma-relation-field.generator.js.map +1 -1
- package/dist/writers/prisma-schema/fields.d.ts +5 -1
- package/dist/writers/prisma-schema/fields.d.ts.map +1 -1
- package/dist/writers/prisma-schema/fields.js +8 -2
- package/dist/writers/prisma-schema/fields.js.map +1 -1
- package/package.json +8 -8
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.d.ts +0 -20
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.d.ts.map +0 -1
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.js +0 -28
- package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.js.map +0 -1
- package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.d.ts +0 -130
- package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.d.ts.map +0 -1
- package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.js +0 -221
- package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.js.map +0 -1
- package/dist/generators/prisma/_shared/build-data-helpers/index.d.ts +0 -4
- package/dist/generators/prisma/_shared/build-data-helpers/index.d.ts.map +0 -1
- package/dist/generators/prisma/_shared/build-data-helpers/index.js +0 -4
- package/dist/generators/prisma/_shared/build-data-helpers/index.js.map +0 -1
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/commit-operations.ts +0 -366
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/compose-operations.ts +0 -131
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/field-definitions.ts +0 -777
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/field-utils.ts +0 -201
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/prisma-utils.ts +0 -90
- package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/types.ts +0 -721
package/dist/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { TsCodeUtils, tsTemplate } from '@baseplate-dev/core-generators';
|
|
2
|
+
import { quot } from '@baseplate-dev/utils';
|
|
3
|
+
/**
|
|
4
|
+
* Generates explicit authorization check statements.
|
|
5
|
+
*
|
|
6
|
+
* Does NOT emit the `existingItem` fetch — the caller is responsible for
|
|
7
|
+
* ensuring `existingItem` is in scope when instance roles are used.
|
|
8
|
+
*/
|
|
9
|
+
export function generateAuthorizationStatements(config) {
|
|
10
|
+
const { modelName, methodType, globalRoles, instanceRoles, modelAuthorizer, authorizerImports, } = config;
|
|
11
|
+
const hasGlobalRoles = globalRoles != null && globalRoles.length > 0;
|
|
12
|
+
const hasInstanceRoles = instanceRoles != null && instanceRoles.length > 0;
|
|
13
|
+
if (!hasGlobalRoles && !hasInstanceRoles) {
|
|
14
|
+
return { fragment: '', hasInstanceAuth: false };
|
|
15
|
+
}
|
|
16
|
+
// Build role items array
|
|
17
|
+
const globalRoleItems = (globalRoles ?? []).map((r) => quot(r));
|
|
18
|
+
const instanceRoleFragments = (instanceRoles ?? []).map((roleName) => {
|
|
19
|
+
if (!modelAuthorizer) {
|
|
20
|
+
throw new Error(`${methodType} method on model '${modelName}' references instance role '${roleName}' but no authorizer is configured for this model.`);
|
|
21
|
+
}
|
|
22
|
+
return modelAuthorizer.getRoleFragment(roleName);
|
|
23
|
+
});
|
|
24
|
+
if (hasInstanceRoles) {
|
|
25
|
+
// Instance auth: assumes existingItem is already in scope
|
|
26
|
+
const allRoleItems = [
|
|
27
|
+
...globalRoleItems,
|
|
28
|
+
...instanceRoleFragments.map((f) => f.contents),
|
|
29
|
+
];
|
|
30
|
+
const rolesArray = `[${allRoleItems.join(', ')}]`;
|
|
31
|
+
const rolesFrag = TsCodeUtils.frag(rolesArray, instanceRoleFragments.flatMap((f) => f.imports ?? []));
|
|
32
|
+
return {
|
|
33
|
+
fragment: tsTemplate `await ${authorizerImports.checkInstanceAuthorization.fragment()}(context, existingItem, ${rolesFrag});`,
|
|
34
|
+
hasInstanceAuth: true,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Global auth only
|
|
38
|
+
const rolesArray = `[${globalRoleItems.join(', ')}]`;
|
|
39
|
+
return {
|
|
40
|
+
fragment: tsTemplate `${authorizerImports.checkGlobalAuthorization.fragment()}(context, ${rolesArray});`,
|
|
41
|
+
hasInstanceAuth: false,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=generate-authorization-statements.js.map
|
package/dist/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-authorization-statements.js","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AA0C5C;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAC7C,MAA6C;IAE7C,MAAM,EACJ,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,GAClB,GAAG,MAAM,CAAC;IAEX,MAAM,cAAc,GAAG,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,aAAa,IAAI,IAAI,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAE3E,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,yBAAyB;IACzB,MAAM,eAAe,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,qBAAqB,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACnE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,GAAG,UAAU,qBAAqB,SAAS,+BAA+B,QAAQ,mDAAmD,CACtI,CAAC;QACJ,CAAC;QACD,OAAO,eAAe,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,gBAAgB,EAAE,CAAC;QACrB,0DAA0D;QAC1D,MAAM,YAAY,GAAG;YACnB,GAAG,eAAe;YAClB,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SAChD,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAClD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAChC,UAAU,EACV,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CACtD,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,UAAU,CAAA,SAAS,iBAAiB,CAAC,0BAA0B,CAAC,QAAQ,EAAE,2BAA2B,SAAS,IAAI;YAC5H,eAAe,EAAE,IAAI;SACtB,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACrD,OAAO;QACL,QAAQ,EAAE,UAAU,CAAA,GAAG,iBAAiB,CAAC,wBAAwB,CAAC,QAAQ,EAAE,aAAa,UAAU,IAAI;QACvG,eAAe,EAAE,KAAK;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -32,6 +32,12 @@ interface GenerateRelationBuildDataResult {
|
|
|
32
32
|
buildUpdateDataFragment: TsCodeFragment;
|
|
33
33
|
/** Whether this is a simple passthrough (no relations to transform) */
|
|
34
34
|
passthrough: boolean;
|
|
35
|
+
/** Foreign key field names that need to be destructured from input */
|
|
36
|
+
foreignKeyFieldNames: string[];
|
|
37
|
+
/** Individual relation entries for create: { relationName: connectCreate fragment } */
|
|
38
|
+
createRelationEntries: Record<string, TsCodeFragment>;
|
|
39
|
+
/** Individual relation entries for update: { relationName: connectUpdate fragment } */
|
|
40
|
+
updateRelationEntries: Record<string, TsCodeFragment>;
|
|
35
41
|
}
|
|
36
42
|
/**
|
|
37
43
|
* Generates separate buildCreateData and buildUpdateData functions that transform
|
package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-relation-build-data.d.ts","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-relation-build-data.d.ts","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAKrE,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E;;GAEG;AACH,UAAU,+BAA+B;IACvC,4CAA4C;IAC5C,WAAW,EAAE,iBAAiB,CAAC;IAC/B,2FAA2F;IAC3F,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,0EAA0E;IAC1E,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,UAAU,+BAA+B;IACvC,wEAAwE;IACxE,sBAAsB,EAAE,cAAc,CAAC;IACvC,sGAAsG;IACtG,oBAAoB,EAAE,cAAc,CAAC;IACrC,wEAAwE;IACxE,sBAAsB,EAAE,cAAc,CAAC;IACvC,sGAAsG;IACtG,oBAAoB,EAAE,cAAc,CAAC;IACrC,iIAAiI;IACjI,uBAAuB,EAAE,cAAc,CAAC;IACxC,iIAAiI;IACjI,uBAAuB,EAAE,cAAc,CAAC;IACxC,uEAAuE;IACvE,WAAW,EAAE,OAAO,CAAC;IACrB,sEAAsE;IACtE,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,uFAAuF;IACvF,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtD,uFAAuF;IACvF,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvD;AAmMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,+BAA+B,GACtC,+BAA+B,CA2DjC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TsCodeUtils, tsTemplate } from '@baseplate-dev/core-generators';
|
|
2
|
+
import { compareStrings } from '@baseplate-dev/utils';
|
|
2
3
|
/**
|
|
3
4
|
* Generates a TypeScript code fragment for a unique where object
|
|
4
5
|
*
|
|
@@ -111,7 +112,7 @@ function generateBuildDataBody(foreignKeyFields, operationType, dataUtilsImports
|
|
|
111
112
|
returnObjectFragments[`...${dataName}`] = tsTemplate `${dataName}`;
|
|
112
113
|
}
|
|
113
114
|
// Add relation fragments
|
|
114
|
-
const sortedRelationFragments = relationFragments.toSorted();
|
|
115
|
+
const sortedRelationFragments = relationFragments.toSorted((a, b) => compareStrings(a.relationName, b.relationName));
|
|
115
116
|
for (const { relationName, fragment } of sortedRelationFragments) {
|
|
116
117
|
returnObjectFragments[relationName] = fragment;
|
|
117
118
|
}
|
|
@@ -168,6 +169,14 @@ export function generateRelationBuildData(config) {
|
|
|
168
169
|
const updateBody = generateBuildDataBody(foreignKeyFieldNames, 'update', dataUtilsImports, relevantRelations, inputFieldNames, dataName);
|
|
169
170
|
// Both should have the same passthrough status since they use the same relations
|
|
170
171
|
const passthrough = createBody.passthrough && updateBody.passthrough;
|
|
172
|
+
// Build individual relation entries for direct use in data objects
|
|
173
|
+
const relationHelpersFragment = dataUtilsImports.relationHelpers.fragment();
|
|
174
|
+
const createRelationEntries = {};
|
|
175
|
+
const updateRelationEntries = {};
|
|
176
|
+
for (const relation of relevantRelations) {
|
|
177
|
+
createRelationEntries[relation.name] = generateRelationHelperCall(relation, 'create', relationHelpersFragment);
|
|
178
|
+
updateRelationEntries[relation.name] = generateRelationHelperCall(relation, 'update', relationHelpersFragment);
|
|
179
|
+
}
|
|
171
180
|
return {
|
|
172
181
|
createArgumentFragment: createBody.argumentFragment,
|
|
173
182
|
createReturnFragment: createBody.returnFragment,
|
|
@@ -176,6 +185,9 @@ export function generateRelationBuildData(config) {
|
|
|
176
185
|
buildCreateDataFragment: tsTemplate `(${createBody.argumentFragment}) => (${createBody.returnFragment})`,
|
|
177
186
|
buildUpdateDataFragment: tsTemplate `(${updateBody.argumentFragment}) => (${updateBody.returnFragment})`,
|
|
178
187
|
passthrough,
|
|
188
|
+
foreignKeyFieldNames,
|
|
189
|
+
createRelationEntries,
|
|
190
|
+
updateRelationEntries,
|
|
179
191
|
};
|
|
180
192
|
}
|
|
181
193
|
//# sourceMappingURL=generate-relation-build-data.js.map
|
package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-relation-build-data.js","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-relation-build-data.js","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { PrismaOutputModel } from '#src/types/prisma-output.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generates a TypeScript type literal for the `where` parameter based on
|
|
4
|
+
* the model's ID fields.
|
|
5
|
+
*
|
|
6
|
+
* - Single ID field: `{ id: string }`
|
|
7
|
+
* - Composite ID: `{ field1_field2: { field1: string; field2: string } }`
|
|
8
|
+
*
|
|
9
|
+
* @param prismaModel - The Prisma model to generate for
|
|
10
|
+
* @returns A string representing the TypeScript type literal
|
|
11
|
+
*/
|
|
12
|
+
export declare function generateWhereType(prismaModel: PrismaOutputModel): string;
|
|
13
|
+
/**
|
|
14
|
+
* Generates a where expression that references fields from an existing item variable.
|
|
15
|
+
*
|
|
16
|
+
* - Single ID: `{ id: existingItem.id }`
|
|
17
|
+
* - Composite ID: `{ field1_field2: { field1: existingItem.field1, field2: existingItem.field2 } }`
|
|
18
|
+
*
|
|
19
|
+
* @param prismaModel - The Prisma model to generate for
|
|
20
|
+
* @param existingItemVar - Variable name for the existing item (default: 'existingItem')
|
|
21
|
+
* @returns A string representing the where expression
|
|
22
|
+
*/
|
|
23
|
+
export declare function generateExistingItemWhere(prismaModel: PrismaOutputModel, existingItemVar?: string): string;
|
|
24
|
+
//# sourceMappingURL=generate-where-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-where-type.d.ts","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/build-data-helpers/generate-where-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,GAAG,MAAM,CAexE;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,SAAiB,GAC/B,MAAM,CAiBR"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a TypeScript type literal for the `where` parameter based on
|
|
3
|
+
* the model's ID fields.
|
|
4
|
+
*
|
|
5
|
+
* - Single ID field: `{ id: string }`
|
|
6
|
+
* - Composite ID: `{ field1_field2: { field1: string; field2: string } }`
|
|
7
|
+
*
|
|
8
|
+
* @param prismaModel - The Prisma model to generate for
|
|
9
|
+
* @returns A string representing the TypeScript type literal
|
|
10
|
+
*/
|
|
11
|
+
export function generateWhereType(prismaModel) {
|
|
12
|
+
const { idFields } = prismaModel;
|
|
13
|
+
if (!idFields || idFields.length === 0) {
|
|
14
|
+
throw new Error(`Model ${prismaModel.name} has no primary key`);
|
|
15
|
+
}
|
|
16
|
+
if (idFields.length === 1) {
|
|
17
|
+
return `{ ${idFields[0]}: string }`;
|
|
18
|
+
}
|
|
19
|
+
// Composite key: { field1_field2: { field1: string; field2: string } }
|
|
20
|
+
const compositeKey = idFields.join('_');
|
|
21
|
+
const innerFields = idFields.map((f) => `${f}: string`).join('; ');
|
|
22
|
+
return `{ ${compositeKey}: { ${innerFields} } }`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generates a where expression that references fields from an existing item variable.
|
|
26
|
+
*
|
|
27
|
+
* - Single ID: `{ id: existingItem.id }`
|
|
28
|
+
* - Composite ID: `{ field1_field2: { field1: existingItem.field1, field2: existingItem.field2 } }`
|
|
29
|
+
*
|
|
30
|
+
* @param prismaModel - The Prisma model to generate for
|
|
31
|
+
* @param existingItemVar - Variable name for the existing item (default: 'existingItem')
|
|
32
|
+
* @returns A string representing the where expression
|
|
33
|
+
*/
|
|
34
|
+
export function generateExistingItemWhere(prismaModel, existingItemVar = 'existingItem') {
|
|
35
|
+
const { idFields } = prismaModel;
|
|
36
|
+
if (!idFields || idFields.length === 0) {
|
|
37
|
+
throw new Error(`Model ${prismaModel.name} has no primary key`);
|
|
38
|
+
}
|
|
39
|
+
if (idFields.length === 1) {
|
|
40
|
+
return `{ ${idFields[0]}: ${existingItemVar}.${idFields[0]} }`;
|
|
41
|
+
}
|
|
42
|
+
// Composite key: { field1_field2: { field1: existingItem.field1, field2: existingItem.field2 } }
|
|
43
|
+
const compositeKey = idFields.join('_');
|
|
44
|
+
const innerFields = idFields
|
|
45
|
+
.map((f) => `${f}: ${existingItemVar}.${f}`)
|
|
46
|
+
.join(', ');
|
|
47
|
+
return `{ ${compositeKey}: { ${innerFields} } }`;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=generate-where-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-where-type.js","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/build-data-helpers/generate-where-type.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAA8B;IAC9D,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;IAEjC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,SAAS,WAAW,CAAC,IAAI,qBAAqB,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;IACtC,CAAC;IAED,uEAAuE;IACvE,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,KAAK,YAAY,OAAO,WAAW,MAAM,CAAC;AACnD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,WAA8B,EAC9B,eAAe,GAAG,cAAc;IAEhC,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;IAEjC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,SAAS,WAAW,CAAC,IAAI,qBAAqB,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,eAAe,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC;IAED,iGAAiG;IACjG,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,QAAQ;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,eAAe,IAAI,CAAC,EAAE,CAAC;SAC3C,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,KAAK,YAAY,OAAO,WAAW,MAAM,CAAC;AACnD,CAAC"}
|
package/dist/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { PrismaOutputScalarField } from '#src/types/prisma-output.js';
|
|
2
2
|
import type { ServiceOutputEnum } from '#src/types/service-output.js';
|
|
3
3
|
import type { PrismaGeneratedImportsProvider } from '../../_providers/prisma-generated-imports.js';
|
|
4
|
-
import type { DataUtilsImportsProvider } from '../../data-utils/index.js';
|
|
5
4
|
import type { InputFieldDefinitionOutput } from './types.js';
|
|
6
5
|
/**
|
|
7
6
|
* Configuration for generating a scalar field definition
|
|
@@ -11,15 +10,13 @@ interface GenerateScalarFieldConfig {
|
|
|
11
10
|
fieldName: string;
|
|
12
11
|
/** Prisma scalar field */
|
|
13
12
|
scalarField: PrismaOutputScalarField;
|
|
14
|
-
/** Data utils imports */
|
|
15
|
-
dataUtilsImports: DataUtilsImportsProvider;
|
|
16
13
|
/** Prisma generated imports */
|
|
17
14
|
prismaGeneratedImports: PrismaGeneratedImportsProvider;
|
|
18
15
|
/** Lookup function for enums */
|
|
19
16
|
lookupEnum: (name: string) => ServiceOutputEnum;
|
|
20
17
|
}
|
|
21
18
|
/**
|
|
22
|
-
* Generates a scalar field
|
|
19
|
+
* Generates a scalar field's Zod schema entry, e.g. z.string()
|
|
23
20
|
*/
|
|
24
21
|
export declare function generateScalarInputField(config: GenerateScalarFieldConfig): InputFieldDefinitionOutput;
|
|
25
22
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-scalar-input-field.d.ts","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAItE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AACnG,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"generate-scalar-input-field.d.ts","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAItE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AACnG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D;;GAEG;AACH,UAAU,yBAAyB;IACjC,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,WAAW,EAAE,uBAAuB,CAAC;IACrC,+BAA+B;IAC/B,sBAAsB,EAAE,8BAA8B,CAAC;IACvD,gCAAgC;IAChC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,iBAAiB,CAAC;CACjD;AAkDD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,yBAAyB,GAChC,0BAA0B,CAW5B"}
|
package/dist/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.js
CHANGED
|
@@ -24,6 +24,13 @@ function generateValidator({ scalarField, prismaGeneratedImports, }) {
|
|
|
24
24
|
else if (hasDefault) {
|
|
25
25
|
modifier = '.optional()';
|
|
26
26
|
}
|
|
27
|
+
if (scalarType === 'json') {
|
|
28
|
+
// JSON fields use z.json() with a transform to handle Prisma's JsonNull sentinel.
|
|
29
|
+
// Use .optional() instead of .nullish() since the transform handles null → Prisma.JsonNull.
|
|
30
|
+
const jsonModifier = isOptional || hasDefault ? '.optional()' : '';
|
|
31
|
+
const prismaFrag = prismaGeneratedImports.Prisma.fragment();
|
|
32
|
+
return tsTemplate `${zFrag}.json().transform((val) => (val === null ? ${prismaFrag}.JsonNull : val))${jsonModifier}`;
|
|
33
|
+
}
|
|
27
34
|
if (scalarType === 'enum') {
|
|
28
35
|
if (!enumType) {
|
|
29
36
|
throw new Error('Enum name is required for enum scalar type');
|
|
@@ -34,13 +41,14 @@ function generateValidator({ scalarField, prismaGeneratedImports, }) {
|
|
|
34
41
|
return tsTemplate `${zFrag}.${SCALAR_TYPE_TO_ZOD_TYPE[scalarType]}${modifier}`;
|
|
35
42
|
}
|
|
36
43
|
/**
|
|
37
|
-
* Generates a scalar field
|
|
44
|
+
* Generates a scalar field's Zod schema entry, e.g. z.string()
|
|
38
45
|
*/
|
|
39
46
|
export function generateScalarInputField(config) {
|
|
40
47
|
const validator = generateValidator(config);
|
|
41
48
|
return {
|
|
42
49
|
name: config.fieldName,
|
|
43
|
-
|
|
50
|
+
schemaFragment: validator,
|
|
51
|
+
isTransformField: false,
|
|
44
52
|
outputDtoField: scalarPrismaFieldToServiceInputField(config.scalarField, config.lookupEnum),
|
|
45
53
|
};
|
|
46
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-scalar-input-field.js","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAMzE,OAAO,EAAE,oCAAoC,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-scalar-input-field.js","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAMzE,OAAO,EAAE,oCAAoC,EAAE,MAAM,8BAA8B,CAAC;AAmBpF,MAAM,uBAAuB,GAAoC;IAC/D,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,WAAW;IACjB,UAAU,EAAE,iCAAiC;IAC7C,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,SAAS,iBAAiB,CAAC,EACzB,WAAW,EACX,sBAAsB,GACI;IAC1B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC;IACrE,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAErD,wFAAwF;IACxF,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,UAAU,EAAE,CAAC;QACf,QAAQ,GAAG,YAAY,CAAC;IAC1B,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACtB,QAAQ,GAAG,aAAa,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,kFAAkF;QAClF,4FAA4F;QAC5F,MAAM,YAAY,GAAG,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC5D,OAAO,UAAU,CAAA,GAAG,KAAK,8CAA8C,UAAU,oBAAoB,YAAY,EAAE,CAAC;IACtH,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC1D,OAAO,UAAU,CAAA,GAAG,KAAK,SAAS,QAAQ,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;IACvE,CAAC;IAED,OAAO,UAAU,CAAA,GAAG,KAAK,IAAI,uBAAuB,CAAC,UAAU,CAAC,GAAG,QAAQ,EAAE,CAAC;AAChF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAiC;IAEjC,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,gBAAgB,EAAE,KAAK;QACvB,cAAc,EAAE,oCAAoC,CAClD,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,UAAU,CAClB;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,54 @@
|
|
|
1
1
|
import type { TsCodeFragment } from '@baseplate-dev/core-generators';
|
|
2
2
|
import type { ServiceOutputDtoField } from '#src/types/service-output.js';
|
|
3
|
+
/**
|
|
4
|
+
* Context variables passed to transformer fragment builders so they can
|
|
5
|
+
* adapt code generation to different call sites (top-level vs nested).
|
|
6
|
+
*/
|
|
7
|
+
export interface TransformerFragmentContext {
|
|
8
|
+
/** Reference to the transformers variable (e.g., 'todoItemTransformers' or an import fragment) */
|
|
9
|
+
transformersVarFragment: TsCodeFragment | string;
|
|
10
|
+
/** Variable name for the existing item in update operations (e.g., 'existingItem') */
|
|
11
|
+
existingItemVarName: string;
|
|
12
|
+
/**
|
|
13
|
+
* Variable name for looking up existing related data in update operations.
|
|
14
|
+
* Top-level: 'where' (the query arg), Nested: 'existingItem' (the nested existing item).
|
|
15
|
+
*/
|
|
16
|
+
loadExistingVarName: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Definition for a transformer instance attached to a field.
|
|
20
|
+
* Only present on transform fields (file, nested), not scalars.
|
|
21
|
+
*/
|
|
22
|
+
export interface TransformerDefinition {
|
|
23
|
+
/** Code fragment for the transformer instance (e.g., fileTransformer({...})) */
|
|
24
|
+
fragment: TsCodeFragment;
|
|
25
|
+
/**
|
|
26
|
+
* Whether this transformer needs the top-level existing item loaded in update operations.
|
|
27
|
+
* True for transformers that reference existingItem directly (e.g., file transformer reads existingItem.fileId).
|
|
28
|
+
* False for transformers that handle their own data loading (e.g., nested transformers use loadExisting).
|
|
29
|
+
*/
|
|
30
|
+
needsExistingItem?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Builds the .forCreate() entry for this field in the transformers object.
|
|
33
|
+
* E.g., `transformers.coverPhoto.forCreate(coverPhoto)`
|
|
34
|
+
*/
|
|
35
|
+
buildForCreateEntry: (ctx: TransformerFragmentContext) => TsCodeFragment;
|
|
36
|
+
/**
|
|
37
|
+
* Builds the .forUpdate() entry for this field in the transformers object.
|
|
38
|
+
* E.g., `transformers.coverPhoto.forUpdate(coverPhoto, existingItem.coverPhotoId)`
|
|
39
|
+
*/
|
|
40
|
+
buildForUpdateEntry: (ctx: TransformerFragmentContext) => TsCodeFragment;
|
|
41
|
+
}
|
|
3
42
|
export interface InputFieldDefinitionOutput {
|
|
43
|
+
/** Field name */
|
|
4
44
|
name: string;
|
|
5
|
-
fragment
|
|
45
|
+
/** Zod schema fragment for the fieldSchemas object (e.g., z.string(), fileInputSchema.nullish()) */
|
|
46
|
+
schemaFragment: TsCodeFragment;
|
|
47
|
+
/** Transformer definition. Only for transform fields (file, nested). */
|
|
48
|
+
transformer?: TransformerDefinition;
|
|
49
|
+
/** Whether this is a transform field (file, nested) vs a plain Zod schema entry */
|
|
50
|
+
isTransformField: boolean;
|
|
51
|
+
/** Output DTO field for service layer */
|
|
6
52
|
outputDtoField: ServiceOutputDtoField;
|
|
7
53
|
}
|
|
8
54
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/field-definition-generators/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E,MAAM,WAAW,0BAA0B;IACzC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/generators/prisma/_shared/field-definition-generators/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,kGAAkG;IAClG,uBAAuB,EAAE,cAAc,GAAG,MAAM,CAAC;IACjD,sFAAsF;IACtF,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,gFAAgF;IAChF,QAAQ,EAAE,cAAc,CAAC;IACzB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,mBAAmB,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,cAAc,CAAC;IACzE;;;OAGG;IACH,mBAAmB,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,cAAc,CAAC;CAC1E;AAED,MAAM,WAAW,0BAA0B;IACzC,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,oGAAoG;IACpG,cAAc,EAAE,cAAc,CAAC;IAC/B,wEAAwE;IACxE,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,mFAAmF;IACnF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yCAAyC;IACzC,cAAc,EAAE,qBAAqB,CAAC;CACvC"}
|
|
@@ -10,27 +10,6 @@ export declare const dataUtilsGenerator: import("@baseplate-dev/sync").Generator
|
|
|
10
10
|
renderers: import("@baseplate-dev/sync").GeneratorTask<{
|
|
11
11
|
prismaDataUtilsRenderers: import("@baseplate-dev/sync").ProviderExport<import("./generated/template-renderers.js").PrismaDataUtilsRenderers>;
|
|
12
12
|
}, {
|
|
13
|
-
authorizerUtilsImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
|
|
14
|
-
checkGlobalAuthorization: {};
|
|
15
|
-
checkInstanceAuthorization: {};
|
|
16
|
-
GlobalRoleCheck: {
|
|
17
|
-
isTypeOnly: true;
|
|
18
|
-
};
|
|
19
|
-
InstanceRoleCheck: {
|
|
20
|
-
isTypeOnly: true;
|
|
21
|
-
};
|
|
22
|
-
}>>;
|
|
23
|
-
errorHandlerServiceImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
|
|
24
|
-
BadRequestError: {};
|
|
25
|
-
ForbiddenError: {};
|
|
26
|
-
handleZodRequestValidationError: {};
|
|
27
|
-
HttpError: {};
|
|
28
|
-
InternalServerError: {};
|
|
29
|
-
logError: {};
|
|
30
|
-
NotFoundError: {};
|
|
31
|
-
TooManyRequestsError: {};
|
|
32
|
-
UnauthorizedError: {};
|
|
33
|
-
}>>;
|
|
34
13
|
paths: import("@baseplate-dev/sync").ProviderType<import("./generated/template-paths.js").PrismaDataUtilsPaths>;
|
|
35
14
|
prismaGeneratedImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
|
|
36
15
|
PrismaClient: {};
|
|
@@ -53,87 +32,51 @@ export declare const dataUtilsGenerator: import("@baseplate-dev/sync").Generator
|
|
|
53
32
|
}, undefined>;
|
|
54
33
|
imports: import("@baseplate-dev/sync").GeneratorTask<{
|
|
55
34
|
dataUtilsImports: import("@baseplate-dev/sync").ProviderExport<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
|
|
56
|
-
|
|
57
|
-
isTypeOnly: true;
|
|
58
|
-
};
|
|
59
|
-
AnyOperationHooks: {
|
|
60
|
-
isTypeOnly: true;
|
|
61
|
-
};
|
|
62
|
-
commitCreate: {};
|
|
63
|
-
commitDelete: {};
|
|
64
|
-
commitUpdate: {};
|
|
65
|
-
composeCreate: {};
|
|
66
|
-
composeUpdate: {};
|
|
67
|
-
createParentModelConfig: {};
|
|
68
|
-
DataCreateInput: {
|
|
69
|
-
isTypeOnly: true;
|
|
70
|
-
};
|
|
71
|
-
DataDeleteInput: {
|
|
72
|
-
isTypeOnly: true;
|
|
73
|
-
};
|
|
74
|
-
DataOperationType: {
|
|
35
|
+
AfterExecuteHook: {
|
|
75
36
|
isTypeOnly: true;
|
|
76
37
|
};
|
|
77
|
-
|
|
38
|
+
AnyBoundTransformer: {
|
|
78
39
|
isTypeOnly: true;
|
|
79
40
|
};
|
|
80
|
-
|
|
41
|
+
AnyTransformer: {
|
|
81
42
|
isTypeOnly: true;
|
|
82
43
|
};
|
|
83
|
-
|
|
44
|
+
BoundTransformer: {
|
|
84
45
|
isTypeOnly: true;
|
|
85
46
|
};
|
|
86
|
-
|
|
47
|
+
DataQuery: {
|
|
87
48
|
isTypeOnly: true;
|
|
88
49
|
};
|
|
89
|
-
|
|
50
|
+
defineTransformer: {};
|
|
51
|
+
executeTransformPlan: {};
|
|
52
|
+
GetResult: {
|
|
90
53
|
isTypeOnly: true;
|
|
91
54
|
};
|
|
92
|
-
|
|
93
|
-
generateUpdateSchema: {};
|
|
94
|
-
GetPayload: {
|
|
55
|
+
InferTransformed: {
|
|
95
56
|
isTypeOnly: true;
|
|
96
57
|
};
|
|
97
|
-
|
|
98
|
-
isTypeOnly: true;
|
|
99
|
-
};
|
|
100
|
-
InferInput: {
|
|
101
|
-
isTypeOnly: true;
|
|
102
|
-
};
|
|
103
|
-
ModelInclude: {
|
|
58
|
+
MaybePromise: {
|
|
104
59
|
isTypeOnly: true;
|
|
105
60
|
};
|
|
106
61
|
ModelPropName: {
|
|
107
62
|
isTypeOnly: true;
|
|
108
63
|
};
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
NestedOneToOneFieldConfig: {
|
|
115
|
-
isTypeOnly: true;
|
|
116
|
-
};
|
|
117
|
-
OperationContext: {
|
|
64
|
+
oneToManyTransformer: {};
|
|
65
|
+
oneToOneTransformer: {};
|
|
66
|
+
prepareTransformers: {};
|
|
67
|
+
relationHelpers: {};
|
|
68
|
+
Transformer: {
|
|
118
69
|
isTypeOnly: true;
|
|
119
70
|
};
|
|
120
|
-
|
|
71
|
+
TransformerResult: {
|
|
121
72
|
isTypeOnly: true;
|
|
122
73
|
};
|
|
123
|
-
|
|
124
|
-
isTypeOnly: true;
|
|
125
|
-
};
|
|
126
|
-
relationHelpers: {};
|
|
127
|
-
scalarField: {};
|
|
128
|
-
TransactionalOperationContext: {
|
|
74
|
+
TransformPlan: {
|
|
129
75
|
isTypeOnly: true;
|
|
130
76
|
};
|
|
131
77
|
WhereInput: {
|
|
132
78
|
isTypeOnly: true;
|
|
133
79
|
};
|
|
134
|
-
WhereUniqueInput: {
|
|
135
|
-
isTypeOnly: true;
|
|
136
|
-
};
|
|
137
80
|
}>>;
|
|
138
81
|
}, {
|
|
139
82
|
paths: import("@baseplate-dev/sync").ProviderType<import("./generated/template-paths.js").PrismaDataUtilsPaths>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-utils.generator.d.ts","sourceRoot":"","sources":["../../../../src/generators/prisma/data-utils/data-utils.generator.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"data-utils.generator.d.ts","sourceRoot":"","sources":["../../../../src/generators/prisma/data-utils/data-utils.generator.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyB7B,CAAC"}
|