@baseplate-dev/fastify-generators 0.5.0 → 0.5.1

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 (64) hide show
  1. package/dist/constants/fastify-packages.d.ts +1 -0
  2. package/dist/constants/fastify-packages.d.ts.map +1 -1
  3. package/dist/constants/fastify-packages.js +1 -0
  4. package/dist/constants/fastify-packages.js.map +1 -1
  5. package/dist/generators/core/app-module-setup/app-module-setup.generator.js +2 -2
  6. package/dist/generators/core/app-module-setup/app-module-setup.generator.js.map +1 -1
  7. package/dist/generators/core/fastify/fastify.generator.js +2 -1
  8. package/dist/generators/core/fastify/fastify.generator.js.map +1 -1
  9. package/dist/generators/core/fastify-cookie-context/fastify-cookie-context.generator.js +1 -1
  10. package/dist/generators/core/fastify-cookie-context/fastify-cookie-context.generator.js.map +1 -1
  11. package/dist/generators/index.d.ts +0 -1
  12. package/dist/generators/index.d.ts.map +1 -1
  13. package/dist/generators/index.js +0 -1
  14. package/dist/generators/index.js.map +1 -1
  15. package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.d.ts.map +1 -1
  16. package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.js +2 -4
  17. package/dist/generators/prisma/_shared/build-data-helpers/generate-operation-callbacks.js.map +1 -1
  18. package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.d.ts +27 -39
  19. package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.d.ts.map +1 -1
  20. package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.js +28 -62
  21. package/dist/generators/prisma/_shared/build-data-helpers/generate-relation-build-data.js.map +1 -1
  22. package/dist/generators/prisma/_shared/crud-method/primary-key-input.d.ts +10 -0
  23. package/dist/generators/prisma/_shared/crud-method/primary-key-input.d.ts.map +1 -1
  24. package/dist/generators/prisma/_shared/crud-method/primary-key-input.js +26 -0
  25. package/dist/generators/prisma/_shared/crud-method/primary-key-input.js.map +1 -1
  26. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/define-operations.ts +139 -75
  27. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/field-definitions.ts +77 -63
  28. package/dist/generators/prisma/data-utils/templates/src/utils/data-operations/prisma-utils.ts +4 -2
  29. package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.d.ts.map +1 -1
  30. package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.js +6 -1
  31. package/dist/generators/prisma/prisma-data-create/prisma-data-create.generator.js.map +1 -1
  32. package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.d.ts.map +1 -1
  33. package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.js +10 -9
  34. package/dist/generators/prisma/prisma-data-nested-field/nested-field-writer.js.map +1 -1
  35. package/package.json +5 -5
  36. package/dist/generators/email/fastify-postmark/fastify-postmark.generator.d.ts +0 -25
  37. package/dist/generators/email/fastify-postmark/fastify-postmark.generator.d.ts.map +0 -1
  38. package/dist/generators/email/fastify-postmark/fastify-postmark.generator.js +0 -66
  39. package/dist/generators/email/fastify-postmark/fastify-postmark.generator.js.map +0 -1
  40. package/dist/generators/email/fastify-postmark/generated/index.d.ts +0 -33
  41. package/dist/generators/email/fastify-postmark/generated/index.d.ts.map +0 -1
  42. package/dist/generators/email/fastify-postmark/generated/index.js +0 -9
  43. package/dist/generators/email/fastify-postmark/generated/index.js.map +0 -1
  44. package/dist/generators/email/fastify-postmark/generated/template-paths.d.ts +0 -12
  45. package/dist/generators/email/fastify-postmark/generated/template-paths.d.ts.map +0 -1
  46. package/dist/generators/email/fastify-postmark/generated/template-paths.js +0 -22
  47. package/dist/generators/email/fastify-postmark/generated/template-paths.js.map +0 -1
  48. package/dist/generators/email/fastify-postmark/generated/template-renderers.d.ts +0 -21
  49. package/dist/generators/email/fastify-postmark/generated/template-renderers.d.ts.map +0 -1
  50. package/dist/generators/email/fastify-postmark/generated/template-renderers.js +0 -39
  51. package/dist/generators/email/fastify-postmark/generated/template-renderers.js.map +0 -1
  52. package/dist/generators/email/fastify-postmark/generated/typed-templates.d.ts +0 -11
  53. package/dist/generators/email/fastify-postmark/generated/typed-templates.d.ts.map +0 -1
  54. package/dist/generators/email/fastify-postmark/generated/typed-templates.js +0 -14
  55. package/dist/generators/email/fastify-postmark/generated/typed-templates.js.map +0 -1
  56. package/dist/generators/email/fastify-postmark/index.d.ts +0 -2
  57. package/dist/generators/email/fastify-postmark/index.d.ts.map +0 -1
  58. package/dist/generators/email/fastify-postmark/index.js +0 -2
  59. package/dist/generators/email/fastify-postmark/index.js.map +0 -1
  60. package/dist/generators/email/fastify-postmark/templates/src/services/postmark.ts +0 -60
  61. package/dist/generators/email/index.d.ts +0 -2
  62. package/dist/generators/email/index.d.ts.map +0 -1
  63. package/dist/generators/email/index.js +0 -2
  64. package/dist/generators/email/index.js.map +0 -1
