@baseplate-dev/fastify-generators 0.6.3 → 0.6.5

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.
Files changed (130) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/constants/fastify-packages.d.ts +3 -3
  3. package/dist/constants/fastify-packages.js +3 -3
  4. package/dist/generators/auth/auth-roles/auth-roles.generator.d.ts +1 -0
  5. package/dist/generators/auth/auth-roles/auth-roles.generator.d.ts.map +1 -1
  6. package/dist/generators/auth/auth-roles/auth-roles.generator.js +5 -1
  7. package/dist/generators/auth/auth-roles/auth-roles.generator.js.map +1 -1
  8. package/dist/generators/auth/auth-roles/templates/module/constants/auth-roles.constants.ts +4 -3
  9. package/dist/generators/pothos/pothos-prisma-enum/pothos-prisma-enum.generator.d.ts +1 -0
  10. package/dist/generators/pothos/pothos-prisma-enum/pothos-prisma-enum.generator.d.ts.map +1 -1
  11. package/dist/generators/pothos/pothos-prisma-enum/pothos-prisma-enum.generator.js +11 -2
  12. package/dist/generators/pothos/pothos-prisma-enum/pothos-prisma-enum.generator.js.map +1 -1
  13. package/dist/generators/prisma/_shared/build-data-helpers/build-schema-fragments.d.ts +47 -0
  14. package/dist/generators/prisma/_shared/build-data-helpers/build-schema-fragments.d.ts.map +1 -0
  15. package/dist/generators/prisma/_shared/build-data-helpers/build-schema-fragments.js +56 -0
  16. package/dist/generators/prisma/_shared/build-data-helpers/build-schema-fragments.js.map +1 -0
  17. package/dist/generators/prisma/_shared/build-data-helpers/build-transform-operation-parts.d.ts +71 -0
  18. package/dist/generators/prisma/_shared/build-data-helpers/build-transform-operation-parts.d.ts.map +1 -0
  19. package/dist/generators/prisma/_shared/build-data-helpers/build-transform-operation-parts.js +153 -0
  20. package/dist/generators/prisma/_shared/build-data-helpers/build-transform-operation-parts.js.map +1 -0
  21. package/dist/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.d.ts +46 -0
  22. package/dist/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.d.ts.map +1 -0
  23. package/dist/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.js +44 -0
  24. package/dist/generators/prisma/_shared/build-data-helpers/generate-authorization-statements.js.map +1 -0
  25. package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.d.ts +6 -0
  26. package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.d.ts.map +1 -1
  27. package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.js +13 -1
  28. package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.js.map +1 -1
  29. package/dist/generators/prisma/_shared/build-data-helpers/generate-where-type.d.ts +24 -0
  30. package/dist/generators/prisma/_shared/build-data-helpers/generate-where-type.d.ts.map +1 -0
  31. package/dist/generators/prisma/_shared/build-data-helpers/generate-where-type.js +49 -0
  32. package/dist/generators/prisma/_shared/build-data-helpers/generate-where-type.js.map +1 -0
  33. package/dist/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.d.ts +1 -4
  34. package/dist/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.d.ts.map +1 -1
  35. package/dist/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.js +10 -2
  36. package/dist/generators/prisma/_shared/field-definition-generators/generate-scalar-input-field.js.map +1 -1
  37. package/dist/generators/prisma/_shared/field-definition-generators/types.d.ts +47 -1
  38. package/dist/generators/prisma/_shared/field-definition-generators/types.d.ts.map +1 -1
  39. package/dist/generators/prisma/data-utils/data-utils.generator.d.ts +17 -74
  40. package/dist/generators/prisma/data-utils/data-utils.generator.d.ts.map +1 -1
  41. package/dist/generators/prisma/data-utils/generated/index.d.ts +50 -145
  42. package/dist/generators/prisma/data-utils/generated/index.d.ts.map +1 -1
  43. package/dist/generators/prisma/data-utils/generated/template-paths.d.ts +5 -6
  44. package/dist/generators/prisma/data-utils/generated/template-paths.d.ts.map +1 -1
  45. package/dist/generators/prisma/data-utils/generated/template-paths.js +5 -6
  46. package/dist/generators/prisma/data-utils/generated/template-paths.js.map +1 -1
  47. package/dist/generators/prisma/data-utils/generated/template-renderers.d.ts +0 -21
  48. package/dist/generators/prisma/data-utils/generated/template-renderers.d.ts.map +1 -1
  49. package/dist/generators/prisma/data-utils/generated/template-renderers.js +1 -7
  50. package/dist/generators/prisma/data-utils/generated/template-renderers.js.map +1 -1
  51. package/dist/generators/prisma/data-utils/generated/ts-import-providers.d.ts +51 -159
  52. package/dist/generators/prisma/data-utils/generated/ts-import-providers.d.ts.map +1 -1
  53. package/dist/generators/prisma/data-utils/generated/ts-import-providers.js +32 -64
  54. package/dist/generators/prisma/data-utils/generated/ts-import-providers.js.map +1 -1
  55. package/dist/generators/prisma/data-utils/generated/typed-templates.d.ts +66 -142
  56. package/dist/generators/prisma/data-utils/generated/typed-templates.d.ts.map +1 -1
  57. package/dist/generators/prisma/data-utils/generated/typed-templates.js +47 -98
  58. package/dist/generators/prisma/data-utils/generated/typed-templates.js.map +1 -1
  59. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/define-transformer.ts +130 -0
  60. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/execute-transform-plan.ts +108 -0
  61. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/nested-transformers.ts +364 -0
  62. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/prepare-transformers.ts +73 -0
  63. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/prisma-types.ts +6 -83
  64. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/transformer-types.ts +118 -0
  65. package/dist/generators/prisma/prisma-authorizer-utils/generated/index.d.ts +34 -106
  66. package/dist/generators/prisma/prisma-authorizer-utils/generated/index.d.ts.map +1 -1
  67. package/dist/generators/prisma/prisma-authorizer-utils/generated/template-renderers.d.ts +17 -53
  68. package/dist/generators/prisma/prisma-authorizer-utils/generated/template-renderers.d.ts.map +1 -1
  69. package/dist/generators/prisma/prisma-authorizer-utils/generated/typed-templates.d.ts +34 -106
  70. package/dist/generators/prisma/prisma-authorizer-utils/generated/typed-templates.d.ts.map +1 -1
  71. package/dist/generators/prisma/prisma-authorizer-utils/prisma-authorizer-utils.generator.d.ts +17 -53
  72. package/dist/generators/prisma/prisma-authorizer-utils/prisma-authorizer-utils.generator.d.ts.map +1 -1
  73. package/dist/generators/prisma/prisma-authorizer-utils/templates/src/utils/authorizers.ts +11 -11
  74. package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.d.ts +39 -49
  75. package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.d.ts.map +1 -1
  76. package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.js +82 -45
  77. package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.js.map +1 -1
  78. package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.d.ts +39 -52
  79. package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.d.ts.map +1 -1
  80. package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.js +48 -32
  81. package/dist/generators/prisma/prisma-data-delete/prisma-data-delete.generator.js.map +1 -1
  82. package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.d.ts +16 -2
  83. package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.d.ts.map +1 -1
  84. package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.js +282 -138
  85. package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.js.map +1 -1
  86. package/dist/generators/prisma/prisma-data-nested-field/prisma-data-nested-field.generator.d.ts +19 -55
  87. package/dist/generators/prisma/prisma-data-nested-field/prisma-data-nested-field.generator.d.ts.map +1 -1
  88. package/dist/generators/prisma/prisma-data-nested-field/prisma-data-nested-field.generator.js +18 -4
  89. package/dist/generators/prisma/prisma-data-nested-field/prisma-data-nested-field.generator.js.map +1 -1
  90. package/dist/generators/prisma/prisma-data-service/prisma-data-service.generator.d.ts +37 -92
  91. package/dist/generators/prisma/prisma-data-service/prisma-data-service.generator.d.ts.map +1 -1
  92. package/dist/generators/prisma/prisma-data-service/prisma-data-service.generator.js +86 -29
  93. package/dist/generators/prisma/prisma-data-service/prisma-data-service.generator.js.map +1 -1
  94. package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.d.ts +40 -52
  95. package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.d.ts.map +1 -1
  96. package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.js +102 -49
  97. package/dist/generators/prisma/prisma-data-update/prisma-data-update.generator.js.map +1 -1
  98. package/dist/generators/prisma/prisma-query-filter-utils/generated/index.d.ts +51 -159
  99. package/dist/generators/prisma/prisma-query-filter-utils/generated/index.d.ts.map +1 -1
  100. package/dist/generators/prisma/prisma-query-filter-utils/generated/template-renderers.d.ts +17 -53
  101. package/dist/generators/prisma/prisma-query-filter-utils/generated/template-renderers.d.ts.map +1 -1
  102. package/dist/generators/prisma/prisma-query-filter-utils/generated/typed-templates.d.ts +68 -212
  103. package/dist/generators/prisma/prisma-query-filter-utils/generated/typed-templates.d.ts.map +1 -1
  104. package/dist/generators/prisma/prisma-query-filter-utils/prisma-query-filter-utils.generator.d.ts +17 -53
  105. package/dist/generators/prisma/prisma-query-filter-utils/prisma-query-filter-utils.generator.d.ts.map +1 -1
  106. package/dist/generators/prisma/prisma-relation-field/prisma-relation-field.generator.js +1 -1
  107. package/dist/generators/prisma/prisma-relation-field/prisma-relation-field.generator.js.map +1 -1
  108. package/dist/writers/prisma-schema/fields.d.ts +5 -1
  109. package/dist/writers/prisma-schema/fields.d.ts.map +1 -1
  110. package/dist/writers/prisma-schema/fields.js +8 -2
  111. package/dist/writers/prisma-schema/fields.js.map +1 -1
  112. package/package.json +8 -8
  113. package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.d.ts +0 -20
  114. package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.d.ts.map +0 -1
  115. package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.js +0 -28
  116. package/dist/generators/prisma/_shared/build-data-helpers/generate-authorize-fragment.js.map +0 -1
  117. package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.d.ts +0 -130
  118. package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.d.ts.map +0 -1
  119. package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.js +0 -221
  120. package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.js.map +0 -1
  121. package/dist/generators/prisma/_shared/build-data-helpers/index.d.ts +0 -4
  122. package/dist/generators/prisma/_shared/build-data-helpers/index.d.ts.map +0 -1
  123. package/dist/generators/prisma/_shared/build-data-helpers/index.js +0 -4
  124. package/dist/generators/prisma/_shared/build-data-helpers/index.js.map +0 -1
  125. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/commit-operations.ts +0 -366
  126. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/compose-operations.ts +0 -131
  127. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/field-definitions.ts +0 -777
  128. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/field-utils.ts +0 -201
  129. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/prisma-utils.ts +0 -90
  130. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/types.ts +0 -721
