@farming-labs/orm-prisma 0.0.9 → 0.0.11

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/dist/index.cjs CHANGED
@@ -56,9 +56,6 @@ function parseReference(reference) {
56
56
  if (!model || !field) return null;
57
57
  return { model, field };
58
58
  }
59
- function isFilterObject(value) {
60
- return !!value && typeof value === "object" && !(value instanceof Date) && !Array.isArray(value);
61
- }
62
59
  function mergeWhere(...clauses) {
63
60
  const defined = clauses.filter(Boolean);
64
61
  if (!defined.length) return void 0;
@@ -67,73 +64,6 @@ function mergeWhere(...clauses) {
67
64
  AND: defined
68
65
  };
69
66
  }
70
- function extractEqualityValue(filter) {
71
- if (!isFilterObject(filter)) {
72
- return {
73
- supported: true,
74
- value: filter
75
- };
76
- }
77
- const keys = Object.keys(filter);
78
- if (keys.length === 1 && "eq" in filter) {
79
- return {
80
- supported: true,
81
- value: filter.eq
82
- };
83
- }
84
- return {
85
- supported: false,
86
- value: void 0
87
- };
88
- }
89
- function extractUpsertConflict(model, where) {
90
- const keys = Object.keys(where).filter((key) => key !== "AND" && key !== "OR" && key !== "NOT");
91
- if ("AND" in where || "OR" in where || "NOT" in where || keys.length !== 1) {
92
- throw new Error(
93
- `Upsert on model "${model.name}" requires a single unique equality filter in "where".`
94
- );
95
- }
96
- const fieldName = keys[0];
97
- const field = model.fields[fieldName];
98
- if (!field) {
99
- throw new Error(`Unknown field "${fieldName}" on model "${model.name}".`);
100
- }
101
- if (!(field.kind === "id" || field.unique)) {
102
- throw new Error(
103
- `Upsert on model "${model.name}" requires the "where" field "${fieldName}" to be unique or an id field.`
104
- );
105
- }
106
- const { supported, value } = extractEqualityValue(where[fieldName]);
107
- if (!supported || value === void 0 || value === null) {
108
- throw new Error(
109
- `Upsert on model "${model.name}" requires the "where" field "${fieldName}" to use a single non-null equality value.`
110
- );
111
- }
112
- return {
113
- field,
114
- value
115
- };
116
- }
117
- function mergeUpsertCreateData(model, createData, conflict) {
118
- const currentValue = createData[conflict.field.name];
119
- if (currentValue !== void 0 && currentValue !== conflict.value) {
120
- throw new Error(
121
- `Upsert on model "${model.name}" requires create.${conflict.field.name} to match where.${conflict.field.name}.`
122
- );
123
- }
124
- return {
125
- ...createData,
126
- [conflict.field.name]: currentValue ?? conflict.value
127
- };
128
- }
129
- function validateUpsertUpdateData(model, updateData, conflict) {
130
- const nextValue = updateData[conflict.field.name];
131
- if (nextValue !== void 0 && nextValue !== conflict.value) {
132
- throw new Error(
133
- `Upsert on model "${model.name}" cannot change the conflict field "${conflict.field.name}".`
134
- );
135
- }
136
- }
137
67
  function buildCreateData(model, input) {
138
68
  const output = {};
139
69
  for (const field of Object.values(model.fields)) {
@@ -147,8 +77,15 @@ function buildCreateData(model, input) {
147
77
  function buildUpdateData(input) {
148
78
  return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== void 0));
149
79
  }
150
- function compileFilter(filter) {
151
- if (!isFilterObject(filter)) return filter;
80
+ function compileFilter(field, filter) {
81
+ if (!(0, import_orm.isOperatorFilterObject)(filter)) {
82
+ if (field.kind === "json" && filter !== null) {
83
+ return {
84
+ equals: filter
85
+ };
86
+ }
87
+ return filter;
88
+ }
152
89
  const output = {};
153
90
  if ("eq" in filter) output.equals = filter.eq;
154
91
  if ("contains" in filter) output.contains = filter.contains;
@@ -178,7 +115,7 @@ function compileWhere(model, where) {
178
115
  continue;
179
116
  }
180
117
  if (!(key in model.fields)) continue;
181
- output[key] = compileFilter(value);
118
+ output[key] = compileFilter(model.fields[key], value);
182
119
  }
183
120
  return output;
184
121
  }
@@ -190,18 +127,22 @@ function compileOrderBy(orderBy) {
190
127
  [key]: value
191
128
  }));
192
129
  }