@@ -66,6 +66,20 @@ export async function invokeHooks<TContext>(
66
66
  await Promise.all(hooks.map((hook) => hook(context)));
67
67
  }
68
68
 
69
+ /**
70
+ * Checks if any hooks are present that could modify data after the initial operation.
71
+ * Used to determine if a re-fetch is needed after operation completes.
72
+ *
73
+ * @param hooks - The hooks object to check
74
+ * @returns true if afterExecute or afterCommit hooks exist
75
+ */
76
+ function hasPostExecuteHooks(hooks: AnyOperationHooks): boolean {
77
+ return (
78
+ (hooks.afterExecute?.length ?? 0) > 0 ||
79
+ (hooks.afterCommit?.length ?? 0) > 0
80
+ );
81
+ }
82
+
69
83
  type FieldDataOrFunction<TField extends AnyFieldDefinition> =
70
84
  | InferFieldOutput<TField>
71
85
  | ((tx: PrismaTransaction) => Promise<InferFieldOutput<TField>>);
@@ -333,6 +347,19 @@ export interface CreateOperationConfig<
333
347
  * Optional hooks for the operation
334
348
  */
335
349
  hooks?: OperationHooks<GetPayload<TModelName>>;
350
+
351
+ /**
352
+ * Function to extract unique identifier from the created result.
353
+ * Required for re-fetching fresh data after hooks modify related records.
354
+ *
355
+ * @example
356
+ * ```typescript
357
+ * getWhereUnique: (result) => ({ id: result.id })
358
+ * ```
359
+ */
360
+ getWhereUnique: (
361
+ result: GetPayload<TModelName>,
362
+ ) => WhereUniqueInput<TModelName>;
336
363
  }
337
364
 