@@ -1,168 +1,312 @@
1
- import { TsCodeUtils, tsImportBuilder, tsTemplate, tsTemplateWithImports, } from '@baseplate-dev/core-generators';
1
+ import { TsCodeUtils, tsTemplate } from '@baseplate-dev/core-generators';
2
2
  import { lowercaseFirstChar, quot, uppercaseFirstChar, } from '@baseplate-dev/utils';
3
- import { generateRelationBuildData } from '../_shared/build-data-helpers/generate-relation-build-data.js';
3
+ import { buildNestedSchemaFragments } from '../_shared/build-data-helpers/build-schema-fragments.js';
4
+ import { buildTransformOperationParts } from '../_shared/build-data-helpers/build-transform-operation-parts.js';
5
+ import { generateExistingItemWhere } from '../_shared/build-data-helpers/generate-where-type.js';
4
6
  /**
5
- * Creates a where unique function for parent model config.
6
- * Generates: (parentModel) => ({ id: parentModel.id })
7
+ * Creates a compareItem function for one-to-many relations.
8
+ * Matches input items to existing items by their unique key fields.
7
9
  *
8
- * @param model - The parent Prisma model
9
- * @param argName - The argument name for the function (default: 'value')
10
- * @returns TypeScript code fragment for the where unique function
11
- */
12
- function createPrismaWhereUniqueFunction(model, argName = 'value') {
13
- const primaryKeys = model.idFields;
14
- if (!primaryKeys) {
15
- throw new Error(`Primary keys on model ${model.name} are required to generate where unique function`);
16
- }
17
- return tsTemplate `(${argName}) => ${TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(primaryKeys.map((k) => [k, `${argName}.${k}`])), { wrapWithParenthesis: true })}`;
18
- }
19
- /**
20
- * Creates a where unique function for one-to-one nested relations.
21
- * Maps parent model fields to nested model's unique constraint based on relation field mapping.
10
+ * For models with simple ID:
11
+ * Generates: (input, existing) => input.id === existing.id
22
12
  *
23
- * For example, UserProfile.userId unique references User.id:
24
- * Generates: (parentModel) => ({ userId: parentModel.id })
25
- *
26
- * @param relation - The relation field from nested model to parent
27
- * @param nestedModel - The nested Prisma model
28
- * @returns TypeScript code fragment for the where unique function
13
+ * For composite keys:
14
+ * Generates: (input, existing) => input.role === existing.role
15
+ * (only compares the input-provided portion of the key)
29
16
  */