193
- function buildIdentityWhere(model, row) {
194
- const field = identityField(model);
195
- const value = row[field.name];
196
- if (value == null) {
197
- throw new Error(
198
- `Model "${model.name}" requires a non-null identity value for field "${field.name}".`
199
- );
130
+ function buildPrismaUniqueWhere(lookup) {
131
+ if (lookup.fields.length === 1) {
132
+ const field = lookup.fields[0];
133
+ return {
134
+ [field.name]: lookup.values[field.name]
135
+ };
200
136
  }
201
137
  return {
202
- [field.name]: value
138
+ [lookup.fields.map((field) => field.name).join("_")]: Object.fromEntries(
139
+ lookup.fields.map((field) => [field.name, lookup.values[field.name]])
140
+ )
203
141
  };
204
142
  }
143
+ function buildIdentityWhere(model, row) {
144
+ return buildPrismaUniqueWhere((0, import_orm.resolveRowIdentityLookup)(model, row));
145
+ }
205
146
  function createPrismaDriverInternal(config, state = {}) {
206
147
  function getDelegate(modelName) {
207
148
  const key = config.models?.[modelName] ?? modelName;
@@ -387,6 +328,12 @@ function createPrismaDriverInternal(config, state = {}) {
387
328
  return loadOneRow(schema, model, args);
388
329
  },
389
330
  async findUnique(schema, model, args) {
331
+ const manifest = getManifest(schema);
332
+ (0, import_orm.requireUniqueLookup)(
333
+ manifest.models[model],
334
+ args.where,
335
+ "FindUnique"
336
+ );
390
337
  return loadOneRow(schema, model, args);
391
338
  },
392
339
  async count(schema, model, args) {
@@ -454,26 +401,30 @@ function createPrismaDriverInternal(config, state = {}) {
454
401
  },
455
402
  async upsert(schema, model, args) {
456
403
  const manifest = getManifest(schema);
457
- const conflict = extractUpsertConflict(manifest.models[model], args.where);
404
+ const lookup = (0, import_orm.requireUniqueLookup)(
405
+ manifest.models[model],
406
+ args.where,
407
+ "Upsert"
408
+ );
458
409
  const delegate = getDelegate(model);
459
410
  const createData = buildCreateData(
460
411
  manifest.models[model],
461
- mergeUpsertCreateData(
412
+ (0, import_orm.mergeUniqueLookupCreateData)(
462
413
  manifest.models[model],
463
414
  args.create,
464
- conflict
415
+ lookup,
416
+ "Upsert"
465
417
  )
466
418
  );
467
419
  const updateData = buildUpdateData(args.update);
468
- validateUpsertUpdateData(
420
+ (0, import_orm.validateUniqueLookupUpdateData)(
469
421
  manifest.models[model],
470
422
  args.update,
471
- conflict
423
+ lookup,
424
+ "Upsert"
472
425
  );
473
426
  const row = await (delegate.upsert?.({
474
- where: {
475
- [conflict.field.name]: conflict.value
476
- },
427
+ where: buildPrismaUniqueWhere(lookup),
477
428
  create: createData,
478
429
  update: updateData
479
430
  }) ?? runTransaction(async (txDriver) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n createManifest,\n type CountArgs,\n type CreateArgs,\n type CreateManyArgs,\n type DeleteArgs,\n type DeleteManyArgs,\n type FindManyArgs,\n type FindUniqueArgs,\n type ManifestField,\n type ManifestModel,\n type OrmDriver,\n type SchemaManifest,\n type SchemaDefinition,\n type SelectShape,\n type SelectedRecord,\n type UpdateArgs,\n type UpdateManyArgs,\n type UpsertArgs,\n type Where,\n} from \"@farming-labs/orm\";\nimport type { ModelName, RelationName } from \"@farming-labs/orm\";\n\ntype PrismaRow = Record<string, unknown>;\ntype PrismaFilterRecord = Record<string, string | number | boolean | Date | null>;\ntype PrismaWhere = Where<PrismaFilterRecord>;\n\ntype PrismaWhereInput = Record<string, unknown>;\n\ntype PrismaDelegateLike = {\n findMany(args?: Record<string, unknown>): Promise<PrismaRow[]>;\n findFirst?(args?: Record<string, unknown>): Promise<PrismaRow | null>;\n count(args?: Record<string, unknown>): Promise<number>;\n create(args: { data: PrismaRow }): Promise<PrismaRow>;\n update?(args: { where: PrismaRow; data: PrismaRow }): Promise<PrismaRow>;\n updateMany(args: { where?: PrismaWhereInput; data: PrismaRow }): Promise<{ count?: number }>;\n upsert?(args: { where: PrismaRow; create: PrismaRow; update: PrismaRow }): Promise<PrismaRow>;\n delete?(args: { where: PrismaRow }): Promise<PrismaRow>;\n deleteMany(args: { where?: PrismaWhereInput }): Promise<{ count?: number }>;\n};\n\nexport type PrismaClientLike = Record<string, PrismaDelegateLike> & {\n $transaction?<TResult>(run: (tx: PrismaClientLike) => Promise<TResult>): Promise<TResult>;\n};\n\nexport type PrismaDriverConfig<TSchema extends SchemaDefinition<any>> = {\n client: PrismaClientLike;\n models?: Partial<Record<ModelName<TSchema>, string>>;\n};\n\nconst manifestCache = new WeakMap<object, SchemaManifest>();\n\nfunction getManifest(schema: SchemaDefinition<any>) {\n const cached = manifestCache.get(schema);\n if (cached) return cached;\n const next = createManifest(schema);\n manifestCache.set(schema, next);\n return next;\n}\n\nfunction identityField(model: ManifestModel) {\n if (model.fields.id) return model.fields.id;\n const uniqueField = Object.values(model.fields).find((field) => field.unique);\n if (uniqueField) return uniqueField;\n throw new Error(\n `Model \"${model.name}\" requires an \"id\" field or a unique field for the Prisma runtime.`,\n );\n}\n\nfunction applyDefault(value: unknown, field: ManifestField) {\n if (value !== undefined) return value;\n if (field.generated === \"id\") return randomUUID();\n if (field.generated === \"now\") return new Date();\n if (typeof field.defaultValue === \"function\") {\n return (field.defaultValue as () => unknown)();\n }\n return field.defaultValue;\n}\n\nfunction parseReference(reference?: string) {\n if (!reference) return null;\n const [model, field] = reference.split(\".\");\n if (!model || !field) return null;\n return { model, field };\n}\n\nfunction isFilterObject(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !(value instanceof Date) && !Array.isArray(value);\n}\n\nfunction mergeWhere(...clauses: Array<PrismaWhere | undefined>) {\n const defined = clauses.filter(Boolean) as PrismaWhere[];\n if (!defined.length) return undefined;\n if (defined.length === 1) return defined[0];\n return {\n AND: defined,\n } as PrismaWhere;\n}\n\nfunction extractEqualityValue(filter: unknown) {\n if (!isFilterObject(filter)) {\n return {\n supported: true,\n value: filter,\n };\n }\n\n const keys = Object.keys(filter);\n if (keys.length === 1 && \"eq\" in filter) {\n return {\n supported: true,\n value: filter.eq,\n };\n }\n\n return {\n supported: false,\n value: undefined,\n };\n}\n\nfunction extractUpsertConflict(model: ManifestModel, where: PrismaWhere) {\n const keys = Object.keys(where).filter((key) => key !== \"AND\" && key !== \"OR\" && key !== \"NOT\");\n\n if (\"AND\" in where || \"OR\" in where || \"NOT\" in where || keys.length !== 1) {\n throw new Error(\n `Upsert on model \"${model.name}\" requires a single unique equality filter in \"where\".`,\n );\n }\n\n const fieldName = keys[0]!;\n const field = model.fields[fieldName];\n if (!field) {\n throw new Error(`Unknown field \"${fieldName}\" on model \"${model.name}\".`);\n }\n\n if (!(field.kind === \"id\" || field.unique)) {\n throw new Error(\n `Upsert on model \"${model.name}\" requires the \"where\" field \"${fieldName}\" to be unique or an id field.`,\n );\n }\n\n const { supported, value } = extractEqualityValue(where[fieldName]);\n if (!supported || value === undefined || value === null) {\n throw new Error(\n `Upsert on model \"${model.name}\" requires the \"where\" field \"${fieldName}\" to use a single non-null equality value.`,\n );\n }\n\n return {\n field,\n value,\n };\n}\n\nfunction mergeUpsertCreateData(\n model: ManifestModel,\n createData: Partial<Record<string, unknown>>,\n conflict: { field: ManifestField; value: unknown },\n) {\n const currentValue = createData[conflict.field.name];\n if (currentValue !== undefined && currentValue !== conflict.value) {\n throw new Error(\n `Upsert on model \"${model.name}\" requires create.${conflict.field.name} to match where.${conflict.field.name}.`,\n );\n }\n\n return {\n ...createData,\n [conflict.field.name]: currentValue ?? conflict.value,\n };\n}\n\nfunction validateUpsertUpdateData(\n model: ManifestModel,\n updateData: Partial<Record<string, unknown>>,\n conflict: { field: ManifestField; value: unknown },\n) {\n const nextValue = updateData[conflict.field.name];\n if (nextValue !== undefined && nextValue !== conflict.value) {\n throw new Error(\n `Upsert on model \"${model.name}\" cannot change the conflict field \"${conflict.field.name}\".`,\n );\n }\n}\n\nfunction buildCreateData(model: ManifestModel, input: Partial<Record<string, unknown>>) {\n const output: PrismaRow = {};\n\n for (const field of Object.values(model.fields)) {\n const value = applyDefault(input[field.name], field);\n if (value !== undefined) {\n output[field.name] = value;\n }\n }\n\n return output;\n}\n\nfunction buildUpdateData(input: Partial<Record<string, unknown>>) {\n return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined));\n}\n\nfunction compileFilter(filter: unknown) {\n if (!isFilterObject(filter)) return filter;\n\n const output: Record<string, unknown> = {};\n if (\"eq\" in filter) output.equals = filter.eq;\n if (\"contains\" in filter) output.contains = filter.contains;\n if (\"in\" in filter) output.in = filter.in;\n if (\"not\" in filter) output.not = filter.not;\n if (\"gt\" in filter) output.gt = filter.gt;\n if (\"gte\" in filter) output.gte = filter.gte;\n if (\"lt\" in filter) output.lt = filter.lt;\n if (\"lte\" in filter) output.lte = filter.lte;\n return output;\n}\n\nfunction compileWhere(model: ManifestModel, where?: PrismaWhere): PrismaWhereInput | undefined {\n if (!where) return undefined;\n\n const output: PrismaWhereInput = {};\n\n for (const [key, value] of Object.entries(where)) {\n if (key === \"AND\" && Array.isArray(value)) {\n output.AND = value\n .map((entry) => compileWhere(model, entry))\n .filter(Boolean) as PrismaWhereInput[];\n continue;\n }\n\n if (key === \"OR\" && Array.isArray(value)) {\n output.OR = value\n .map((entry) => compileWhere(model, entry))\n .filter(Boolean) as PrismaWhereInput[];\n continue;\n }\n\n if (key === \"NOT\" && value) {\n const compiled = compileWhere(model, value as PrismaWhere);\n if (compiled) output.NOT = compiled;\n continue;\n }\n\n if (!(key in model.fields)) continue;\n output[key] = compileFilter(value);\n }\n\n return output;\n}\n\nfunction compileOrderBy(orderBy?: Partial<Record<string, \"asc\" | \"desc\">>) {\n if (!orderBy) return undefined;\n const entries = Object.entries(orderBy).filter(([, value]) => value);\n if (!entries.length) return undefined;\n return entries.map(([key, value]) => ({\n [key]: value,\n }));\n}\n\nfunction buildIdentityWhere(model: ManifestModel, row: PrismaRow) {\n const field = identityField(model);\n const value = row[field.name];\n if (value == null) {\n throw new Error(\n `Model \"${model.name}\" requires a non-null identity value for field \"${field.name}\".`,\n );\n }\n return {\n [field.name]: value,\n };\n}\n\nfunction createPrismaDriverInternal<TSchema extends SchemaDefinition<any>>(\n config: PrismaDriverConfig<TSchema>,\n state: {\n inTransaction?: boolean;\n } = {},\n) {\n function getDelegate(modelName: ModelName<TSchema>) {\n const key = config.models?.[modelName] ?? modelName;\n const delegate = config.client[key];\n if (!delegate) {\n throw new Error(\n `Prisma delegate \"${String(key)}\" for model \"${String(modelName)}\" is missing.`,\n );\n }\n return delegate;\n }\n\n async function loadRows<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(schema: TSchema, modelName: TModelName, args: FindManyArgs<TSchema, TModelName, TSelect>) {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const rows = await getDelegate(modelName).findMany({\n where: compileWhere(model, args.where as PrismaWhere | undefined),\n orderBy: compileOrderBy(args.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined),\n take: args.take,\n skip: args.skip,\n });\n\n return Promise.all(rows.map((row) => projectRow(schema, modelName, row, args.select)));\n }\n\n async function loadRawOneRow<TModelName extends ModelName<TSchema>>(\n schema: TSchema,\n modelName: TModelName,\n args: {\n where?: PrismaWhere;\n orderBy?: Partial<Record<string, \"asc\" | \"desc\">>;\n },\n ) {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const delegate = getDelegate(modelName);\n\n if (delegate.findFirst) {\n return delegate.findFirst({\n where: compileWhere(model, args.where),\n orderBy: compileOrderBy(args.orderBy),\n });\n }\n\n const rows = await delegate.findMany({\n where: compileWhere(model, args.where),\n orderBy: compileOrderBy(args.orderBy),\n take: 1,\n });\n return rows[0] ?? null;\n }\n\n async function loadOneRow<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(\n schema: TSchema,\n modelName: TModelName,\n args: {\n where?: PrismaWhere;\n orderBy?: Partial<Record<string, \"asc\" | \"desc\">>;\n select?: TSelect;\n },\n ) {\n const row = await loadRawOneRow(schema, modelName, args);\n return row ? projectRow(schema, modelName, row, args.select) : null;\n }\n\n async function projectRow<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(\n schema: TSchema,\n modelName: TModelName,\n row: PrismaRow,\n select?: TSelect,\n ): Promise<SelectedRecord<TSchema, TModelName, TSelect>> {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const output: PrismaRow = {};\n\n if (!select) {\n for (const fieldName of Object.keys(model.fields)) {\n output[fieldName] = row[fieldName];\n }\n return output as SelectedRecord<TSchema, TModelName, TSelect>;\n }\n\n for (const [key, value] of Object.entries(select)) {\n if (value === undefined) continue;\n\n if (key in model.fields && value === true) {\n output[key] = row[key];\n continue;\n }\n\n if (key in schema.models[modelName].relations) {\n output[key] = await resolveRelation(\n schema,\n modelName,\n key as RelationName<TSchema, TModelName>,\n row,\n value as true | FindManyArgs<TSchema, any, any>,\n );\n }\n }\n\n return output as SelectedRecord<TSchema, TModelName, TSelect>;\n }\n\n async function resolveRelation<\n TModelName extends ModelName<TSchema>,\n TRelationName extends RelationName<TSchema, TModelName>,\n >(\n schema: TSchema,\n modelName: TModelName,\n relationName: TRelationName,\n row: PrismaRow,\n value: true | FindManyArgs<TSchema, any, any>,\n ) {\n const manifest = getManifest(schema);\n const relation = schema.models[modelName].relations[relationName];\n const relationArgs = value === true ? {} : value;\n\n if (relation.kind === \"belongsTo\") {\n const foreignField = manifest.models[modelName].fields[relation.foreignKey];\n const targetReference = parseReference(foreignField?.references);\n const targetField =\n targetReference?.field ?? identityField(manifest.models[relation.target]).name;\n const foreignValue = row[relation.foreignKey];\n\n if (foreignValue == null) return null;\n\n return loadOneRow(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [targetField]: foreignValue,\n } as PrismaWhere,\n ),\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n select: relationArgs.select,\n });\n }\n\n if (relation.kind === \"hasOne\") {\n const targetModel = manifest.models[relation.target];\n const foreignField = targetModel.fields[relation.foreignKey];\n const sourceReference = parseReference(foreignField?.references);\n const sourceField = sourceReference?.field ?? identityField(manifest.models[modelName]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return null;\n\n return loadOneRow(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [relation.foreignKey]: sourceValue,\n } as PrismaWhere,\n ),\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n select: relationArgs.select,\n });\n }\n\n if (relation.kind === \"hasMany\") {\n const targetModel = manifest.models[relation.target];\n const foreignField = targetModel.fields[relation.foreignKey];\n const sourceReference = parseReference(foreignField?.references);\n const sourceField = sourceReference?.field ?? identityField(manifest.models[modelName]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return [];\n\n return loadRows(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [relation.foreignKey]: sourceValue,\n } as PrismaWhere,\n ) as any,\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n take: relationArgs.take,\n skip: relationArgs.skip,\n select: relationArgs.select,\n });\n }\n\n const throughModel = manifest.models[relation.through];\n const throughFromReference = parseReference(throughModel.fields[relation.from]?.references);\n const throughToReference = parseReference(throughModel.fields[relation.to]?.references);\n const sourceField =\n throughFromReference?.field ?? identityField(manifest.models[modelName]).name;\n const targetField =\n throughToReference?.field ?? identityField(manifest.models[relation.target]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return [];\n\n const throughRows = await loadRows(schema, relation.through as ModelName<TSchema>, {\n where: {\n [relation.from]: sourceValue,\n } as any,\n });\n\n const targetIds = throughRows\n .map((item: PrismaRow) => item[relation.to])\n .filter((item) => item != null);\n if (!targetIds.length) return [];\n\n return loadRows(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [targetField]: {\n in: targetIds,\n },\n } as PrismaWhere,\n ) as any,\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n take: relationArgs.take,\n skip: relationArgs.skip,\n select: relationArgs.select,\n });\n }\n\n async function runTransaction<TResult>(run: (driver: OrmDriver<TSchema>) => Promise<TResult>) {\n if (state.inTransaction || !config.client.$transaction) {\n return run(createPrismaDriverInternal(config, { inTransaction: true }));\n }\n\n return config.client.$transaction(async (tx) =>\n run(\n createPrismaDriverInternal(\n {\n ...config,\n client: tx,\n },\n {\n inTransaction: true,\n },\n ),\n ),\n );\n }\n\n const driver: OrmDriver<TSchema> = {\n async findMany(schema, model, args) {\n return loadRows(schema, model, args);\n },\n async findFirst(schema, model, args) {\n return loadOneRow(schema, model, args);\n },\n async findUnique(schema, model, args: FindUniqueArgs<TSchema, ModelName<TSchema>, any>) {\n return loadOneRow(schema, model, args);\n },\n async count(schema, model, args?: CountArgs<TSchema, ModelName<TSchema>>) {\n const manifest = getManifest(schema);\n return getDelegate(model).count({\n where: compileWhere(manifest.models[model], args?.where as PrismaWhere | undefined),\n });\n },\n async create(schema, model, args) {\n const manifest = getManifest(schema);\n const delegate = getDelegate(model);\n const row = await delegate.create({\n data: buildCreateData(\n manifest.models[model],\n args.data as Partial<Record<string, unknown>>,\n ),\n });\n return projectRow(schema, model, row, args.select) as Promise<any>;\n },\n async createMany(schema, model, args) {\n const results: unknown[] = [];\n for (const entry of args.data) {\n results.push(\n await driver.create(schema, model, {\n data: entry,\n select: args.select,\n } as CreateArgs<TSchema, ModelName<TSchema>, any>),\n );\n }\n return results as any;\n },\n async update(schema, model, args) {\n const manifest = getManifest(schema);\n const current = await loadRawOneRow(schema, model, {\n where: args.where as PrismaWhere,\n });\n\n if (!current) return null;\n\n const delegate = getDelegate(model);\n const identityWhere = buildIdentityWhere(manifest.models[model], current);\n const updateData = buildUpdateData(args.data as Partial<Record<string, unknown>>);\n const updated =\n delegate.update?.({\n where: identityWhere,\n data: updateData,\n }) ??\n (async () => {\n await delegate.updateMany({\n where: identityWhere,\n data: updateData,\n });\n return null;\n })();\n\n const row = await updated;\n const nextRow =\n row ??\n (await loadRawOneRow(schema, model, {\n where: identityWhere as PrismaWhere,\n }));\n if (!nextRow) return null;\n\n return projectRow(schema, model, nextRow, args.select) as Promise<any>;\n },\n async updateMany(schema, model, args) {\n const manifest = getManifest(schema);\n const result = await getDelegate(model).updateMany({\n where: compileWhere(manifest.models[model], args.where as PrismaWhere),\n data: buildUpdateData(args.data as Partial<Record<string, unknown>>),\n });\n return Number(result.count ?? 0);\n },\n async upsert(schema, model, args) {\n const manifest = getManifest(schema);\n const conflict = extractUpsertConflict(manifest.models[model], args.where as PrismaWhere);\n const delegate = getDelegate(model);\n const createData = buildCreateData(\n manifest.models[model],\n mergeUpsertCreateData(\n manifest.models[model],\n args.create as Partial<Record<string, unknown>>,\n conflict,\n ),\n );\n const updateData = buildUpdateData(args.update as Partial<Record<string, unknown>>);\n validateUpsertUpdateData(\n manifest.models[model],\n args.update as Partial<Record<string, unknown>>,\n conflict,\n );\n\n const row = await (delegate.upsert?.({\n where: {\n [conflict.field.name]: conflict.value,\n },\n create: createData,\n update: updateData,\n }) ??\n runTransaction(async (txDriver) => {\n const existing = await txDriver.findUnique(schema, model, {\n where: args.where as any,\n } as FindUniqueArgs<TSchema, ModelName<TSchema>, undefined>);\n\n if (existing) {\n const updated = await txDriver.update(schema, model, {\n where: args.where as any,\n data: args.update as any,\n } as UpdateArgs<TSchema, ModelName<TSchema>, undefined>);\n if (!updated) {\n throw new Error(`Upsert on model \"${String(model)}\" failed during update.`);\n }\n return updated as PrismaRow;\n }\n\n return txDriver.create(schema, model, {\n data: createData as any,\n } as CreateArgs<TSchema, ModelName<TSchema>, undefined>) as Promise<PrismaRow>;\n }));\n\n return projectRow(schema, model, row, args.select) as Promise<any>;\n },\n async delete(schema, model, args) {\n const manifest = getManifest(schema);\n const current = await loadRawOneRow(schema, model, {\n where: args.where as PrismaWhere,\n });\n if (!current) return 0;\n\n const identityWhere = buildIdentityWhere(manifest.models[model], current);\n const delegate = getDelegate(model);\n\n if (delegate.delete) {\n await delegate.delete({\n where: identityWhere,\n });\n return 1;\n }\n\n const result = await delegate.deleteMany({\n where: identityWhere,\n });\n return Number(result.count ?? 0);\n },\n async deleteMany(schema, model, args) {\n const manifest = getManifest(schema);\n const result = await getDelegate(model).deleteMany({\n where: compileWhere(manifest.models[model], args.where as PrismaWhere),\n });\n return Number(result.count ?? 0);\n },\n async transaction(_schema, run) {\n return runTransaction(run);\n },\n };\n\n return driver;\n}\n\nexport function createPrismaDriver<TSchema extends SchemaDefinition<any>>(\n config: PrismaDriverConfig<TSchema>,\n) {\n return createPrismaDriverInternal(config);\n}\n"],"mappings":"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","names":["targetField","sourceField","sourceValue"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n createManifest,\n type CountArgs,\n type CreateArgs,\n type CreateManyArgs,\n type DeleteArgs,\n type DeleteManyArgs,\n type FindManyArgs,\n type FindUniqueArgs,\n type ManifestField,\n type ManifestModel,\n mergeUniqueLookupCreateData,\n type OrmDriver,\n isOperatorFilterObject,\n requireUniqueLookup,\n resolveRowIdentityLookup,\n type SchemaManifest,\n type SchemaDefinition,\n type SelectShape,\n type SelectedRecord,\n type ManifestUniqueLookup,\n type UpdateArgs,\n type UpdateManyArgs,\n type UpsertArgs,\n validateUniqueLookupUpdateData,\n type Where,\n} from \"@farming-labs/orm\";\nimport type { ModelName, RelationName } from \"@farming-labs/orm\";\n\ntype PrismaRow = Record<string, unknown>;\ntype PrismaWhere = Where<Record<string, unknown>>;\n\ntype PrismaWhereInput = Record<string, unknown>;\n\ntype PrismaDelegateLike = {\n findMany(args?: Record<string, unknown>): Promise<PrismaRow[]>;\n findFirst?(args?: Record<string, unknown>): Promise<PrismaRow | null>;\n count(args?: Record<string, unknown>): Promise<number>;\n create(args: { data: PrismaRow }): Promise<PrismaRow>;\n update?(args: { where: PrismaRow; data: PrismaRow }): Promise<PrismaRow>;\n updateMany(args: { where?: PrismaWhereInput; data: PrismaRow }): Promise<{ count?: number }>;\n upsert?(args: { where: PrismaRow; create: PrismaRow; update: PrismaRow }): Promise<PrismaRow>;\n delete?(args: { where: PrismaRow }): Promise<PrismaRow>;\n deleteMany(args: { where?: PrismaWhereInput }): Promise<{ count?: number }>;\n};\n\nexport type PrismaClientLike = Record<string, PrismaDelegateLike> & {\n $transaction?<TResult>(run: (tx: PrismaClientLike) => Promise<TResult>): Promise<TResult>;\n};\n\nexport type PrismaDriverConfig<TSchema extends SchemaDefinition<any>> = {\n client: PrismaClientLike;\n models?: Partial<Record<ModelName<TSchema>, string>>;\n};\n\nconst manifestCache = new WeakMap<object, SchemaManifest>();\n\nfunction getManifest(schema: SchemaDefinition<any>) {\n const cached = manifestCache.get(schema);\n if (cached) return cached;\n const next = createManifest(schema);\n manifestCache.set(schema, next);\n return next;\n}\n\nfunction identityField(model: ManifestModel) {\n if (model.fields.id) return model.fields.id;\n const uniqueField = Object.values(model.fields).find((field) => field.unique);\n if (uniqueField) return uniqueField;\n throw new Error(\n `Model \"${model.name}\" requires an \"id\" field or a unique field for the Prisma runtime.`,\n );\n}\n\nfunction applyDefault(value: unknown, field: ManifestField) {\n if (value !== undefined) return value;\n if (field.generated === \"id\") return randomUUID();\n if (field.generated === \"now\") return new Date();\n if (typeof field.defaultValue === \"function\") {\n return (field.defaultValue as () => unknown)();\n }\n return field.defaultValue;\n}\n\nfunction parseReference(reference?: string) {\n if (!reference) return null;\n const [model, field] = reference.split(\".\");\n if (!model || !field) return null;\n return { model, field };\n}\n\nfunction mergeWhere(...clauses: Array<PrismaWhere | undefined>) {\n const defined = clauses.filter(Boolean) as PrismaWhere[];\n if (!defined.length) return undefined;\n if (defined.length === 1) return defined[0];\n return {\n AND: defined,\n } as PrismaWhere;\n}\n\nfunction buildCreateData(model: ManifestModel, input: Partial<Record<string, unknown>>) {\n const output: PrismaRow = {};\n\n for (const field of Object.values(model.fields)) {\n const value = applyDefault(input[field.name], field);\n if (value !== undefined) {\n output[field.name] = value;\n }\n }\n\n return output;\n}\n\nfunction buildUpdateData(input: Partial<Record<string, unknown>>) {\n return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined));\n}\n\nfunction compileFilter(field: ManifestField, filter: unknown) {\n if (!isOperatorFilterObject(filter)) {\n if (field.kind === \"json\" && filter !== null) {\n return {\n equals: filter,\n };\n }\n return filter;\n }\n\n const output: Record<string, unknown> = {};\n if (\"eq\" in filter) output.equals = filter.eq;\n if (\"contains\" in filter) output.contains = filter.contains;\n if (\"in\" in filter) output.in = filter.in;\n if (\"not\" in filter) output.not = filter.not;\n if (\"gt\" in filter) output.gt = filter.gt;\n if (\"gte\" in filter) output.gte = filter.gte;\n if (\"lt\" in filter) output.lt = filter.lt;\n if (\"lte\" in filter) output.lte = filter.lte;\n return output;\n}\n\nfunction compileWhere(model: ManifestModel, where?: PrismaWhere): PrismaWhereInput | undefined {\n if (!where) return undefined;\n\n const output: PrismaWhereInput = {};\n\n for (const [key, value] of Object.entries(where)) {\n if (key === \"AND\" && Array.isArray(value)) {\n output.AND = value\n .map((entry) => compileWhere(model, entry as PrismaWhere))\n .filter(Boolean) as PrismaWhereInput[];\n continue;\n }\n\n if (key === \"OR\" && Array.isArray(value)) {\n output.OR = value\n .map((entry) => compileWhere(model, entry as PrismaWhere))\n .filter(Boolean) as PrismaWhereInput[];\n continue;\n }\n\n if (key === \"NOT\" && value) {\n const compiled = compileWhere(model, value as PrismaWhere);\n if (compiled) output.NOT = compiled;\n continue;\n }\n\n if (!(key in model.fields)) continue;\n output[key] = compileFilter(model.fields[key]!, value);\n }\n\n return output;\n}\n\nfunction compileOrderBy(orderBy?: Partial<Record<string, \"asc\" | \"desc\">>) {\n if (!orderBy) return undefined;\n const entries = Object.entries(orderBy).filter(([, value]) => value);\n if (!entries.length) return undefined;\n return entries.map(([key, value]) => ({\n [key]: value,\n }));\n}\n\nfunction buildPrismaUniqueWhere(lookup: ManifestUniqueLookup) {\n if (lookup.fields.length === 1) {\n const field = lookup.fields[0]!;\n return {\n [field.name]: lookup.values[field.name],\n };\n }\n\n return {\n [lookup.fields.map((field) => field.name).join(\"_\")]: Object.fromEntries(\n lookup.fields.map((field) => [field.name, lookup.values[field.name]]),\n ),\n };\n}\n\nfunction buildIdentityWhere(model: ManifestModel, row: PrismaRow) {\n return buildPrismaUniqueWhere(resolveRowIdentityLookup(model, row));\n}\n\nfunction createPrismaDriverInternal<TSchema extends SchemaDefinition<any>>(\n config: PrismaDriverConfig<TSchema>,\n state: {\n inTransaction?: boolean;\n } = {},\n) {\n function getDelegate(modelName: ModelName<TSchema>) {\n const key = config.models?.[modelName] ?? modelName;\n const delegate = config.client[key];\n if (!delegate) {\n throw new Error(\n `Prisma delegate \"${String(key)}\" for model \"${String(modelName)}\" is missing.`,\n );\n }\n return delegate;\n }\n\n async function loadRows<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(schema: TSchema, modelName: TModelName, args: FindManyArgs<TSchema, TModelName, TSelect>) {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const rows = await getDelegate(modelName).findMany({\n where: compileWhere(model, args.where as PrismaWhere | undefined),\n orderBy: compileOrderBy(args.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined),\n take: args.take,\n skip: args.skip,\n });\n\n return Promise.all(rows.map((row) => projectRow(schema, modelName, row, args.select)));\n }\n\n async function loadRawOneRow<TModelName extends ModelName<TSchema>>(\n schema: TSchema,\n modelName: TModelName,\n args: {\n where?: PrismaWhere;\n orderBy?: Partial<Record<string, \"asc\" | \"desc\">>;\n },\n ) {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const delegate = getDelegate(modelName);\n\n if (delegate.findFirst) {\n return delegate.findFirst({\n where: compileWhere(model, args.where),\n orderBy: compileOrderBy(args.orderBy),\n });\n }\n\n const rows = await delegate.findMany({\n where: compileWhere(model, args.where),\n orderBy: compileOrderBy(args.orderBy),\n take: 1,\n });\n return rows[0] ?? null;\n }\n\n async function loadOneRow<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(\n schema: TSchema,\n modelName: TModelName,\n args: {\n where?: PrismaWhere;\n orderBy?: Partial<Record<string, \"asc\" | \"desc\">>;\n select?: TSelect;\n },\n ) {\n const row = await loadRawOneRow(schema, modelName, args);\n return row ? projectRow(schema, modelName, row, args.select) : null;\n }\n\n async function projectRow<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(\n schema: TSchema,\n modelName: TModelName,\n row: PrismaRow,\n select?: TSelect,\n ): Promise<SelectedRecord<TSchema, TModelName, TSelect>> {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const output: PrismaRow = {};\n\n if (!select) {\n for (const fieldName of Object.keys(model.fields)) {\n output[fieldName] = row[fieldName];\n }\n return output as SelectedRecord<TSchema, TModelName, TSelect>;\n }\n\n for (const [key, value] of Object.entries(select)) {\n if (value === undefined) continue;\n\n if (key in model.fields && value === true) {\n output[key] = row[key];\n continue;\n }\n\n if (key in schema.models[modelName].relations) {\n output[key] = await resolveRelation(\n schema,\n modelName,\n key as RelationName<TSchema, TModelName>,\n row,\n value as true | FindManyArgs<TSchema, any, any>,\n );\n }\n }\n\n return output as SelectedRecord<TSchema, TModelName, TSelect>;\n }\n\n async function resolveRelation<\n TModelName extends ModelName<TSchema>,\n TRelationName extends RelationName<TSchema, TModelName>,\n >(\n schema: TSchema,\n modelName: TModelName,\n relationName: TRelationName,\n row: PrismaRow,\n value: true | FindManyArgs<TSchema, any, any>,\n ) {\n const manifest = getManifest(schema);\n const relation = schema.models[modelName].relations[relationName];\n const relationArgs = value === true ? {} : value;\n\n if (relation.kind === \"belongsTo\") {\n const foreignField = manifest.models[modelName].fields[relation.foreignKey];\n const targetReference = parseReference(foreignField?.references);\n const targetField =\n targetReference?.field ?? identityField(manifest.models[relation.target]).name;\n const foreignValue = row[relation.foreignKey];\n\n if (foreignValue == null) return null;\n\n return loadOneRow(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [targetField]: foreignValue,\n } as PrismaWhere,\n ),\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n select: relationArgs.select,\n });\n }\n\n if (relation.kind === \"hasOne\") {\n const targetModel = manifest.models[relation.target];\n const foreignField = targetModel.fields[relation.foreignKey];\n const sourceReference = parseReference(foreignField?.references);\n const sourceField = sourceReference?.field ?? identityField(manifest.models[modelName]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return null;\n\n return loadOneRow(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [relation.foreignKey]: sourceValue,\n } as PrismaWhere,\n ),\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n select: relationArgs.select,\n });\n }\n\n if (relation.kind === \"hasMany\") {\n const targetModel = manifest.models[relation.target];\n const foreignField = targetModel.fields[relation.foreignKey];\n const sourceReference = parseReference(foreignField?.references);\n const sourceField = sourceReference?.field ?? identityField(manifest.models[modelName]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return [];\n\n return loadRows(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [relation.foreignKey]: sourceValue,\n } as PrismaWhere,\n ) as any,\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n take: relationArgs.take,\n skip: relationArgs.skip,\n select: relationArgs.select,\n });\n }\n\n const throughModel = manifest.models[relation.through];\n const throughFromReference = parseReference(throughModel.fields[relation.from]?.references);\n const throughToReference = parseReference(throughModel.fields[relation.to]?.references);\n const sourceField =\n throughFromReference?.field ?? identityField(manifest.models[modelName]).name;\n const targetField =\n throughToReference?.field ?? identityField(manifest.models[relation.target]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return [];\n\n const throughRows = await loadRows(schema, relation.through as ModelName<TSchema>, {\n where: {\n [relation.from]: sourceValue,\n } as any,\n });\n\n const targetIds = throughRows\n .map((item: PrismaRow) => item[relation.to])\n .filter((item) => item != null);\n if (!targetIds.length) return [];\n\n return loadRows(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [targetField]: {\n in: targetIds,\n },\n } as PrismaWhere,\n ) as any,\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n take: relationArgs.take,\n skip: relationArgs.skip,\n select: relationArgs.select,\n });\n }\n\n async function runTransaction<TResult>(run: (driver: OrmDriver<TSchema>) => Promise<TResult>) {\n if (state.inTransaction || !config.client.$transaction) {\n return run(createPrismaDriverInternal(config, { inTransaction: true }));\n }\n\n return config.client.$transaction(async (tx) =>\n run(\n createPrismaDriverInternal(\n {\n ...config,\n client: tx,\n },\n {\n inTransaction: true,\n },\n ),\n ),\n );\n }\n\n const driver: OrmDriver<TSchema> = {\n async findMany(schema, model, args) {\n return loadRows(schema, model, args);\n },\n async findFirst(schema, model, args) {\n return loadOneRow(schema, model, args);\n },\n async findUnique(schema, model, args: FindUniqueArgs<TSchema, ModelName<TSchema>, any>) {\n const manifest = getManifest(schema);\n requireUniqueLookup(\n manifest.models[model],\n args.where as Record<string, unknown>,\n \"FindUnique\",\n );\n return loadOneRow(schema, model, args);\n },\n async count(schema, model, args?: CountArgs<TSchema, ModelName<TSchema>>) {\n const manifest = getManifest(schema);\n return getDelegate(model).count({\n where: compileWhere(manifest.models[model], args?.where as PrismaWhere | undefined),\n });\n },\n async create(schema, model, args) {\n const manifest = getManifest(schema);\n const delegate = getDelegate(model);\n const row = await delegate.create({\n data: buildCreateData(\n manifest.models[model],\n args.data as Partial<Record<string, unknown>>,\n ),\n });\n return projectRow(schema, model, row, args.select) as Promise<any>;\n },\n async createMany(schema, model, args) {\n const results: unknown[] = [];\n for (const entry of args.data) {\n results.push(\n await driver.create(schema, model, {\n data: entry,\n select: args.select,\n } as CreateArgs<TSchema, ModelName<TSchema>, any>),\n );\n }\n return results as any;\n },\n async update(schema, model, args) {\n const manifest = getManifest(schema);\n const current = await loadRawOneRow(schema, model, {\n where: args.where as PrismaWhere,\n });\n\n if (!current) return null;\n\n const delegate = getDelegate(model);\n const identityWhere = buildIdentityWhere(manifest.models[model], current);\n const updateData = buildUpdateData(args.data as Partial<Record<string, unknown>>);\n const updated =\n delegate.update?.({\n where: identityWhere,\n data: updateData,\n }) ??\n (async () => {\n await delegate.updateMany({\n where: identityWhere,\n data: updateData,\n });\n return null;\n })();\n\n const row = await updated;\n const nextRow =\n row ??\n (await loadRawOneRow(schema, model, {\n where: identityWhere as PrismaWhere,\n }));\n if (!nextRow) return null;\n\n return projectRow(schema, model, nextRow, args.select) as Promise<any>;\n },\n async updateMany(schema, model, args) {\n const manifest = getManifest(schema);\n const result = await getDelegate(model).updateMany({\n where: compileWhere(manifest.models[model], args.where as PrismaWhere),\n data: buildUpdateData(args.data as Partial<Record<string, unknown>>),\n });\n return Number(result.count ?? 0);\n },\n async upsert(schema, model, args) {\n const manifest = getManifest(schema);\n const lookup = requireUniqueLookup(\n manifest.models[model],\n args.where as Record<string, unknown>,\n \"Upsert\",\n );\n const delegate = getDelegate(model);\n const createData = buildCreateData(\n manifest.models[model],\n mergeUniqueLookupCreateData(\n manifest.models[model],\n args.create as Partial<Record<string, unknown>>,\n lookup,\n \"Upsert\",\n ),\n );\n const updateData = buildUpdateData(args.update as Partial<Record<string, unknown>>);\n validateUniqueLookupUpdateData(\n manifest.models[model],\n args.update as Partial<Record<string, unknown>>,\n lookup,\n \"Upsert\",\n );\n\n const row = await (delegate.upsert?.({\n where: buildPrismaUniqueWhere(lookup),\n create: createData,\n update: updateData,\n }) ??\n runTransaction(async (txDriver) => {\n const existing = await txDriver.findUnique(schema, model, {\n where: args.where as any,\n } as FindUniqueArgs<TSchema, ModelName<TSchema>, undefined>);\n\n if (existing) {\n const updated = await txDriver.update(schema, model, {\n where: args.where as any,\n data: args.update as any,\n } as UpdateArgs<TSchema, ModelName<TSchema>, undefined>);\n if (!updated) {\n throw new Error(`Upsert on model \"${String(model)}\" failed during update.`);\n }\n return updated as PrismaRow;\n }\n\n return txDriver.create(schema, model, {\n data: createData as any,\n } as CreateArgs<TSchema, ModelName<TSchema>, undefined>) as Promise<PrismaRow>;\n }));\n\n return projectRow(schema, model, row, args.select) as Promise<any>;\n },\n async delete(schema, model, args) {\n const manifest = getManifest(schema);\n const current = await loadRawOneRow(schema, model, {\n where: args.where as PrismaWhere,\n });\n if (!current) return 0;\n\n const identityWhere = buildIdentityWhere(manifest.models[model], current);\n const delegate = getDelegate(model);\n\n if (delegate.delete) {\n await delegate.delete({\n where: identityWhere,\n });\n return 1;\n }\n\n const result = await delegate.deleteMany({\n where: identityWhere,\n });\n return Number(result.count ?? 0);\n },\n async deleteMany(schema, model, args) {\n const manifest = getManifest(schema);\n const result = await getDelegate(model).deleteMany({\n where: compileWhere(manifest.models[model], args.where as PrismaWhere),\n });\n return Number(result.count ?? 0);\n },\n async transaction(_schema, run) {\n return runTransaction(run);\n },\n };\n\n return driver;\n}\n\nexport function createPrismaDriver<TSchema extends SchemaDefinition<any>>(\n config: PrismaDriverConfig<TSchema>,\n) {\n return createPrismaDriverInternal(config);\n}\n"],"mappings":"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","names":["targetField","sourceField","sourceValue"]}
package/dist/index.js CHANGED
@@ -1,7 +1,12 @@
1
1
  // src/index.ts
2
2
  import { randomUUID } from "crypto";
3
3
  import {
4
- createManifest
4
+ createManifest,
5
+ mergeUniqueLookupCreateData,
6
+ isOperatorFilterObject,
7
+ requireUniqueLookup,
8
+ resolveRowIdentityLookup,
9
+ validateUniqueLookupUpdateData
5
10
  } from "@farming-labs/orm";
6
11
  var manifestCache = /* @__PURE__ */ new WeakMap();
7
12
  function getManifest(schema) {
@@ -34,9 +39,6 @@ function parseReference(reference) {
34
39
  if (!model || !field) return null;
35
40
  return { model, field };
36
41
  }
37
- function isFilterObject(value) {
38
- return !!value && typeof value === "object" && !(value instanceof Date) && !Array.isArray(value);
39
- }
40
42
  function mergeWhere(...clauses) {
41
43
  const defined = clauses.filter(Boolean);
42
44
  if (!defined.length) return void 0;
@@ -45,73 +47,6 @@ function mergeWhere(...clauses) {
45
47
  AND: defined
46
48
  };
47
49
  }
48
- function extractEqualityValue(filter) {
49
- if (!isFilterObject(filter)) {
50
- return {
51
- supported: true,
52
- value: filter
53
- };
54
- }
55
- const keys = Object.keys(filter);
56
- if (keys.length === 1 && "eq" in filter) {
57
- return {
58
- supported: true,
59
- value: filter.eq
60
- };
61
- }
62
- return {
63
- supported: false,
64
- value: void 0
65
- };
66
- }
67
- function extractUpsertConflict(model, where) {
68
- const keys = Object.keys(where).filter((key) => key !== "AND" && key !== "OR" && key !== "NOT");
69
- if ("AND" in where || "OR" in where || "NOT" in where || keys.length !== 1) {
70
- throw new Error(
71
- `Upsert on model "${model.name}" requires a single unique equality filter in "where".`
72
- );
73
- }
74
- const fieldName = keys[0];
75
- const field = model.fields[fieldName];
76
- if (!field) {
77
- throw new Error(`Unknown field "${fieldName}" on model "${model.name}".`);
78
- }
79
- if (!(field.kind === "id" || field.unique)) {
80
- throw new Error(
81
- `Upsert on model "${model.name}" requires the "where" field "${fieldName}" to be unique or an id field.`
82
- );
83
- }
84
- const { supported, value } = extractEqualityValue(where[fieldName]);
85
- if (!supported || value === void 0 || value === null) {
86
- throw new Error(
87
- `Upsert on model "${model.name}" requires the "where" field "${fieldName}" to use a single non-null equality value.`
88
- );
89
- }
90
- return {
91
- field,
92
- value
93
- };
94
- }
95
- function mergeUpsertCreateData(model, createData, conflict) {
96
- const currentValue = createData[conflict.field.name];
97
- if (currentValue !== void 0 && currentValue !== conflict.value) {
98
- throw new Error(
99
- `Upsert on model "${model.name}" requires create.${conflict.field.name} to match where.${conflict.field.name}.`
100
- );
101
- }
102
- return {
103
- ...createData,
104
- [conflict.field.name]: currentValue ?? conflict.value
105
- };
106
- }
107
- function validateUpsertUpdateData(model, updateData, conflict) {
108
- const nextValue = updateData[conflict.field.name];
109
- if (nextValue !== void 0 && nextValue !== conflict.value) {
110
- throw new Error(
111
- `Upsert on model "${model.name}" cannot change the conflict field "${conflict.field.name}".`
112
- );
113
- }
114
- }
115
50
  function buildCreateData(model, input) {
116
51
  const output = {};
117
52
  for (const field of Object.values(model.fields)) {
@@ -125,8 +60,15 @@ function buildCreateData(model, input) {
125
60
  function buildUpdateData(input) {
126
61
  return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== void 0));
127
62
  }
128
- function compileFilter(filter) {
129
- if (!isFilterObject(filter)) return filter;
63
+ function compileFilter(field, filter) {
64
+ if (!isOperatorFilterObject(filter)) {
65
+ if (field.kind === "json" && filter !== null) {
66
+ return {
67
+ equals: filter
68
+ };
69
+ }
70
+ return filter;
71
+ }
130
72
  const output = {};
131
73
  if ("eq" in filter) output.equals = filter.eq;
132
74
  if ("contains" in filter) output.contains = filter.contains;
@@ -156,7 +98,7 @@ function compileWhere(model, where) {
156
98
  continue;
157
99
  }
158
100
  if (!(key in model.fields)) continue;
159
- output[key] = compileFilter(value);
101
+ output[key] = compileFilter(model.fields[key], value);
160
102
  }
161
103
  return output;
162
104
  }
@@ -168,18 +110,22 @@ function compileOrderBy(orderBy) {
168
110
  [key]: value
169
111
  }));
170
112
  }
171
- function buildIdentityWhere(model, row) {
172
- const field = identityField(model);
173
- const value = row[field.name];
174
- if (value == null) {
175
- throw new Error(
176
- `Model "${model.name}" requires a non-null identity value for field "${field.name}".`
177
- );
113
+ function buildPrismaUniqueWhere(lookup) {
114
+ if (lookup.fields.length === 1) {
115
+ const field = lookup.fields[0];
116
+ return {
117
+ [field.name]: lookup.values[field.name]
118
+ };
178
119
  }
179
120
  return {
180
- [field.name]: value
121
+ [lookup.fields.map((field) => field.name).join("_")]: Object.fromEntries(
122
+ lookup.fields.map((field) => [field.name, lookup.values[field.name]])
123
+ )
181
124
  };
182
125
  }
126
+ function buildIdentityWhere(model, row) {
127
+ return buildPrismaUniqueWhere(resolveRowIdentityLookup(model, row));
128
+ }
183
129
  function createPrismaDriverInternal(config, state = {}) {
184
130
  function getDelegate(modelName) {
185
131
  const key = config.models?.[modelName] ?? modelName;
@@ -365,6 +311,12 @@ function createPrismaDriverInternal(config, state = {}) {
365
311
  return loadOneRow(schema, model, args);
366
312
  },
367
313
  async findUnique(schema, model, args) {
314
+ const manifest = getManifest(schema);
315
+ requireUniqueLookup(
316
+ manifest.models[model],
317
+ args.where,
318
+ "FindUnique"
319
+ );
368
320
  return loadOneRow(schema, model, args);
369
321
  },
370
322
  async count(schema, model, args) {
@@ -432,26 +384,30 @@ function createPrismaDriverInternal(config, state = {}) {
432
384
  },
433
385
  async upsert(schema, model, args) {
434
386
  const manifest = getManifest(schema);
435
- const conflict = extractUpsertConflict(manifest.models[model], args.where);
387
+ const lookup = requireUniqueLookup(
388
+ manifest.models[model],
389
+ args.where,
390
+ "Upsert"
391
+ );
436
392
  const delegate = getDelegate(model);
437
393
  const createData = buildCreateData(
438
394
  manifest.models[model],
439
- mergeUpsertCreateData(
395
+ mergeUniqueLookupCreateData(
440
396
  manifest.models[model],
441
397
  args.create,
442
- conflict
398
+ lookup,
399
+ "Upsert"
443
400
  )
444
401
  );
445
402
  const updateData = buildUpdateData(args.update);
446
- validateUpsertUpdateData(
403
+ validateUniqueLookupUpdateData(
447
404
  manifest.models[model],
448
405
  args.update,
449
- conflict
406
+ lookup,
407
+ "Upsert"
450
408
  );
451
409
  const row = await (delegate.upsert?.({
452
- where: {
453
- [conflict.field.name]: conflict.value
454
- },
410
+ where: buildPrismaUniqueWhere(lookup),
455
411
  create: createData,
456
412
  update: updateData
457
413
  }) ?? runTransaction(async (txDriver) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n createManifest,\n type CountArgs,\n type CreateArgs,\n type CreateManyArgs,\n type DeleteArgs,\n type DeleteManyArgs,\n type FindManyArgs,\n type FindUniqueArgs,\n type ManifestField,\n type ManifestModel,\n type OrmDriver,\n type SchemaManifest,\n type SchemaDefinition,\n type SelectShape,\n type SelectedRecord,\n type UpdateArgs,\n type UpdateManyArgs,\n type UpsertArgs,\n type Where,\n} from \"@farming-labs/orm\";\nimport type { ModelName, RelationName } from \"@farming-labs/orm\";\n\ntype PrismaRow = Record<string, unknown>;\ntype PrismaFilterRecord = Record<string, string | number | boolean | Date | null>;\ntype PrismaWhere = Where<PrismaFilterRecord>;\n\ntype PrismaWhereInput = Record<string, unknown>;\n\ntype PrismaDelegateLike = {\n findMany(args?: Record<string, unknown>): Promise<PrismaRow[]>;\n findFirst?(args?: Record<string, unknown>): Promise<PrismaRow | null>;\n count(args?: Record<string, unknown>): Promise<number>;\n create(args: { data: PrismaRow }): Promise<PrismaRow>;\n update?(args: { where: PrismaRow; data: PrismaRow }): Promise<PrismaRow>;\n updateMany(args: { where?: PrismaWhereInput; data: PrismaRow }): Promise<{ count?: number }>;\n upsert?(args: { where: PrismaRow; create: PrismaRow; update: PrismaRow }): Promise<PrismaRow>;\n delete?(args: { where: PrismaRow }): Promise<PrismaRow>;\n deleteMany(args: { where?: PrismaWhereInput }): Promise<{ count?: number }>;\n};\n\nexport type PrismaClientLike = Record<string, PrismaDelegateLike> & {\n $transaction?<TResult>(run: (tx: PrismaClientLike) => Promise<TResult>): Promise<TResult>;\n};\n\nexport type PrismaDriverConfig<TSchema extends SchemaDefinition<any>> = {\n client: PrismaClientLike;\n models?: Partial<Record<ModelName<TSchema>, string>>;\n};\n\nconst manifestCache = new WeakMap<object, SchemaManifest>();\n\nfunction getManifest(schema: SchemaDefinition<any>) {\n const cached = manifestCache.get(schema);\n if (cached) return cached;\n const next = createManifest(schema);\n manifestCache.set(schema, next);\n return next;\n}\n\nfunction identityField(model: ManifestModel) {\n if (model.fields.id) return model.fields.id;\n const uniqueField = Object.values(model.fields).find((field) => field.unique);\n if (uniqueField) return uniqueField;\n throw new Error(\n `Model \"${model.name}\" requires an \"id\" field or a unique field for the Prisma runtime.`,\n );\n}\n\nfunction applyDefault(value: unknown, field: ManifestField) {\n if (value !== undefined) return value;\n if (field.generated === \"id\") return randomUUID();\n if (field.generated === \"now\") return new Date();\n if (typeof field.defaultValue === \"function\") {\n return (field.defaultValue as () => unknown)();\n }\n return field.defaultValue;\n}\n\nfunction parseReference(reference?: string) {\n if (!reference) return null;\n const [model, field] = reference.split(\".\");\n if (!model || !field) return null;\n return { model, field };\n}\n\nfunction isFilterObject(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !(value instanceof Date) && !Array.isArray(value);\n}\n\nfunction mergeWhere(...clauses: Array<PrismaWhere | undefined>) {\n const defined = clauses.filter(Boolean) as PrismaWhere[];\n if (!defined.length) return undefined;\n if (defined.length === 1) return defined[0];\n return {\n AND: defined,\n } as PrismaWhere;\n}\n\nfunction extractEqualityValue(filter: unknown) {\n if (!isFilterObject(filter)) {\n return {\n supported: true,\n value: filter,\n };\n }\n\n const keys = Object.keys(filter);\n if (keys.length === 1 && \"eq\" in filter) {\n return {\n supported: true,\n value: filter.eq,\n };\n }\n\n return {\n supported: false,\n value: undefined,\n };\n}\n\nfunction extractUpsertConflict(model: ManifestModel, where: PrismaWhere) {\n const keys = Object.keys(where).filter((key) => key !== \"AND\" && key !== \"OR\" && key !== \"NOT\");\n\n if (\"AND\" in where || \"OR\" in where || \"NOT\" in where || keys.length !== 1) {\n throw new Error(\n `Upsert on model \"${model.name}\" requires a single unique equality filter in \"where\".`,\n );\n }\n\n const fieldName = keys[0]!;\n const field = model.fields[fieldName];\n if (!field) {\n throw new Error(`Unknown field \"${fieldName}\" on model \"${model.name}\".`);\n }\n\n if (!(field.kind === \"id\" || field.unique)) {\n throw new Error(\n `Upsert on model \"${model.name}\" requires the \"where\" field \"${fieldName}\" to be unique or an id field.`,\n );\n }\n\n const { supported, value } = extractEqualityValue(where[fieldName]);\n if (!supported || value === undefined || value === null) {\n throw new Error(\n `Upsert on model \"${model.name}\" requires the \"where\" field \"${fieldName}\" to use a single non-null equality value.`,\n );\n }\n\n return {\n field,\n value,\n };\n}\n\nfunction mergeUpsertCreateData(\n model: ManifestModel,\n createData: Partial<Record<string, unknown>>,\n conflict: { field: ManifestField; value: unknown },\n) {\n const currentValue = createData[conflict.field.name];\n if (currentValue !== undefined && currentValue !== conflict.value) {\n throw new Error(\n `Upsert on model \"${model.name}\" requires create.${conflict.field.name} to match where.${conflict.field.name}.`,\n );\n }\n\n return {\n ...createData,\n [conflict.field.name]: currentValue ?? conflict.value,\n };\n}\n\nfunction validateUpsertUpdateData(\n model: ManifestModel,\n updateData: Partial<Record<string, unknown>>,\n conflict: { field: ManifestField; value: unknown },\n) {\n const nextValue = updateData[conflict.field.name];\n if (nextValue !== undefined && nextValue !== conflict.value) {\n throw new Error(\n `Upsert on model \"${model.name}\" cannot change the conflict field \"${conflict.field.name}\".`,\n );\n }\n}\n\nfunction buildCreateData(model: ManifestModel, input: Partial<Record<string, unknown>>) {\n const output: PrismaRow = {};\n\n for (const field of Object.values(model.fields)) {\n const value = applyDefault(input[field.name], field);\n if (value !== undefined) {\n output[field.name] = value;\n }\n }\n\n return output;\n}\n\nfunction buildUpdateData(input: Partial<Record<string, unknown>>) {\n return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined));\n}\n\nfunction compileFilter(filter: unknown) {\n if (!isFilterObject(filter)) return filter;\n\n const output: Record<string, unknown> = {};\n if (\"eq\" in filter) output.equals = filter.eq;\n if (\"contains\" in filter) output.contains = filter.contains;\n if (\"in\" in filter) output.in = filter.in;\n if (\"not\" in filter) output.not = filter.not;\n if (\"gt\" in filter) output.gt = filter.gt;\n if (\"gte\" in filter) output.gte = filter.gte;\n if (\"lt\" in filter) output.lt = filter.lt;\n if (\"lte\" in filter) output.lte = filter.lte;\n return output;\n}\n\nfunction compileWhere(model: ManifestModel, where?: PrismaWhere): PrismaWhereInput | undefined {\n if (!where) return undefined;\n\n const output: PrismaWhereInput = {};\n\n for (const [key, value] of Object.entries(where)) {\n if (key === \"AND\" && Array.isArray(value)) {\n output.AND = value\n .map((entry) => compileWhere(model, entry))\n .filter(Boolean) as PrismaWhereInput[];\n continue;\n }\n\n if (key === \"OR\" && Array.isArray(value)) {\n output.OR = value\n .map((entry) => compileWhere(model, entry))\n .filter(Boolean) as PrismaWhereInput[];\n continue;\n }\n\n if (key === \"NOT\" && value) {\n const compiled = compileWhere(model, value as PrismaWhere);\n if (compiled) output.NOT = compiled;\n continue;\n }\n\n if (!(key in model.fields)) continue;\n output[key] = compileFilter(value);\n }\n\n return output;\n}\n\nfunction compileOrderBy(orderBy?: Partial<Record<string, \"asc\" | \"desc\">>) {\n if (!orderBy) return undefined;\n const entries = Object.entries(orderBy).filter(([, value]) => value);\n if (!entries.length) return undefined;\n return entries.map(([key, value]) => ({\n [key]: value,\n }));\n}\n\nfunction buildIdentityWhere(model: ManifestModel, row: PrismaRow) {\n const field = identityField(model);\n const value = row[field.name];\n if (value == null) {\n throw new Error(\n `Model \"${model.name}\" requires a non-null identity value for field \"${field.name}\".`,\n );\n }\n return {\n [field.name]: value,\n };\n}\n\nfunction createPrismaDriverInternal<TSchema extends SchemaDefinition<any>>(\n config: PrismaDriverConfig<TSchema>,\n state: {\n inTransaction?: boolean;\n } = {},\n) {\n function getDelegate(modelName: ModelName<TSchema>) {\n const key = config.models?.[modelName] ?? modelName;\n const delegate = config.client[key];\n if (!delegate) {\n throw new Error(\n `Prisma delegate \"${String(key)}\" for model \"${String(modelName)}\" is missing.`,\n );\n }\n return delegate;\n }\n\n async function loadRows<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(schema: TSchema, modelName: TModelName, args: FindManyArgs<TSchema, TModelName, TSelect>) {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const rows = await getDelegate(modelName).findMany({\n where: compileWhere(model, args.where as PrismaWhere | undefined),\n orderBy: compileOrderBy(args.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined),\n take: args.take,\n skip: args.skip,\n });\n\n return Promise.all(rows.map((row) => projectRow(schema, modelName, row, args.select)));\n }\n\n async function loadRawOneRow<TModelName extends ModelName<TSchema>>(\n schema: TSchema,\n modelName: TModelName,\n args: {\n where?: PrismaWhere;\n orderBy?: Partial<Record<string, \"asc\" | \"desc\">>;\n },\n ) {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const delegate = getDelegate(modelName);\n\n if (delegate.findFirst) {\n return delegate.findFirst({\n where: compileWhere(model, args.where),\n orderBy: compileOrderBy(args.orderBy),\n });\n }\n\n const rows = await delegate.findMany({\n where: compileWhere(model, args.where),\n orderBy: compileOrderBy(args.orderBy),\n take: 1,\n });\n return rows[0] ?? null;\n }\n\n async function loadOneRow<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(\n schema: TSchema,\n modelName: TModelName,\n args: {\n where?: PrismaWhere;\n orderBy?: Partial<Record<string, \"asc\" | \"desc\">>;\n select?: TSelect;\n },\n ) {\n const row = await loadRawOneRow(schema, modelName, args);\n return row ? projectRow(schema, modelName, row, args.select) : null;\n }\n\n async function projectRow<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(\n schema: TSchema,\n modelName: TModelName,\n row: PrismaRow,\n select?: TSelect,\n ): Promise<SelectedRecord<TSchema, TModelName, TSelect>> {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const output: PrismaRow = {};\n\n if (!select) {\n for (const fieldName of Object.keys(model.fields)) {\n output[fieldName] = row[fieldName];\n }\n return output as SelectedRecord<TSchema, TModelName, TSelect>;\n }\n\n for (const [key, value] of Object.entries(select)) {\n if (value === undefined) continue;\n\n if (key in model.fields && value === true) {\n output[key] = row[key];\n continue;\n }\n\n if (key in schema.models[modelName].relations) {\n output[key] = await resolveRelation(\n schema,\n modelName,\n key as RelationName<TSchema, TModelName>,\n row,\n value as true | FindManyArgs<TSchema, any, any>,\n );\n }\n }\n\n return output as SelectedRecord<TSchema, TModelName, TSelect>;\n }\n\n async function resolveRelation<\n TModelName extends ModelName<TSchema>,\n TRelationName extends RelationName<TSchema, TModelName>,\n >(\n schema: TSchema,\n modelName: TModelName,\n relationName: TRelationName,\n row: PrismaRow,\n value: true | FindManyArgs<TSchema, any, any>,\n ) {\n const manifest = getManifest(schema);\n const relation = schema.models[modelName].relations[relationName];\n const relationArgs = value === true ? {} : value;\n\n if (relation.kind === \"belongsTo\") {\n const foreignField = manifest.models[modelName].fields[relation.foreignKey];\n const targetReference = parseReference(foreignField?.references);\n const targetField =\n targetReference?.field ?? identityField(manifest.models[relation.target]).name;\n const foreignValue = row[relation.foreignKey];\n\n if (foreignValue == null) return null;\n\n return loadOneRow(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [targetField]: foreignValue,\n } as PrismaWhere,\n ),\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n select: relationArgs.select,\n });\n }\n\n if (relation.kind === \"hasOne\") {\n const targetModel = manifest.models[relation.target];\n const foreignField = targetModel.fields[relation.foreignKey];\n const sourceReference = parseReference(foreignField?.references);\n const sourceField = sourceReference?.field ?? identityField(manifest.models[modelName]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return null;\n\n return loadOneRow(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [relation.foreignKey]: sourceValue,\n } as PrismaWhere,\n ),\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n select: relationArgs.select,\n });\n }\n\n if (relation.kind === \"hasMany\") {\n const targetModel = manifest.models[relation.target];\n const foreignField = targetModel.fields[relation.foreignKey];\n const sourceReference = parseReference(foreignField?.references);\n const sourceField = sourceReference?.field ?? identityField(manifest.models[modelName]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return [];\n\n return loadRows(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [relation.foreignKey]: sourceValue,\n } as PrismaWhere,\n ) as any,\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n take: relationArgs.take,\n skip: relationArgs.skip,\n select: relationArgs.select,\n });\n }\n\n const throughModel = manifest.models[relation.through];\n const throughFromReference = parseReference(throughModel.fields[relation.from]?.references);\n const throughToReference = parseReference(throughModel.fields[relation.to]?.references);\n const sourceField =\n throughFromReference?.field ?? identityField(manifest.models[modelName]).name;\n const targetField =\n throughToReference?.field ?? identityField(manifest.models[relation.target]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return [];\n\n const throughRows = await loadRows(schema, relation.through as ModelName<TSchema>, {\n where: {\n [relation.from]: sourceValue,\n } as any,\n });\n\n const targetIds = throughRows\n .map((item: PrismaRow) => item[relation.to])\n .filter((item) => item != null);\n if (!targetIds.length) return [];\n\n return loadRows(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [targetField]: {\n in: targetIds,\n },\n } as PrismaWhere,\n ) as any,\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n take: relationArgs.take,\n skip: relationArgs.skip,\n select: relationArgs.select,\n });\n }\n\n async function runTransaction<TResult>(run: (driver: OrmDriver<TSchema>) => Promise<TResult>) {\n if (state.inTransaction || !config.client.$transaction) {\n return run(createPrismaDriverInternal(config, { inTransaction: true }));\n }\n\n return config.client.$transaction(async (tx) =>\n run(\n createPrismaDriverInternal(\n {\n ...config,\n client: tx,\n },\n {\n inTransaction: true,\n },\n ),\n ),\n );\n }\n\n const driver: OrmDriver<TSchema> = {\n async findMany(schema, model, args) {\n return loadRows(schema, model, args);\n },\n async findFirst(schema, model, args) {\n return loadOneRow(schema, model, args);\n },\n async findUnique(schema, model, args: FindUniqueArgs<TSchema, ModelName<TSchema>, any>) {\n return loadOneRow(schema, model, args);\n },\n async count(schema, model, args?: CountArgs<TSchema, ModelName<TSchema>>) {\n const manifest = getManifest(schema);\n return getDelegate(model).count({\n where: compileWhere(manifest.models[model], args?.where as PrismaWhere | undefined),\n });\n },\n async create(schema, model, args) {\n const manifest = getManifest(schema);\n const delegate = getDelegate(model);\n const row = await delegate.create({\n data: buildCreateData(\n manifest.models[model],\n args.data as Partial<Record<string, unknown>>,\n ),\n });\n return projectRow(schema, model, row, args.select) as Promise<any>;\n },\n async createMany(schema, model, args) {\n const results: unknown[] = [];\n for (const entry of args.data) {\n results.push(\n await driver.create(schema, model, {\n data: entry,\n select: args.select,\n } as CreateArgs<TSchema, ModelName<TSchema>, any>),\n );\n }\n return results as any;\n },\n async update(schema, model, args) {\n const manifest = getManifest(schema);\n const current = await loadRawOneRow(schema, model, {\n where: args.where as PrismaWhere,\n });\n\n if (!current) return null;\n\n const delegate = getDelegate(model);\n const identityWhere = buildIdentityWhere(manifest.models[model], current);\n const updateData = buildUpdateData(args.data as Partial<Record<string, unknown>>);\n const updated =\n delegate.update?.({\n where: identityWhere,\n data: updateData,\n }) ??\n (async () => {\n await delegate.updateMany({\n where: identityWhere,\n data: updateData,\n });\n return null;\n })();\n\n const row = await updated;\n const nextRow =\n row ??\n (await loadRawOneRow(schema, model, {\n where: identityWhere as PrismaWhere,\n }));\n if (!nextRow) return null;\n\n return projectRow(schema, model, nextRow, args.select) as Promise<any>;\n },\n async updateMany(schema, model, args) {\n const manifest = getManifest(schema);\n const result = await getDelegate(model).updateMany({\n where: compileWhere(manifest.models[model], args.where as PrismaWhere),\n data: buildUpdateData(args.data as Partial<Record<string, unknown>>),\n });\n return Number(result.count ?? 0);\n },\n async upsert(schema, model, args) {\n const manifest = getManifest(schema);\n const conflict = extractUpsertConflict(manifest.models[model], args.where as PrismaWhere);\n const delegate = getDelegate(model);\n const createData = buildCreateData(\n manifest.models[model],\n mergeUpsertCreateData(\n manifest.models[model],\n args.create as Partial<Record<string, unknown>>,\n conflict,\n ),\n );\n const updateData = buildUpdateData(args.update as Partial<Record<string, unknown>>);\n validateUpsertUpdateData(\n manifest.models[model],\n args.update as Partial<Record<string, unknown>>,\n conflict,\n );\n\n const row = await (delegate.upsert?.({\n where: {\n [conflict.field.name]: conflict.value,\n },\n create: createData,\n update: updateData,\n }) ??\n runTransaction(async (txDriver) => {\n const existing = await txDriver.findUnique(schema, model, {\n where: args.where as any,\n } as FindUniqueArgs<TSchema, ModelName<TSchema>, undefined>);\n\n if (existing) {\n const updated = await txDriver.update(schema, model, {\n where: args.where as any,\n data: args.update as any,\n } as UpdateArgs<TSchema, ModelName<TSchema>, undefined>);\n if (!updated) {\n throw new Error(`Upsert on model \"${String(model)}\" failed during update.`);\n }\n return updated as PrismaRow;\n }\n\n return txDriver.create(schema, model, {\n data: createData as any,\n } as CreateArgs<TSchema, ModelName<TSchema>, undefined>) as Promise<PrismaRow>;\n }));\n\n return projectRow(schema, model, row, args.select) as Promise<any>;\n },\n async delete(schema, model, args) {\n const manifest = getManifest(schema);\n const current = await loadRawOneRow(schema, model, {\n where: args.where as PrismaWhere,\n });\n if (!current) return 0;\n\n const identityWhere = buildIdentityWhere(manifest.models[model], current);\n const delegate = getDelegate(model);\n\n if (delegate.delete) {\n await delegate.delete({\n where: identityWhere,\n });\n return 1;\n }\n\n const result = await delegate.deleteMany({\n where: identityWhere,\n });\n return Number(result.count ?? 0);\n },\n async deleteMany(schema, model, args) {\n const manifest = getManifest(schema);\n const result = await getDelegate(model).deleteMany({\n where: compileWhere(manifest.models[model], args.where as PrismaWhere),\n });\n return Number(result.count ?? 0);\n },\n async transaction(_schema, run) {\n return runTransaction(run);\n },\n };\n\n return driver;\n}\n\nexport function createPrismaDriver<TSchema extends SchemaDefinition<any>>(\n config: PrismaDriverConfig<TSchema>,\n) {\n return createPrismaDriverInternal(config);\n}\n"],"mappings":"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","names":["targetField","sourceField","sourceValue"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n createManifest,\n type CountArgs,\n type CreateArgs,\n type CreateManyArgs,\n type DeleteArgs,\n type DeleteManyArgs,\n type FindManyArgs,\n type FindUniqueArgs,\n type ManifestField,\n type ManifestModel,\n mergeUniqueLookupCreateData,\n type OrmDriver,\n isOperatorFilterObject,\n requireUniqueLookup,\n resolveRowIdentityLookup,\n type SchemaManifest,\n type SchemaDefinition,\n type SelectShape,\n type SelectedRecord,\n type ManifestUniqueLookup,\n type UpdateArgs,\n type UpdateManyArgs,\n type UpsertArgs,\n validateUniqueLookupUpdateData,\n type Where,\n} from \"@farming-labs/orm\";\nimport type { ModelName, RelationName } from \"@farming-labs/orm\";\n\ntype PrismaRow = Record<string, unknown>;\ntype PrismaWhere = Where<Record<string, unknown>>;\n\ntype PrismaWhereInput = Record<string, unknown>;\n\ntype PrismaDelegateLike = {\n findMany(args?: Record<string, unknown>): Promise<PrismaRow[]>;\n findFirst?(args?: Record<string, unknown>): Promise<PrismaRow | null>;\n count(args?: Record<string, unknown>): Promise<number>;\n create(args: { data: PrismaRow }): Promise<PrismaRow>;\n update?(args: { where: PrismaRow; data: PrismaRow }): Promise<PrismaRow>;\n updateMany(args: { where?: PrismaWhereInput; data: PrismaRow }): Promise<{ count?: number }>;\n upsert?(args: { where: PrismaRow; create: PrismaRow; update: PrismaRow }): Promise<PrismaRow>;\n delete?(args: { where: PrismaRow }): Promise<PrismaRow>;\n deleteMany(args: { where?: PrismaWhereInput }): Promise<{ count?: number }>;\n};\n\nexport type PrismaClientLike = Record<string, PrismaDelegateLike> & {\n $transaction?<TResult>(run: (tx: PrismaClientLike) => Promise<TResult>): Promise<TResult>;\n};\n\nexport type PrismaDriverConfig<TSchema extends SchemaDefinition<any>> = {\n client: PrismaClientLike;\n models?: Partial<Record<ModelName<TSchema>, string>>;\n};\n\nconst manifestCache = new WeakMap<object, SchemaManifest>();\n\nfunction getManifest(schema: SchemaDefinition<any>) {\n const cached = manifestCache.get(schema);\n if (cached) return cached;\n const next = createManifest(schema);\n manifestCache.set(schema, next);\n return next;\n}\n\nfunction identityField(model: ManifestModel) {\n if (model.fields.id) return model.fields.id;\n const uniqueField = Object.values(model.fields).find((field) => field.unique);\n if (uniqueField) return uniqueField;\n throw new Error(\n `Model \"${model.name}\" requires an \"id\" field or a unique field for the Prisma runtime.`,\n );\n}\n\nfunction applyDefault(value: unknown, field: ManifestField) {\n if (value !== undefined) return value;\n if (field.generated === \"id\") return randomUUID();\n if (field.generated === \"now\") return new Date();\n if (typeof field.defaultValue === \"function\") {\n return (field.defaultValue as () => unknown)();\n }\n return field.defaultValue;\n}\n\nfunction parseReference(reference?: string) {\n if (!reference) return null;\n const [model, field] = reference.split(\".\");\n if (!model || !field) return null;\n return { model, field };\n}\n\nfunction mergeWhere(...clauses: Array<PrismaWhere | undefined>) {\n const defined = clauses.filter(Boolean) as PrismaWhere[];\n if (!defined.length) return undefined;\n if (defined.length === 1) return defined[0];\n return {\n AND: defined,\n } as PrismaWhere;\n}\n\nfunction buildCreateData(model: ManifestModel, input: Partial<Record<string, unknown>>) {\n const output: PrismaRow = {};\n\n for (const field of Object.values(model.fields)) {\n const value = applyDefault(input[field.name], field);\n if (value !== undefined) {\n output[field.name] = value;\n }\n }\n\n return output;\n}\n\nfunction buildUpdateData(input: Partial<Record<string, unknown>>) {\n return Object.fromEntries(Object.entries(input).filter(([, value]) => value !== undefined));\n}\n\nfunction compileFilter(field: ManifestField, filter: unknown) {\n if (!isOperatorFilterObject(filter)) {\n if (field.kind === \"json\" && filter !== null) {\n return {\n equals: filter,\n };\n }\n return filter;\n }\n\n const output: Record<string, unknown> = {};\n if (\"eq\" in filter) output.equals = filter.eq;\n if (\"contains\" in filter) output.contains = filter.contains;\n if (\"in\" in filter) output.in = filter.in;\n if (\"not\" in filter) output.not = filter.not;\n if (\"gt\" in filter) output.gt = filter.gt;\n if (\"gte\" in filter) output.gte = filter.gte;\n if (\"lt\" in filter) output.lt = filter.lt;\n if (\"lte\" in filter) output.lte = filter.lte;\n return output;\n}\n\nfunction compileWhere(model: ManifestModel, where?: PrismaWhere): PrismaWhereInput | undefined {\n if (!where) return undefined;\n\n const output: PrismaWhereInput = {};\n\n for (const [key, value] of Object.entries(where)) {\n if (key === \"AND\" && Array.isArray(value)) {\n output.AND = value\n .map((entry) => compileWhere(model, entry as PrismaWhere))\n .filter(Boolean) as PrismaWhereInput[];\n continue;\n }\n\n if (key === \"OR\" && Array.isArray(value)) {\n output.OR = value\n .map((entry) => compileWhere(model, entry as PrismaWhere))\n .filter(Boolean) as PrismaWhereInput[];\n continue;\n }\n\n if (key === \"NOT\" && value) {\n const compiled = compileWhere(model, value as PrismaWhere);\n if (compiled) output.NOT = compiled;\n continue;\n }\n\n if (!(key in model.fields)) continue;\n output[key] = compileFilter(model.fields[key]!, value);\n }\n\n return output;\n}\n\nfunction compileOrderBy(orderBy?: Partial<Record<string, \"asc\" | \"desc\">>) {\n if (!orderBy) return undefined;\n const entries = Object.entries(orderBy).filter(([, value]) => value);\n if (!entries.length) return undefined;\n return entries.map(([key, value]) => ({\n [key]: value,\n }));\n}\n\nfunction buildPrismaUniqueWhere(lookup: ManifestUniqueLookup) {\n if (lookup.fields.length === 1) {\n const field = lookup.fields[0]!;\n return {\n [field.name]: lookup.values[field.name],\n };\n }\n\n return {\n [lookup.fields.map((field) => field.name).join(\"_\")]: Object.fromEntries(\n lookup.fields.map((field) => [field.name, lookup.values[field.name]]),\n ),\n };\n}\n\nfunction buildIdentityWhere(model: ManifestModel, row: PrismaRow) {\n return buildPrismaUniqueWhere(resolveRowIdentityLookup(model, row));\n}\n\nfunction createPrismaDriverInternal<TSchema extends SchemaDefinition<any>>(\n config: PrismaDriverConfig<TSchema>,\n state: {\n inTransaction?: boolean;\n } = {},\n) {\n function getDelegate(modelName: ModelName<TSchema>) {\n const key = config.models?.[modelName] ?? modelName;\n const delegate = config.client[key];\n if (!delegate) {\n throw new Error(\n `Prisma delegate \"${String(key)}\" for model \"${String(modelName)}\" is missing.`,\n );\n }\n return delegate;\n }\n\n async function loadRows<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(schema: TSchema, modelName: TModelName, args: FindManyArgs<TSchema, TModelName, TSelect>) {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const rows = await getDelegate(modelName).findMany({\n where: compileWhere(model, args.where as PrismaWhere | undefined),\n orderBy: compileOrderBy(args.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined),\n take: args.take,\n skip: args.skip,\n });\n\n return Promise.all(rows.map((row) => projectRow(schema, modelName, row, args.select)));\n }\n\n async function loadRawOneRow<TModelName extends ModelName<TSchema>>(\n schema: TSchema,\n modelName: TModelName,\n args: {\n where?: PrismaWhere;\n orderBy?: Partial<Record<string, \"asc\" | \"desc\">>;\n },\n ) {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const delegate = getDelegate(modelName);\n\n if (delegate.findFirst) {\n return delegate.findFirst({\n where: compileWhere(model, args.where),\n orderBy: compileOrderBy(args.orderBy),\n });\n }\n\n const rows = await delegate.findMany({\n where: compileWhere(model, args.where),\n orderBy: compileOrderBy(args.orderBy),\n take: 1,\n });\n return rows[0] ?? null;\n }\n\n async function loadOneRow<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(\n schema: TSchema,\n modelName: TModelName,\n args: {\n where?: PrismaWhere;\n orderBy?: Partial<Record<string, \"asc\" | \"desc\">>;\n select?: TSelect;\n },\n ) {\n const row = await loadRawOneRow(schema, modelName, args);\n return row ? projectRow(schema, modelName, row, args.select) : null;\n }\n\n async function projectRow<\n TModelName extends ModelName<TSchema>,\n TSelect extends SelectShape<TSchema, TModelName> | undefined,\n >(\n schema: TSchema,\n modelName: TModelName,\n row: PrismaRow,\n select?: TSelect,\n ): Promise<SelectedRecord<TSchema, TModelName, TSelect>> {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const output: PrismaRow = {};\n\n if (!select) {\n for (const fieldName of Object.keys(model.fields)) {\n output[fieldName] = row[fieldName];\n }\n return output as SelectedRecord<TSchema, TModelName, TSelect>;\n }\n\n for (const [key, value] of Object.entries(select)) {\n if (value === undefined) continue;\n\n if (key in model.fields && value === true) {\n output[key] = row[key];\n continue;\n }\n\n if (key in schema.models[modelName].relations) {\n output[key] = await resolveRelation(\n schema,\n modelName,\n key as RelationName<TSchema, TModelName>,\n row,\n value as true | FindManyArgs<TSchema, any, any>,\n );\n }\n }\n\n return output as SelectedRecord<TSchema, TModelName, TSelect>;\n }\n\n async function resolveRelation<\n TModelName extends ModelName<TSchema>,\n TRelationName extends RelationName<TSchema, TModelName>,\n >(\n schema: TSchema,\n modelName: TModelName,\n relationName: TRelationName,\n row: PrismaRow,\n value: true | FindManyArgs<TSchema, any, any>,\n ) {\n const manifest = getManifest(schema);\n const relation = schema.models[modelName].relations[relationName];\n const relationArgs = value === true ? {} : value;\n\n if (relation.kind === \"belongsTo\") {\n const foreignField = manifest.models[modelName].fields[relation.foreignKey];\n const targetReference = parseReference(foreignField?.references);\n const targetField =\n targetReference?.field ?? identityField(manifest.models[relation.target]).name;\n const foreignValue = row[relation.foreignKey];\n\n if (foreignValue == null) return null;\n\n return loadOneRow(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [targetField]: foreignValue,\n } as PrismaWhere,\n ),\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n select: relationArgs.select,\n });\n }\n\n if (relation.kind === \"hasOne\") {\n const targetModel = manifest.models[relation.target];\n const foreignField = targetModel.fields[relation.foreignKey];\n const sourceReference = parseReference(foreignField?.references);\n const sourceField = sourceReference?.field ?? identityField(manifest.models[modelName]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return null;\n\n return loadOneRow(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [relation.foreignKey]: sourceValue,\n } as PrismaWhere,\n ),\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n select: relationArgs.select,\n });\n }\n\n if (relation.kind === \"hasMany\") {\n const targetModel = manifest.models[relation.target];\n const foreignField = targetModel.fields[relation.foreignKey];\n const sourceReference = parseReference(foreignField?.references);\n const sourceField = sourceReference?.field ?? identityField(manifest.models[modelName]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return [];\n\n return loadRows(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [relation.foreignKey]: sourceValue,\n } as PrismaWhere,\n ) as any,\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n take: relationArgs.take,\n skip: relationArgs.skip,\n select: relationArgs.select,\n });\n }\n\n const throughModel = manifest.models[relation.through];\n const throughFromReference = parseReference(throughModel.fields[relation.from]?.references);\n const throughToReference = parseReference(throughModel.fields[relation.to]?.references);\n const sourceField =\n throughFromReference?.field ?? identityField(manifest.models[modelName]).name;\n const targetField =\n throughToReference?.field ?? identityField(manifest.models[relation.target]).name;\n const sourceValue = row[sourceField];\n\n if (sourceValue == null) return [];\n\n const throughRows = await loadRows(schema, relation.through as ModelName<TSchema>, {\n where: {\n [relation.from]: sourceValue,\n } as any,\n });\n\n const targetIds = throughRows\n .map((item: PrismaRow) => item[relation.to])\n .filter((item) => item != null);\n if (!targetIds.length) return [];\n\n return loadRows(schema, relation.target as ModelName<TSchema>, {\n where: mergeWhere(\n relationArgs.where as PrismaWhere | undefined,\n {\n [targetField]: {\n in: targetIds,\n },\n } as PrismaWhere,\n ) as any,\n orderBy: relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n take: relationArgs.take,\n skip: relationArgs.skip,\n select: relationArgs.select,\n });\n }\n\n async function runTransaction<TResult>(run: (driver: OrmDriver<TSchema>) => Promise<TResult>) {\n if (state.inTransaction || !config.client.$transaction) {\n return run(createPrismaDriverInternal(config, { inTransaction: true }));\n }\n\n return config.client.$transaction(async (tx) =>\n run(\n createPrismaDriverInternal(\n {\n ...config,\n client: tx,\n },\n {\n inTransaction: true,\n },\n ),\n ),\n );\n }\n\n const driver: OrmDriver<TSchema> = {\n async findMany(schema, model, args) {\n return loadRows(schema, model, args);\n },\n async findFirst(schema, model, args) {\n return loadOneRow(schema, model, args);\n },\n async findUnique(schema, model, args: FindUniqueArgs<TSchema, ModelName<TSchema>, any>) {\n const manifest = getManifest(schema);\n requireUniqueLookup(\n manifest.models[model],\n args.where as Record<string, unknown>,\n \"FindUnique\",\n );\n return loadOneRow(schema, model, args);\n },\n async count(schema, model, args?: CountArgs<TSchema, ModelName<TSchema>>) {\n const manifest = getManifest(schema);\n return getDelegate(model).count({\n where: compileWhere(manifest.models[model], args?.where as PrismaWhere | undefined),\n });\n },\n async create(schema, model, args) {\n const manifest = getManifest(schema);\n const delegate = getDelegate(model);\n const row = await delegate.create({\n data: buildCreateData(\n manifest.models[model],\n args.data as Partial<Record<string, unknown>>,\n ),\n });\n return projectRow(schema, model, row, args.select) as Promise<any>;\n },\n async createMany(schema, model, args) {\n const results: unknown[] = [];\n for (const entry of args.data) {\n results.push(\n await driver.create(schema, model, {\n data: entry,\n select: args.select,\n } as CreateArgs<TSchema, ModelName<TSchema>, any>),\n );\n }\n return results as any;\n },\n async update(schema, model, args) {\n const manifest = getManifest(schema);\n const current = await loadRawOneRow(schema, model, {\n where: args.where as PrismaWhere,\n });\n\n if (!current) return null;\n\n const delegate = getDelegate(model);\n const identityWhere = buildIdentityWhere(manifest.models[model], current);\n const updateData = buildUpdateData(args.data as Partial<Record<string, unknown>>);\n const updated =\n delegate.update?.({\n where: identityWhere,\n data: updateData,\n }) ??\n (async () => {\n await delegate.updateMany({\n where: identityWhere,\n data: updateData,\n });\n return null;\n })();\n\n const row = await updated;\n const nextRow =\n row ??\n (await loadRawOneRow(schema, model, {\n where: identityWhere as PrismaWhere,\n }));\n if (!nextRow) return null;\n\n return projectRow(schema, model, nextRow, args.select) as Promise<any>;\n },\n async updateMany(schema, model, args) {\n const manifest = getManifest(schema);\n const result = await getDelegate(model).updateMany({\n where: compileWhere(manifest.models[model], args.where as PrismaWhere),\n data: buildUpdateData(args.data as Partial<Record<string, unknown>>),\n });\n return Number(result.count ?? 0);\n },\n async upsert(schema, model, args) {\n const manifest = getManifest(schema);\n const lookup = requireUniqueLookup(\n manifest.models[model],\n args.where as Record<string, unknown>,\n \"Upsert\",\n );\n const delegate = getDelegate(model);\n const createData = buildCreateData(\n manifest.models[model],\n mergeUniqueLookupCreateData(\n manifest.models[model],\n args.create as Partial<Record<string, unknown>>,\n lookup,\n \"Upsert\",\n ),\n );\n const updateData = buildUpdateData(args.update as Partial<Record<string, unknown>>);\n validateUniqueLookupUpdateData(\n manifest.models[model],\n args.update as Partial<Record<string, unknown>>,\n lookup,\n \"Upsert\",\n );\n\n const row = await (delegate.upsert?.({\n where: buildPrismaUniqueWhere(lookup),\n create: createData,\n update: updateData,\n }) ??\n runTransaction(async (txDriver) => {\n const existing = await txDriver.findUnique(schema, model, {\n where: args.where as any,\n } as FindUniqueArgs<TSchema, ModelName<TSchema>, undefined>);\n\n if (existing) {\n const updated = await txDriver.update(schema, model, {\n where: args.where as any,\n data: args.update as any,\n } as UpdateArgs<TSchema, ModelName<TSchema>, undefined>);\n if (!updated) {\n throw new Error(`Upsert on model \"${String(model)}\" failed during update.`);\n }\n return updated as PrismaRow;\n }\n\n return txDriver.create(schema, model, {\n data: createData as any,\n } as CreateArgs<TSchema, ModelName<TSchema>, undefined>) as Promise<PrismaRow>;\n }));\n\n return projectRow(schema, model, row, args.select) as Promise<any>;\n },\n async delete(schema, model, args) {\n const manifest = getManifest(schema);\n const current = await loadRawOneRow(schema, model, {\n where: args.where as PrismaWhere,\n });\n if (!current) return 0;\n\n const identityWhere = buildIdentityWhere(manifest.models[model], current);\n const delegate = getDelegate(model);\n\n if (delegate.delete) {\n await delegate.delete({\n where: identityWhere,\n });\n return 1;\n }\n\n const result = await delegate.deleteMany({\n where: identityWhere,\n });\n return Number(result.count ?? 0);\n },\n async deleteMany(schema, model, args) {\n const manifest = getManifest(schema);\n const result = await getDelegate(model).deleteMany({\n where: compileWhere(manifest.models[model], args.where as PrismaWhere),\n });\n return Number(result.count ?? 0);\n },\n async transaction(_schema, run) {\n return runTransaction(run);\n },\n };\n\n return driver;\n}\n\nexport function createPrismaDriver<TSchema extends SchemaDefinition<any>>(\n config: PrismaDriverConfig<TSchema>,\n) {\n return createPrismaDriverInternal(config);\n}\n"],"mappings":"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","names":["targetField","sourceField","sourceValue"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/orm-prisma",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -19,7 +19,7 @@
19
19
  "access": "public"
20
20
  },
21
21
  "dependencies": {
22
- "@farming-labs/orm": "0.0.9"
22
+ "@farming-labs/orm": "0.0.11"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@prisma/client": "^6.5.0",