338
365
  /**
@@ -488,49 +515,69 @@ export function defineCreateOperation<
488
515
  ],
489
516
  };
490
517
 
491
- // Execute in transaction
492
- return prisma
493
- .$transaction(async (tx) => {
494
- const txContext: TransactionalOperationContext<
495
- GetPayload<TModelName>,
496
- { hasResult: false }
497
- > = {
498
- ...baseOperationContext,
499
- tx,
500
- };
518
+ // Check if we need to re-fetch after hooks (hooks may modify related records)
519
+ const needsRefetch = hasPostExecuteHooks(allHooks);
501
520
 
502
- // Run beforeExecute hooks
503
- await invokeHooks(allHooks.beforeExecute, txContext);
521
+ // Execute in transaction
522
+ const transactionResult = await prisma.$transaction(async (tx) => {
523
+ const txContext: TransactionalOperationContext<
524
+ GetPayload<TModelName>,
525
+ { hasResult: false }
526
+ > = {
527
+ ...baseOperationContext,
528
+ tx,
529
+ };
530
+
531
+ // Run beforeExecute hooks
532
+ await invokeHooks(allHooks.beforeExecute, txContext);
533
+
534
+ // Run all async create data transformations
535
+ const awaitedFieldsData =
536
+ typeof fieldsData === 'function' ? await fieldsData(tx) : fieldsData;
537
+
538
+ // If re-fetching, don't include relations in initial create
539
+ const createQuery = needsRefetch
540
+ ? ({} as { include: NonNullable<TQueryArgs['include']> })
541
+ : ((query ?? {}) as { include: NonNullable<TQueryArgs['include']> });
542
+
543
+ const result = await config.create({
544
+ tx,
545
+ data: { ...awaitedFieldsData.create, ...preparedData },
546
+ query: createQuery,
547
+ serviceContext: context,
548
+ });
504
549
 
505
- // Run all async create data transformations
506
- const awaitedFieldsData =
507
- typeof fieldsData === 'function' ? await fieldsData(tx) : fieldsData;
550
+ // Run afterExecute hooks
551
+ await invokeHooks(allHooks.afterExecute, {
552
+ ...txContext,
553
+ result,
554
+ });
508
555
 
509
- const result = await config.create({
510
- tx,
511
- data: { ...awaitedFieldsData.create, ...preparedData },
512
- query: (query ?? {}) as {
513
- include: NonNullable<TQueryArgs['include']>;
514
- },
515
- serviceContext: context,
516
- });
556
+ return result;
557
+ });
517
558
 
518
- // Run afterExecute hooks
519
- await invokeHooks(allHooks.afterExecute, {
520
- ...txContext,
521
- result,
522
- });
559
+ // Run afterCommit hooks (outside transaction)
560
+ await invokeHooks(allHooks.afterCommit, {
561
+ ...baseOperationContext,
562
+ result: transactionResult,
563
+ });
523
564
 
524
- return result;
525
- })
526
- .then(async (result) => {
527
- // Run afterCommit hooks (outside transaction)
528
- await invokeHooks(allHooks.afterCommit, {
529
- ...baseOperationContext,
530
- result,
531
- });
532
- return result as GetPayload<TModelName, TQueryArgs>;
565
+ // Re-fetch if hooks existed and query includes relations
566
+ if (needsRefetch && query?.include) {
567
+ const delegate = makeGenericPrismaDelegate(prisma, config.model);
568
+ const freshResult = await delegate.findUnique<TQueryArgs>({
569
+ where: config.getWhereUnique(
570
+ transactionResult as unknown as GetPayload<TModelName>,
571
+ ),
572
+ include: query.include,
533
573
  });
574
+ if (!freshResult) {
575
+ throw new NotFoundError(`${config.model} not found after create`);
576
+ }
577
+ return freshResult as GetPayload<TModelName, TQueryArgs>;
578
+ }
579
+
580
+ return transactionResult as GetPayload<TModelName, TQueryArgs>;
534
581
  };
535
582
  createOperation.$dataSchema = dataSchema;
536
583
  return createOperation;
@@ -809,50 +856,67 @@ export function defineUpdateOperation<
809
856
  ],
810
857
  };
811
858
 
812
- // Execute in transaction
813
- return prisma
814
- .$transaction(async (tx) => {
815
- const txContext: TransactionalOperationContext<
816
- GetPayload<TModelName>,
817
- { hasResult: false }
818
- > = {
819
- ...baseOperationContext,
820
- tx,
821
- };
859
+ // Check if we need to re-fetch after hooks (hooks may modify related records)
860
+ const needsRefetch = hasPostExecuteHooks(allHooks);
822
861
 
823
- // Run beforeExecute hooks
824
- await invokeHooks(allHooks.beforeExecute, txContext);
862
+ // Execute in transaction
863
+ const transactionResult = await prisma.$transaction(async (tx) => {
864
+ const txContext: TransactionalOperationContext<
865
+ GetPayload<TModelName>,
866
+ { hasResult: false }
867
+ > = {
868
+ ...baseOperationContext,
869
+ tx,
870
+ };
871
+
872
+ // Run beforeExecute hooks
873
+ await invokeHooks(allHooks.beforeExecute, txContext);
874
+
875
+ // Run all async update data transformations
876
+ const awaitedFieldsData =
877
+ typeof fieldsData === 'function' ? await fieldsData(tx) : fieldsData;
878
+
879
+ // If re-fetching, don't bother including relations in initial update
880
+ const updateQuery = needsRefetch
881
+ ? ({} as { include: NonNullable<TQueryArgs['include']> })
882
+ : ((query ?? {}) as { include: NonNullable<TQueryArgs['include']> });
883
+
884
+ const result = await config.update({
885
+ tx,
886
+ where,
887
+ data: { ...awaitedFieldsData.update, ...preparedData },
888
+ query: updateQuery,
889
+ serviceContext: context,
890
+ });
825
891
 
826
- // Run all async update data transformations
827
- const awaitedFieldsData =
828
- typeof fieldsData === 'function' ? await fieldsData(tx) : fieldsData;
892
+ // Run afterExecute hooks
893
+ await invokeHooks(allHooks.afterExecute, {
894
+ ...txContext,
895
+ result,
896
+ });
829
897
 
830
- const result = await config.update({
831
- tx,
832
- where,
833
- data: { ...awaitedFieldsData.update, ...preparedData },
834
- query: (query ?? {}) as {
835
- include: NonNullable<TQueryArgs['include']>;
836
- },
837
- serviceContext: context,
838
- });
898
+ return result;
899
+ });
839
900
 
840
- // Run afterExecute hooks
841
- await invokeHooks(allHooks.afterExecute, {
842
- ...txContext,
843
- result,
844
- });
901
+ // Run afterCommit hooks (outside transaction)
902
+ await invokeHooks(allHooks.afterCommit, {
903
+ ...baseOperationContext,
904
+ result: transactionResult,
905
+ });
845
906
 
846
- return result;
847
- })
848
- .then(async (result) => {
849
- // Run afterCommit hooks (outside transaction)
850
- await invokeHooks(allHooks.afterCommit, {
851
- ...baseOperationContext,
852
- result,
853
- });
854
- return result as GetPayload<TModelName, TQueryArgs>;
907
+ // Re-fetch if hooks existed and query includes relations
908
+ if (needsRefetch && query?.include) {
909
+ const freshResult = await delegate.findUnique<TQueryArgs>({
910
+ where,
911
+ include: query.include,
855
912
  });
913
+ if (!freshResult) {
914
+ throw new NotFoundError(`${config.model} not found after update`);
915
+ }
916
+ return freshResult as GetPayload<TModelName, TQueryArgs>;
917
+ }
918
+
919
+ return transactionResult as GetPayload<TModelName, TQueryArgs>;
856
920
  };
857
921
  updateOperation.$dataSchema = generateCreateSchema(config.fields).partial();
858
922
  return updateOperation;
@@ -145,11 +145,6 @@ type RelationName<TModelName extends ModelPropName> = keyof Payload<
145
145
  (typeof prisma)[TModelName]
146
146
  >['objects'];
147
147
 
148
- interface PrismaFieldData<TModelName extends ModelPropName> {
149
- create: CreateInput<TModelName>;
150
- update: UpdateInput<TModelName>;
151
- }
152
-
153
148
  /**
154
149
  * Configuration for defining a nested one-to-one relationship field.
155
150
  *
@@ -196,20 +191,29 @@ export interface NestedOneToOneFieldConfig<
196
191
  ) => WhereUniqueInput<TModelName>;
197
192
 
198
193
  /**
199
- * Transform validated field data into final Prisma structure
194
+ * Transform validated create field data into final Prisma structure
200
195
  */