30
- function createOneToOneWhereUniqueFunction(relation, nestedModel) {
17
+ function createCompareItemFragment(nestedModel, relation, inputFieldNames) {
18
+ const { idFields } = nestedModel;
19
+ if (!idFields || idFields.length === 0)
20
+ return undefined;
31
21
  const relationFields = relation.fields ?? [];
32
- const referencedFields = relation.references ?? [];
33
- if (relationFields.length === 0 || referencedFields.length === 0) {
34
- throw new Error(`Relation ${relation.name} on model ${nestedModel.name} must have fields and references defined`);
35
- }
36
- if (relationFields.length !== referencedFields.length) {
37
- throw new Error(`Relation ${relation.name} fields and references must have the same length`);
38
- }
39
- // Map parent model fields to nested model fields
40
- // E.g., { userId: parentModel.id } for UserProfile -> User relation
41
- const whereUniqueObject = Object.fromEntries(relationFields.map((relationField, index) => {
42
- const referencedField = referencedFields[index];
43
- return [relationField, `parentModel.${referencedField}`];
44
- }));
45
- return tsTemplate `(parentModel) => ${TsCodeUtils.mergeFragmentsAsObject(whereUniqueObject, { wrapWithParenthesis: true })}`;
22
+ // Input ID fields = ID fields that come from user input (not relation FK)
23
+ const inputIdFields = idFields.filter((f) => inputFieldNames.includes(f) && !relationFields.includes(f));
24
+ if (inputIdFields.length === 0)
25
+ return undefined;
26
+ const comparisons = inputIdFields.map((field) => `input.${field} === existing.${field}`);
27
+ return tsTemplate `(input, existing) => ${comparisons.join(' && ')}`;
46
28
  }
47
29
  /**
48
- * Creates a where unique function for one-to-many nested relations.
49
- * Combines input fields with parent model fields to form a composite unique constraint.
50
- *
51
- * For example, UserRole with @@id([userId, role]) where role is in input:
52
- * Generates: (input, parentModel) => ({ userId_role: { userId: parentModel.id, role: input.role } })
53
- *
54
- * For simple cases like UserImage with just id in input:
55
- * Generates: (input) => ({ id: input.id })
56
- *
57
- * @param nestedModel - The nested Prisma model
58
- * @param relation - The relation field from nested model to parent
59
- * @param inputFieldNames - Field names that are in the input
60
- * @param parentModel - The parent Prisma model
61
- * @returns TypeScript code fragment for the where unique function
30
+ * Generates a deleteRemoved function for one-to-many relations.
31
+ * Uses Prisma deleteMany with OR clause.
62
32
  */
63
- function createOneToManyWhereUniqueFunction(nestedModel, relation, inputFieldNames) {
33
+ function createDeleteRemovedFragment(nestedModel, relation) {
34
+ const modelVar = lowercaseFirstChar(nestedModel.name);
64
35
  const { idFields } = nestedModel;
65
36
  if (!idFields || idFields.length === 0) {
66
- throw new Error(`Nested model ${nestedModel.name} must have id fields for one-to-many relation`);
37
+ throw new Error(`Nested model ${nestedModel.name} must have id fields for deleteRemoved`);
67
38
  }
68
39
  const relationFields = relation.fields ?? [];
69
- const referencedFields = relation.references ?? [];
70
- // Build the where unique object, determining if each field comes from input or parent
71
- const whereFields = {};
72
- for (const idField of idFields) {
73
- // Check if this field is a relation field (comes from parent)
74
- const relationFieldIndex = relationFields.indexOf(idField);
75
- if (relationFieldIndex !== -1) {
76
- // Field comes from parent model via relation
77
- const referencedField = referencedFields[relationFieldIndex];
78
- whereFields[idField] = `parentModel.${referencedField}`;
79
- }
80
- else if (inputFieldNames.includes(idField)) {
81
- // Field comes from input
82
- whereFields[idField] = `input.${idField}`;
83
- }
84
- else {
85
- throw new Error(`ID field ${idField} of ${nestedModel.name} is not in input fields or relation fields`);
86
- }
40
+ // For simple single ID (not part of relation FK)
41
+ if (idFields.length === 1 && !relationFields.includes(idFields[0])) {
42
+ return tsTemplate `async (tx, removedItems) => {
43
+ await tx.${modelVar}.deleteMany({
44
+ where: { OR: removedItems.map((i) => ({ ${idFields[0]}: i.${idFields[0]} })) },
45
+ });
46
+ }`;
87
47
  }
88
- const inputIdFields = idFields.filter((f) => inputFieldNames.includes(f));
89
- // Check if all fields come from input (no parent dependency)
90
- const allFromInput = idFields.length === inputIdFields.length;
91
- // Generate the where unique object
92
- const whereUniqueObj = TsCodeUtils.mergeFragmentsAsObject(whereFields, {
93
- wrapWithParenthesis: true,
48
+ // For composite keys, map all ID fields
49
+ const mapFields = idFields.map((f) => `${f}: i.${f}`).join(', ');
50
+ return tsTemplate `async (tx, removedItems) => {
51
+ await tx.${modelVar}.deleteMany({
52
+ where: { OR: removedItems.map((i) => ({ ${mapFields} })) },
94
53
  });
95
- // Create a conditional for whether the input field sugggests the object has a prior value
96
- const hasExistingConditional = inputIdFields
97
- .map((field) => `input.${field}`)
98
- .join('&&');
99
- // For composite keys, wrap in composite key syntax
100
- if (idFields.length > 1) {
101
- const compositeKey = idFields.join('_');
102
- const compositeWhereUnique = TsCodeUtils.mergeFragmentsAsObject({
103
- [compositeKey]: whereUniqueObj,
104
- }, { wrapWithParenthesis: true });
105
- const conditionalWhereUnique = tsTemplate `${hasExistingConditional} ? ${compositeWhereUnique} : undefined`;
106
- return allFromInput
107
- ? tsTemplate `(input) => ${conditionalWhereUnique}`
108
- : tsTemplate `(input, parentModel) => ${conditionalWhereUnique}`;
109
- }
110
- const conditionalWhereUniqueObj = tsTemplate `${hasExistingConditional} ? ${whereUniqueObj} : undefined`;
111
- // For single field, just return the field mapping
112
- return allFromInput
113
- ? tsTemplate `(input) => ${conditionalWhereUniqueObj}`
114
- : tsTemplate `(input, parentModel) => ${conditionalWhereUniqueObj}`;
54
+ }`;
55
+ }
56
+ /**
57
+ * Generates a processDelete function for one-to-one relations.
58
+ * Uses Prisma deleteMany (idempotent) based on parent ID.
59
+ */
60
+ function createProcessDeleteFragment(nestedModel, reverseRelation) {
61
+ const modelVar = lowercaseFirstChar(nestedModel.name);
62
+ const reverseFields = reverseRelation.fields ?? [];
63
+ const reverseRefs = reverseRelation.references ?? [];
64
+ // Build the where clause from the relation fields
65
+ const whereEntries = reverseFields.map((field, i) => {
66
+ const refField = reverseRefs[i];
67
+ return `${field}: parent.${refField}`;
68
+ });
69
+ return tsTemplate `() => async (tx, parent) => {
70
+ await tx.${modelVar}.deleteMany({ where: { ${whereEntries.join(', ')} } });
71
+ }`;
72
+ }
73
+ /**
74
+ * Builds the parent connect fragment used in processCreate data.
75
+ * Generates: `relationName: { connect: { field1: parent.field1, ... } }`
76
+ */
77
+ function buildParentConnectEntry(reverseRelation) {
78
+ const reverseFields = reverseRelation.fields ?? [];
79
+ const reverseRefs = reverseRelation.references ?? [];
80
+ const connectEntries = reverseFields.map((_, i) => {
81
+ const refField = reverseRefs[i];
82
+ return `${refField}: parent.${refField}`;
83
+ });
84
+ return {
85
+ key: reverseRelation.name,
86
+ value: tsTemplate `{ connect: { ${connectEntries.join(', ')} } }`,
87
+ };
88
+ }
89
+ /**
90
+ * Generates processCreate and processUpdate for the SIMPLE path (no sub-transformers).
91
+ * Uses the shared buildTransformOperationParts for FK handling.
92
+ */
93
+ function createSimpleProcessFunctions(input, reverseRelation) {
94
+ const { nestedModel, nestedFields, dataUtilsImports } = input;
95
+ const modelVar = lowercaseFirstChar(nestedModel.name);
96
+ const parentConnect = buildParentConnectEntry(reverseRelation);
97
+ const whereExpr = generateExistingItemWhere(nestedModel);
98
+ // Use shared helper for field categorization, destructuring, and data object building
99
+ const createParts = buildTransformOperationParts({
100
+ fields: nestedFields,
101
+ prismaModel: nestedModel,
102
+ dataUtilsImports,
103
+ operationType: 'create',
104
+ inputVarName: 'itemInput',
105
+ additionalDataEntries: { [parentConnect.key]: parentConnect.value },
106
+ });
107
+ const updateParts = buildTransformOperationParts({
108
+ fields: nestedFields,
109
+ prismaModel: nestedModel,
110
+ dataUtilsImports,
111
+ operationType: 'update',
112
+ inputVarName: 'itemInput',
113
+ existingItemVarName: 'existingItem',
114
+ });
115
+ const processCreateFragment = createParts.hasDestructure
116
+ ? tsTemplate `(itemInput) => async (tx, parent) => {
117
+ ${createParts.inputDestructureFragment}
118
+ await tx.${modelVar}.create({
119
+ data: ${createParts.prismaDataFragment},
120
+ });
121
+ }`
122
+ : tsTemplate `(itemInput) => async (tx, parent) => {
123
+ await tx.${modelVar}.create({
124
+ data: ${createParts.prismaDataFragment},
125
+ });
126
+ }`;
127
+ const processUpdateFragment = updateParts.hasDestructure
128
+ ? tsTemplate `(itemInput, existingItem) => async (tx) => {
129
+ ${updateParts.inputDestructureFragment}
130
+ await tx.${modelVar}.update({
131
+ where: ${whereExpr},
132
+ data: ${updateParts.prismaDataFragment},
133
+ });
134
+ }`
135
+ : tsTemplate `(itemInput, existingItem) => async (tx) => {
136
+ await tx.${modelVar}.update({
137
+ where: ${whereExpr},
138
+ data: ${updateParts.prismaDataFragment},
139
+ });
140
+ }`;
141
+ return { processCreateFragment, processUpdateFragment };
115
142
  }
116
- function writeParentModelConfigFragment({ parentModel, dataUtilsImports, }) {
117
- const whereUniqueFunction = createPrismaWhereUniqueFunction(parentModel);
118
- return tsTemplate `const parentModel = ${dataUtilsImports.createParentModelConfig.fragment()}(${quot(lowercaseFirstChar(parentModel.name))}, ${whereUniqueFunction})`;
143
+ /**
144
+ * Generates processCreate and processUpdate for the TRANSFORM path (has sub-transformers).
145
+ * Uses prepareTransformers + executeTransformPlan inside the deferred operations.
146
+ */
147
+ function createTransformProcessFunctions(input, reverseRelation) {
148
+ const { nestedModel, nestedFields, dataUtilsImports, nestedTransformersFragment, } = input;
149
+ const modelVar = lowercaseFirstChar(nestedModel.name);
150
+ const parentConnect = buildParentConnectEntry(reverseRelation);
151
+ const whereExpr = generateExistingItemWhere(nestedModel);
152
+ if (!nestedTransformersFragment) {
153
+ throw new Error(`Nested model ${nestedModel.name} has sub-transform-fields but no transformers fragment. ` +
154
+ `Ensure the nested model has its own prisma-data-service.`);
155
+ }
156
+ // Build operation parts for create
157
+ const createParts = buildTransformOperationParts({
158
+ fields: nestedFields,
159
+ prismaModel: nestedModel,
160
+ dataUtilsImports,
161
+ operationType: 'create',
162
+ inputVarName: 'itemInput',
163
+ transformersVarFragment: nestedTransformersFragment,
164
+ additionalDataEntries: { [parentConnect.key]: parentConnect.value },
165
+ });
166
+ // Build operation parts for update
167
+ // Use loadExistingVarName: 'existingItem' because in processUpdate,
168
+ // loadExisting should reference the existing nested item, not the parent's 'where'
169
+ const updateParts = buildTransformOperationParts({
170
+ fields: nestedFields,
171
+ prismaModel: nestedModel,
172
+ dataUtilsImports,
173
+ operationType: 'update',
174
+ inputVarName: 'itemInput',
175
+ transformersVarFragment: nestedTransformersFragment,
176
+ existingItemVarName: 'existingItem',
177
+ loadExistingVarName: 'existingItem',
178
+ });
179
+ // We only enter this path when hasTransformFields is true
180
+ // and we pass transformersVarFragment, so these will always be defined
181
+ if (!createParts.transformersObjectFragment ||
182
+ !updateParts.transformersObjectFragment) {
183
+ throw new Error(`Nested model ${nestedModel.name} has sub-transform-fields but transformer fragments were not generated.`);
184
+ }
185
+ const createTransformers = createParts.transformersObjectFragment;
186
+ const updateTransformers = updateParts.transformersObjectFragment;
187
+ // processCreate: prepare transformers then execute inside deferred
188
+ const processCreateFragment = tsTemplate `(itemInput, { serviceContext }) => async (tx, parent) => {
189
+ ${createParts.inputDestructureFragment}
190
+
191
+ const plan = await ${dataUtilsImports.prepareTransformers.fragment()}({
192
+ transformers: ${createTransformers},
193
+ serviceContext,
194
+ });
195
+
196
+ await ${dataUtilsImports.executeTransformPlan.fragment()}(plan, {
197
+ tx,
198
+ execute: async (${createParts.hasTransformFields ? '{ transformed }' : ''}) =>
199
+ tx.${modelVar}.create({
200
+ data: ${createParts.prismaDataFragment},
201
+ }),
202
+ });
203
+ }`;
204
+ // processUpdate: prepare transformers then execute inside deferred
205
+ const processUpdateFragment = tsTemplate `(itemInput, existingItem, { serviceContext }) => async (tx) => {
206
+ ${updateParts.inputDestructureFragment}
207
+
208
+ const plan = await ${dataUtilsImports.prepareTransformers.fragment()}({
209
+ transformers: ${updateTransformers},
210
+ serviceContext,
211
+ });
212
+
213
+ await ${dataUtilsImports.executeTransformPlan.fragment()}(plan, {
214
+ tx,
215
+ execute: async (${updateParts.hasTransformFields ? '{ transformed }' : ''}) =>
216
+ tx.${modelVar}.update({
217
+ where: ${whereExpr},
218
+ data: ${updateParts.prismaDataFragment},
219
+ }),
220
+ });
221
+ }`;
222
+ return { processCreateFragment, processUpdateFragment };
119
223
  }
224
+ /**
225
+ * Writes a nested field transformer definition (oneToOneTransformer or oneToManyTransformer).
226
+ *
227
+ * Generates:
228
+ * - schemaFragment: Zod schema for the fieldSchemas object
229
+ * - transformer.fragment: oneToOneTransformer({...}) or oneToManyTransformer({...})
230
+ *
231
+ * For nested entities with sub-transform-fields (e.g., file fields), generates
232
+ * processCreate/processUpdate that use prepareTransformers + executeTransformPlan.
233
+ */
120
234
  export function writePrismaDataNestedField(input) {
121
- const { parentModel, nestedModel, relation, nestedFields, dataServiceFieldsFragment, dataUtilsImports, } = input;
122
- const parentModelConfigFrag = writeParentModelConfigFragment(input);
123
- const fieldConstructor = relation.isList
124
- ? dataUtilsImports.nestedOneToManyField
125
- : dataUtilsImports.nestedOneToOneField;
235
+ const { parentModel, nestedModel, relation, nestedFields, dataUtilsImports, nestedFieldSchemasFragment, allDataServiceFieldNames, } = input;
126
236
  const nestedFieldNames = nestedFields.map((f) => f.name);
127
- const pickedFieldsFragment = dataServiceFieldsFragment
128
- ? tsTemplateWithImports([
129
- tsImportBuilder(['pick']).from('es-toolkit'),
130
- ]) `pick(${dataServiceFieldsFragment}, ${JSON.stringify(nestedFieldNames)} as const)`
131
- : TsCodeUtils.mergeFragmentsAsObject(Object.fromEntries(nestedFields.map((f) => [f.name, f.fragment])));
237
+ // Build schema using shared utility (handles fieldSchemas import, subset pick, and inline)
238
+ const { itemSchema, schemaFragment } = buildNestedSchemaFragments({
239
+ fields: nestedFields,
240
+ fieldNames: nestedFieldNames,
241
+ isList: relation.isList,
242
+ nestedFieldSchemasFragment,
243
+ allDataServiceFieldNames,
244
+ });
245
+ // Find reverse relation (nested model → parent model)
132
246
  const reverseRelation = nestedModel.fields.find((f) => f.type === 'relation' &&
133
247
  f.relationName === relation.relationName &&
134
248
  f.modelType === parentModel.name);
135
249
  if (!reverseRelation) {
136
250
  throw new Error(`Reverse relation ${relation.name} not found on model ${nestedModel.name}`);
137
251
  }
138
- // Generate the appropriate getWhereUnique function based on relation type
139
- const getWhereUniqueFragment = relation.isList
140
- ? createOneToManyWhereUniqueFunction(nestedModel, reverseRelation, nestedFieldNames)
141
- : createOneToOneWhereUniqueFunction(reverseRelation, nestedModel);
142
- const buildDataResult = generateRelationBuildData({
143
- prismaModel: nestedModel,
144
- inputFieldNames: nestedFieldNames,
145
- dataUtilsImports,
146
- });
147
- const fieldOptions = TsCodeUtils.mergeFragmentsAsObject({
148
- buildCreateData: buildDataResult.buildCreateDataFragment,
149
- buildUpdateData: buildDataResult.buildUpdateDataFragment,
150
- fields: pickedFieldsFragment,
151
- getWhereUnique: getWhereUniqueFragment,
152
- model: quot(lowercaseFirstChar(nestedModel.name)),
153
- parentModel: 'parentModel',
154
- relationName: quot(reverseRelation.name),
155
- });
156
- const fragment = tsTemplateWithImports([], {
157
- hoistedFragments: [
158
- { ...parentModelConfigFrag, key: 'parent-model-config' },
159
- ],
160
- }) `
161
- ${fieldConstructor.fragment()}(${fieldOptions})
162
- `;
252
+ // Choose process function generation based on whether nested has sub-transformers
253
+ const hasSubTransformers = nestedFields.some((f) => f.isTransformField);
254
+ const { processCreateFragment, processUpdateFragment } = hasSubTransformers
255
+ ? createTransformProcessFunctions(input, reverseRelation)
256
+ : createSimpleProcessFunctions(input, reverseRelation);
257
+ let transformerFragment;
258
+ if (relation.isList) {
259
+ // oneToManyTransformer
260
+ const compareItemFragment = createCompareItemFragment(nestedModel, reverseRelation, nestedFieldNames);
261
+ const deleteRemovedFragment = createDeleteRemovedFragment(nestedModel, reverseRelation);
262
+ const configEntries = {
263
+ parentModel: quot(lowercaseFirstChar(parentModel.name)),
264
+ model: quot(lowercaseFirstChar(nestedModel.name)),
265
+ schema: itemSchema,
266
+ processCreate: processCreateFragment,
267
+ deleteRemoved: deleteRemovedFragment,
268
+ };
269
+ if (compareItemFragment) {
270
+ configEntries.compareItem = compareItemFragment;
271
+ }
272
+ configEntries.processUpdate = processUpdateFragment;
273
+ const configObj = TsCodeUtils.mergeFragmentsAsObject(configEntries);
274
+ transformerFragment = tsTemplate `${dataUtilsImports.oneToManyTransformer.fragment()}(${configObj})`;
275
+ }
276
+ else {
277
+ // oneToOneTransformer
278
+ const processDeleteFragment = createProcessDeleteFragment(nestedModel, reverseRelation);
279
+ const configEntries = {
280
+ parentModel: quot(lowercaseFirstChar(parentModel.name)),
281
+ model: quot(lowercaseFirstChar(nestedModel.name)),
282
+ schema: itemSchema,
283
+ processCreate: processCreateFragment,
284
+ processUpdate: processUpdateFragment,
285
+ processDelete: processDeleteFragment,
286
+ };
287
+ const configObj = TsCodeUtils.mergeFragmentsAsObject(configEntries);
288
+ transformerFragment = tsTemplate `${dataUtilsImports.oneToOneTransformer.fragment()}(${configObj})`;
289
+ }
290
+ // Precompute values needed by the forUpdate callback
291
+ const nestedModelVar = lowercaseFirstChar(nestedModel.name);
292
+ const reverseFields = reverseRelation.fields ?? [];
293
+ const reverseRefs = reverseRelation.references ?? [];
294
+ const findMethod = relation.isList ? 'findMany' : 'findUnique';
163
295
  return {
164
296
  name: relation.name,
165
- fragment,
297
+ schemaFragment,
298
+ transformer: {
299
+ fragment: transformerFragment,
300
+ needsExistingItem: false,
301
+ buildForCreateEntry: ({ transformersVarFragment }) => tsTemplate `${transformersVarFragment}.${relation.name}.forCreate(${relation.name})`,
302
+ buildForUpdateEntry: ({ transformersVarFragment, loadExistingVarName, }) => {
303
+ const whereClause = reverseFields
304
+ .map((field, i) => `${field}: ${loadExistingVarName}.${reverseRefs[i]}`)
305
+ .join(', ');
306
+ return tsTemplate `${transformersVarFragment}.${relation.name}.forUpdate(${relation.name}, { loadExisting: () => prisma.${nestedModelVar}.${findMethod}({ where: { ${whereClause} } }) })`;
307
+ },
308
+ },
309
+ isTransformField: true,
166
310
  outputDtoField: {
167
311
  name: relation.name,
168
312
  type: 'nested',
@@ -1 +1 @@
1
- {"version":3,"file":"nested-field-writer.js","sourceRoot":"","sources":["../../../../src/generators/prisma/prisma-data-nested-field/nested-field-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nested-field-writer.js","sourceRoot":"","sources":["../../../../src/generators/prisma/prisma-data-nested-field/nested-field-writer.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ export declare const prismaDataNestedFieldGenerator: import("@baseplate-dev/sync
12
12
  nestedPrismaDataServiceSetup: import("@baseplate-dev/sync").GeneratorTask<any, {
13
13
  prismaDataServiceSetup: import("@baseplate-dev/sync").ProviderDependency<({
14
14
  additionalModelFieldNames: import("@baseplate-dev/utils").ArrayContainer<string>;
15
- virtualInputFields: import("@baseplate-dev/utils").NamedArrayFieldContainer<import("../_shared/field-definition-generators/types.js").InputFieldDefinitionOutput>;
15
+ transformFields: import("@baseplate-dev/utils").NamedArrayFieldContainer<import("../_shared/field-definition-generators/types.js").InputFieldDefinitionOutput>;
16
16
  } & {
17
17
  modelName: string;
18
18
  }) | undefined>;
@@ -21,93 +21,57 @@ export declare const prismaDataNestedFieldGenerator: import("@baseplate-dev/sync
21
21
  prismaOutput: import("@baseplate-dev/sync").ProviderType<import("../prisma/prisma.generator.js").PrismaOutputProvider>;
22
22
  prismaDataServiceSetup: import("@baseplate-dev/sync").ProviderType<{
23
23
  additionalModelFieldNames: import("@baseplate-dev/utils").ArrayContainer<string>;
24
- virtualInputFields: import("@baseplate-dev/utils").NamedArrayFieldContainer<import("../_shared/field-definition-generators/types.js").InputFieldDefinitionOutput>;
24
+ transformFields: import("@baseplate-dev/utils").NamedArrayFieldContainer<import("../_shared/field-definition-generators/types.js").InputFieldDefinitionOutput>;
25
25
  } & {
26
26
  modelName: string;
27
27
  }>;
28
28
  nestedPrismaDataService: import("@baseplate-dev/sync").ProviderDependency<import("../prisma-data-service/prisma-data-service.generator.js").PrismaDataServiceProvider | undefined>;
29
29
  dataUtilsImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
30
- AnyFieldDefinition: {
30
+ AfterExecuteHook: {
31
31
  isTypeOnly: true;
32
32
  };
33
- AnyOperationHooks: {
33
+ AnyBoundTransformer: {
34
34
  isTypeOnly: true;
35
35
  };
36
- commitCreate: {};
37
- commitDelete: {};
38
- commitUpdate: {};
39
- composeCreate: {};
40
- composeUpdate: {};
41
- createParentModelConfig: {};
42
- DataCreateInput: {
36
+ AnyTransformer: {
43
37
  isTypeOnly: true;
44
38
  };
45
- DataDeleteInput: {
39
+ BoundTransformer: {
46
40
  isTypeOnly: true;
47
41
  };
48
- DataOperationType: {
42
+ DataQuery: {
49
43
  isTypeOnly: true;
50
44
  };
51
- DataUpdateInput: {
45
+ defineTransformer: {};
46
+ executeTransformPlan: {};
47
+ GetResult: {
52
48
  isTypeOnly: true;
53
49
  };
54
- FieldContext: {
50
+ InferTransformed: {
55
51
  isTypeOnly: true;
56
52
  };
57
- FieldDefinition: {
58
- isTypeOnly: true;
59
- };
60
- FieldTransformData: {
61
- isTypeOnly: true;
62
- };
63
- FieldTransformResult: {
64
- isTypeOnly: true;
65
- };
66
- generateCreateSchema: {};
67
- generateUpdateSchema: {};
68
- GetPayload: {
69
- isTypeOnly: true;
70
- };
71
- InferFieldsOutput: {
72
- isTypeOnly: true;
73
- };
74
- InferInput: {
75
- isTypeOnly: true;
76
- };
77
- ModelInclude: {
53
+ MaybePromise: {
78
54
  isTypeOnly: true;
79
55
  };
80
56
  ModelPropName: {
81
57
  isTypeOnly: true;
82
58
  };
83
- nestedOneToManyField: {};
84
- NestedOneToManyFieldConfig: {
85
- isTypeOnly: true;
86
- };
87
- nestedOneToOneField: {};
88
- NestedOneToOneFieldConfig: {
89
- isTypeOnly: true;
90
- };
91
- OperationContext: {
92
- isTypeOnly: true;
93
- };
94
- OperationHooks: {
59
+ oneToManyTransformer: {};
60
+ oneToOneTransformer: {};
61
+ prepareTransformers: {};
62
+ relationHelpers: {};
63
+ Transformer: {
95
64
  isTypeOnly: true;
96
65
  };
97
- ParentModelConfig: {
66
+ TransformerResult: {
98
67
  isTypeOnly: true;
99
68
  };
100
- relationHelpers: {};
101
- scalarField: {};
102
- TransactionalOperationContext: {
69
+ TransformPlan: {
103
70
  isTypeOnly: true;
104
71
  };
105
72
  WhereInput: {
106
73
  isTypeOnly: true;
107
74
  };
108
- WhereUniqueInput: {
109
- isTypeOnly: true;
110
- };
111
75
  }>>;
112
76
  prismaGeneratedImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
113
77
  PrismaClient: {};