201
- buildData: (
202
- data: {
203
- create: InferFieldsCreateOutput<TFields> &
204
- Record<TRelationName, { connect: WhereUniqueInput<TParentModelName> }>;
205
- update: InferFieldsUpdateOutput<TFields>;
206
- },
196
+ buildCreateData: (
197
+ data: InferFieldsCreateOutput<TFields> &
198
+ Record<TRelationName, { connect: WhereUniqueInput<TParentModelName> }>,
199
+ parentModel: GetPayload<TParentModelName>,
200
+ ctx: TransactionalOperationContext<
201
+ GetPayload<TModelName>,
202
+ { hasResult: false }
203
+ >,
204
+ ) => CreateInput<TModelName> | Promise<CreateInput<TModelName>>;
205
+
206
+ /**
207
+ * Transform validated update field data into final Prisma structure
208
+ */
209
+ buildUpdateData: (
210
+ data: InferFieldsUpdateOutput<TFields>,
207
211
  parentModel: GetPayload<TParentModelName>,
208
212
  ctx: TransactionalOperationContext<
209
213
  GetPayload<TModelName>,
210
214
  { hasResult: false }
211
215
  >,
212
- ) => PrismaFieldData<TModelName> | Promise<PrismaFieldData<TModelName>>;
216
+ ) => UpdateInput<TModelName> | Promise<UpdateInput<TModelName>>;
213
217
  }
214
218
 
215
219
  /**
@@ -319,9 +323,9 @@ export function nestedOneToOneField<
319
323
  );
320
324
  const prismaDelegate = makeGenericPrismaDelegate(prisma, config.model);
321
325
  cachedExisting =
322
- (await prismaDelegate.findUnique({
326
+ ((await prismaDelegate.findUnique({
323
327
  where: whereUnique,
324
- })) ?? undefined;
328
+ })) as GetPayload<TModelName> | null) ?? undefined;
325
329
  return cachedExisting;
326
330
  }
327
331
 
@@ -351,9 +355,14 @@ export function nestedOneToOneField<
351
355
  const parentWhereUnique = config.parentModel.getWhereUnique(
352
356
  ctx.result as GetPayload<TParentModelName>,
353
357
  );
354
- const builtData = await config.buildData(
355
- {
356
- create: {
358
+ const sharedCtx = {
359
+ ...ctx,
360
+ operation: 'upsert' as const,
361
+ loadExisting,
362
+ };
363
+ const [builtCreate, builtUpdate] = await Promise.all([
364
+ config.buildCreateData(
365
+ {
357
366
  ...awaitedData.create,
358
367
  ...({
359
368
  [config.relationName]: { connect: parentWhereUnique },
@@ -362,15 +371,15 @@ export function nestedOneToOneField<
362
371
  { connect: WhereUniqueInput<TParentModelName> }
363
372
  >),
364
373
  },
365
- update: awaitedData.update,
366
- },
367
- ctx.result as GetPayload<TParentModelName>,
368
- {
369
- ...ctx,
370
- operation: 'upsert',
371
- loadExisting,
372
- },
373
- );
374
+ ctx.result as GetPayload<TParentModelName>,
375
+ sharedCtx,
376
+ ),
377
+ config.buildUpdateData(
378
+ awaitedData.update,
379
+ ctx.result as GetPayload<TParentModelName>,
380
+ sharedCtx,
381
+ ),
382
+ ]);
374
383
  const prismaDelegate = makeGenericPrismaDelegate(
375
384
  ctx.tx,
376
385
  config.model,
@@ -378,8 +387,8 @@ export function nestedOneToOneField<
378
387
 
379
388
  newModelResult = await prismaDelegate.upsert({
380
389
  where: whereUnique,
381
- create: builtData.create,
382
- update: builtData.update,
390
+ create: builtCreate,
391
+ update: builtUpdate,
383
392
  });
384
393
 
385
394
  await invokeHooks(hooks.afterExecute, {
@@ -455,29 +464,30 @@ export interface NestedOneToManyFieldConfig<
455
464
  ) => WhereUniqueInput<TModelName> | undefined;
456
465
 
457
466
  /**
458
- * Transform validated field data into final Prisma structure for a single item.
467
+ * Transform validated create field data into final Prisma structure for a single item.
459
468
  * The returned payload should not include the parent relation field, as it will be added automatically.
460
469
  */
461
- buildData: (
462
- data: {
463
- create: InferFieldsCreateOutput<TFields> &
464
- Record<TRelationName, { connect: WhereUniqueInput<TParentModelName> }>;
465
- update: InferFieldsUpdateOutput<TFields>;
466
- },
470
+ buildCreateData: (
471
+ data: InferFieldsCreateOutput<TFields> &
472
+ Record<TRelationName, { connect: WhereUniqueInput<TParentModelName> }>,
467
473
  parentModel: GetPayload<TParentModelName>,
468
474
  ctx: TransactionalOperationContext<
469
475
  GetPayload<TModelName> | undefined,
470
476
  { hasResult: false }
471
477
  >,
472
- ) =>
473
- | Promise<{
474
- create: CreateInput<TModelName>;
475
- update: UpdateInput<TModelName>;
476
- }>
477
- | {
478
- create: CreateInput<TModelName>;
479
- update: UpdateInput<TModelName>;
480
- };
478
+ ) => CreateInput<TModelName> | Promise<CreateInput<TModelName>>;
479
+
480
+ /**
481
+ * Transform validated update field data into final Prisma structure for a single item.
482
+ */
483
+ buildUpdateData: (
484
+ data: InferFieldsUpdateOutput<TFields>,
485
+ parentModel: GetPayload<TParentModelName>,
486
+ ctx: TransactionalOperationContext<
487
+ GetPayload<TModelName> | undefined,
488
+ { hasResult: false }
489
+ >,
490
+ ) => UpdateInput<TModelName> | Promise<UpdateInput<TModelName>>;
481
491
  }
482
492
 
483
493
  /**
@@ -640,9 +650,9 @@ export function nestedOneToManyField<
640
650
  if (cachedExisting) return cachedExisting;
641
651
  if (!whereUnique) return undefined;
642
652
  cachedExisting =
643
- (await delegate.findUnique({
653
+ ((await delegate.findUnique({
644
654
  where: { ...whereUnique, ...whereFromOriginalModel },
645
- })) ?? undefined;
655
+ })) as GetPayload<TModelName> | null) ?? undefined;
646
656
  return cachedExisting;
647
657
  };
648
658
  });
@@ -728,9 +738,18 @@ export function nestedOneToManyField<
728
738
  ctx.result,
729
739
  );
730
740
 
731
- const builtData = await config.buildData(
732
- {
733
- create: {
741
+ const sharedCtx: TransactionalOperationContext<
742
+ GetPayload<TModelName> | undefined,
743
+ { hasResult: false }
744
+ > = {
745
+ ...ctx,
746
+ operation: item.whereUnique ? 'update' : 'create',
747
+ loadExisting: cachedLoadExisting[idx],
748
+ result: undefined,
749
+ };
750
+ const [builtCreate, builtUpdate] = await Promise.all([
751
+ config.buildCreateData(
752
+ {
734
753
  ...awaitedData.create,
735
754
  ...({
736
755
  [config.relationName]: { connect: parentWhereUnique },
@@ -739,25 +758,20 @@ export function nestedOneToManyField<
739
758
  { connect: WhereUniqueInput<TParentModelName> }
740
759
  >),
741
760
  },
742
- update: awaitedData.update,
743
- },
744
- ctx.result,
745
- {
746
- ...ctx,
747
- operation: item.whereUnique ? 'update' : 'create',
748
- loadExisting: cachedLoadExisting[idx],
749
- result: undefined,
750
- },
751
- );
761
+ ctx.result,
762
+ sharedCtx,
763
+ ),
764
+ config.buildUpdateData(awaitedData.update, ctx.result, sharedCtx),
765
+ ]);
752
766
 
753
767
  results[idx] = item.whereUnique
754
768
  ? await prismaDelegate.upsert({
755
769
  where: item.whereUnique,
756
- create: builtData.create,
757
- update: builtData.update,
770
+ create: builtCreate,
771
+ update: builtUpdate,
758
772
  })
759
773
  : await prismaDelegate.create({
760
- data: builtData.create,
774
+ data: builtCreate,
761
775
  });
762
776
 
763
777
  await invokeHooks(item.hooks.afterExecute, {
@@ -4,6 +4,7 @@ import type {
4
4
  CreateInput,
5
5
  GetPayload,
6
6
  ModelPropName,
7
+ ModelQuery,
7
8
  UpdateInput,
8
9
  WhereInput,
9
10
  WhereUniqueInput,
@@ -22,9 +23,10 @@ import type { PrismaTransaction } from '$types';
22
23
  * @internal This interface is used internally by the data operations system
23
24
  */
24
25
  interface GenericPrismaDelegate<TModelName extends ModelPropName> {
25
- findUnique: (args: {
26
+ findUnique: <TQueryArgs extends ModelQuery<TModelName> = object>(args: {
26
27
  where: WhereUniqueInput<TModelName>;
27
- }) => Promise<GetPayload<TModelName> | null>;
28
+ include?: NonNullable<ModelQuery<TModelName>['include']>;
29
+ }) => Promise<GetPayload<TModelName, TQueryArgs> | null>;
28
30
  findMany: (args: {
29
31
  where: WhereInput<TModelName>;
30
32
  }) => Promise<GetPayload<TModelName>[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"prisma-data-create.generator.d.ts","sourceRoot":"","sources":["../../../../src/generators/prisma/prisma-data-create/prisma-data-create.generator.ts"],"names":[],"mappings":"AAoCA;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgGpC,CAAC"}
1
+ {"version":3,"file":"prisma-data-create.generator.d.ts","sourceRoot":"","sources":["../../../../src/generators/prisma/prisma-data-create/prisma-data-create.generator.ts"],"names":[],"mappings":"AAqCA;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsGpC,CAAC"}
@@ -6,6 +6,7 @@ import { serviceFileProvider } from '#src/generators/core/index.js';
6
6
  import { contextKind, prismaQueryKind, skipValidationKind, } from '#src/types/service-dto-kinds.js';
7
7
  import { createServiceOutputDtoInjectedArg, prismaToServiceOutputDto, } from '#src/types/service-output.js';
8
8
  import { generateCreateCallback } from '../_shared/build-data-helpers/index.js';
9
+ import { generateGetWhereUniqueFragment } from '../_shared/crud-method/primary-key-input.js';
9
10
  import { dataUtilsImportsProvider } from '../data-utils/index.js';
10
11
  import { prismaDataServiceProvider } from '../prisma-data-service/prisma-data-service.generator.js';
11
12
  import { prismaOutputProvider } from '../prisma/prisma.generator.js';
@@ -43,16 +44,20 @@ export const prismaDataCreateGenerator = createGenerator({
43
44
  tsImportBuilder(['pick']).from('es-toolkit'),
44
45
  ]) `pick(${prismaDataService.getFieldsVariableName()}, [${fields.map((field) => quot(field)).join(', ')}] as const)`;
45
46
  // Generate create callback that transforms FK fields into relations
47
+ const prismaModel = prismaOutput.getPrismaModel(modelName);
46
48
  const { createCallbackFragment } = generateCreateCallback({
47
- prismaModel: prismaOutput.getPrismaModel(modelName),
49
+ prismaModel,
48
50
  inputFieldNames: fields,
49
51
  dataUtilsImports,
50
52
  modelVariableName: lowercaseFirstChar(modelName),
51
53
  });
54
+ // Generate getWhereUnique based on primary key structure
55
+ const getWhereUniqueFragment = generateGetWhereUniqueFragment(prismaModel);
52
56
  const createOperation = tsTemplate `
53
57
  export const ${name} = ${dataUtilsImports.defineCreateOperation.fragment()}({
54
58
  model: ${quot(lowercaseFirstChar(modelName))},
55
59
  fields: ${fieldsFragment},
60
+ getWhereUnique: ${getWhereUniqueFragment},
56
61
  create: ${createCallbackFragment},
57
62
  })
58
63
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"prisma-data-create.generator.js","sourceRoot":"","sources":["../../../../src/generators/prisma/prisma-data-create/prisma-data-create.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prisma-data-create.generator.js","sourceRoot":"","sources":["../../../../src/generators/prisma/prisma-data-create/prisma-data-create.generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"nested-field-writer.d.ts","sourceRoot":"","sources":["../../../../src/generators/prisma/prisma-data-nested-field/nested-field-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAcrE,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAIvE,UAAU,+BAA+B;IACvC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,EAAE,yBAAyB,CAAC;IACpC,0FAA0F;IAC1F,yBAAyB,CAAC,EAAE,cAAc,CAAC;IAC3C,YAAY,EAAE,0BAA0B,EAAE,CAAC;IAC3C,gBAAgB,EAAE,wBAAwB,CAAC;CAC5C;AA+KD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,+BAA+B,GACrC,0BAA0B,CAoF5B"}
1
+ {"version":3,"file":"nested-field-writer.d.ts","sourceRoot":"","sources":["../../../../src/generators/prisma/prisma-data-nested-field/nested-field-writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAcrE,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAIvE,UAAU,+BAA+B;IACvC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,EAAE,yBAAyB,CAAC;IACpC,0FAA0F;IAC1F,yBAAyB,CAAC,EAAE,cAAc,CAAC;IAC3C,YAAY,EAAE,0BAA0B,EAAE,CAAC;IAC3C,gBAAgB,EAAE,wBAAwB,CAAC;CAC5C;AA+KD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,+BAA+B,GACrC,0BAA0B,CAsF5B"}
@@ -139,18 +139,19 @@ export function writePrismaDataNestedField(input) {
139
139
  const getWhereUniqueFragment = relation.isList
140
140
  ? createOneToManyWhereUniqueFunction(nestedModel, reverseRelation, nestedFieldNames)
141
141
  : createOneToOneWhereUniqueFunction(reverseRelation, nestedModel);
142
+ const buildDataResult = generateRelationBuildData({
143
+ prismaModel: nestedModel,
144
+ inputFieldNames: nestedFieldNames,
145
+ dataUtilsImports,
146
+ });
142
147
  const fieldOptions = TsCodeUtils.mergeFragmentsAsObject({
143
- parentModel: 'parentModel',
144
- model: quot(lowercaseFirstChar(nestedModel.name)),
145
- relationName: quot(reverseRelation.name),
148
+ buildCreateData: buildDataResult.buildCreateDataFragment,
149
+ buildUpdateData: buildDataResult.buildUpdateDataFragment,
146
150
  fields: pickedFieldsFragment,
147
151
  getWhereUnique: getWhereUniqueFragment,
148
- buildData: generateRelationBuildData({
149
- prismaModel: nestedModel,
150
- inputFieldNames: nestedFieldNames,
151
- operationType: 'upsert',
152
- dataUtilsImports,
153
- }).buildDataFunctionFragment,
152
+ model: quot(lowercaseFirstChar(nestedModel.name)),
153
+ parentModel: 'parentModel',
154
+ relationName: quot(reverseRelation.name),
154
155
  });
155
156
  const fragment = tsTemplateWithImports([], {
156
157
  hoistedFragments: [
@@ -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":"AAEA,OAAO,EACL,WAAW,EACX,eAAe,EACf,UAAU,EACV,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,IAAI,EACJ,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAU9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,+DAA+D,CAAC;AAY1G;;;;;;;GAOG;AACH,SAAS,+BAA+B,CACtC,KAAwB,EACxB,OAAO,GAAG,OAAO;IAEjB,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,yBAAyB,KAAK,CAAC,IAAI,iDAAiD,CACrF,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAA,IAAI,OAAO,QAAQ,WAAW,CAAC,sBAAsB,CACpE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAClE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAC9B,EAAE,CAAC;AACN,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,iCAAiC,CACxC,QAAmC,EACnC,WAA8B;IAE9B,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;IAEnD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CACb,YAAY,QAAQ,CAAC,IAAI,aAAa,WAAW,CAAC,IAAI,0CAA0C,CACjG,CAAC;IACJ,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,YAAY,QAAQ,CAAC,IAAI,kDAAkD,CAC5E,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,oEAAoE;IACpE,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAC1C,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE;QAC1C,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,aAAa,EAAE,eAAe,eAAe,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,UAAU,CAAA,oBAAoB,WAAW,CAAC,sBAAsB,CACrE,iBAAiB,EACjB,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAC9B,EAAE,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,kCAAkC,CACzC,WAA8B,EAC9B,QAAmC,EACnC,eAAyB;IAEzB,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC;IAEjC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,gBAAgB,WAAW,CAAC,IAAI,+CAA+C,CAChF,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;IAEnD,sFAAsF;IACtF,MAAM,WAAW,GAA2B,EAAE,CAAC;IAE/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,8DAA8D;QAC9D,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE3D,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9B,6CAA6C;YAC7C,MAAM,eAAe,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;YAC7D,WAAW,CAAC,OAAO,CAAC,GAAG,eAAe,eAAe,EAAE,CAAC;QAC1D,CAAC;aAAM,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,yBAAyB;YACzB,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,OAAO,EAAE,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,YAAY,OAAO,OAAO,WAAW,CAAC,IAAI,4CAA4C,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1E,6DAA6D;IAC7D,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,CAAC;IAE9D,mCAAmC;IACnC,MAAM,cAAc,GAAG,WAAW,CAAC,sBAAsB,CAAC,WAAW,EAAE;QACrE,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAC;IAEH,0FAA0F;IAC1F,MAAM,sBAAsB,GAAG,aAAa;SACzC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC;SAChC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,mDAAmD;IACnD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,oBAAoB,GAAG,WAAW,CAAC,sBAAsB,CAC7D;YACE,CAAC,YAAY,CAAC,EAAE,cAAc;SAC/B,EACD,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAC9B,CAAC;QAEF,MAAM,sBAAsB,GAAG,UAAU,CAAA,GAAG,sBAAsB,MAAM,oBAAoB,cAAc,CAAC;QAE3G,OAAO,YAAY;YACjB,CAAC,CAAC,UAAU,CAAA,cAAc,sBAAsB,EAAE;YAClD,CAAC,CAAC,UAAU,CAAA,2BAA2B,sBAAsB,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,yBAAyB,GAAG,UAAU,CAAA,GAAG,sBAAsB,MAAM,cAAc,cAAc,CAAC;IAExG,kDAAkD;IAClD,OAAO,YAAY;QACjB,CAAC,CAAC,UAAU,CAAA,cAAc,yBAAyB,EAAE;QACrD,CAAC,CAAC,UAAU,CAAA,2BAA2B,yBAAyB,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,8BAA8B,CAAC,EACtC,WAAW,EACX,gBAAgB,GACgB;IAChC,MAAM,mBAAmB,GAAG,+BAA+B,CAAC,WAAW,CAAC,CAAC;IAEzE,OAAO,UAAU,CAAA,uBAAuB,gBAAgB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,mBAAmB,GAAG,CAAC;AACvK,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAsC;IAEtC,MAAM,EACJ,WAAW,EACX,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,yBAAyB,EACzB,gBAAgB,GACjB,GAAG,KAAK,CAAC;IAEV,MAAM,qBAAqB,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM;QACtC,CAAC,CAAC,gBAAgB,CAAC,oBAAoB;QACvC,CAAC,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;IAEzC,MAAM,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,oBAAoB,GAAG,yBAAyB;QACpD,CAAC,CAAC,qBAAqB,CAAC;YACpB,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;SAC7C,CAAC,CAAA,QAAQ,yBAAyB,KAAK,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY;QACtF,CAAC,CAAC,WAAW,CAAC,sBAAsB,CAChC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAClE,CAAC;IAEN,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAC7C,CAAC,CAAC,EAAkC,EAAE,CACpC,CAAC,CAAC,IAAI,KAAK,UAAU;QACrB,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,YAAY;QACxC,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,IAAI,CACnC,CAAC;IAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,oBAAoB,QAAQ,CAAC,IAAI,uBAAuB,WAAW,CAAC,IAAI,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,MAAM,sBAAsB,GAAG,QAAQ,CAAC,MAAM;QAC5C,CAAC,CAAC,kCAAkC,CAChC,WAAW,EACX,eAAe,EACf,gBAAgB,CACjB;QACH,CAAC,CAAC,iCAAiC,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,WAAW,CAAC,sBAAsB,CAAC;QACtD,WAAW,EAAE,aAAa;QAC1B,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACjD,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QACxC,MAAM,EAAE,oBAAoB;QAC5B,cAAc,EAAE,sBAAsB;QACtC,SAAS,EAAE,yBAAyB,CAAC;YACnC,WAAW,EAAE,WAAW;YACxB,eAAe,EAAE,gBAAgB;YACjC,aAAa,EAAE,QAAQ;YACvB,gBAAgB;SACjB,CAAC,CAAC,yBAAyB;KAC7B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,EAAE;QACzC,gBAAgB,EAAE;YAChB,EAAE,GAAG,qBAAqB,EAAE,GAAG,EAAE,qBAAqB,EAAE;SACzD;KACF,CAAC,CAAA;MACE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,YAAY;GAC9C,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,QAAQ;QACR,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE;gBACV,IAAI,EAAE,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa;gBAC9F,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;aAClD;SACF;KACF,CAAC;AACJ,CAAC"}
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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"}