@farming-labs/orm-prisma 0.0.11 → 0.0.13

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
@@ -25,6 +25,7 @@ __export(index_exports, {
25
25
  module.exports = __toCommonJS(index_exports);
26
26
  var import_node_crypto = require("crypto");
27
27
  var import_orm = require("@farming-labs/orm");
28
+ var pluralize = (value) => value.endsWith("s") ? value : `${value}s`;
28
29
  var manifestCache = /* @__PURE__ */ new WeakMap();
29
30
  function getManifest(schema) {
30
31
  const cached = manifestCache.get(schema);
@@ -127,6 +128,80 @@ function compileOrderBy(orderBy) {
127
128
  [key]: value
128
129
  }));
129
130
  }
131
+ function supportsNativePrismaManyToManyArgs(args) {
132
+ return args.where === void 0 && args.orderBy === void 0 && args.take === void 0 && args.skip === void 0;
133
+ }
134
+ function prismaManyToManyJoinKeys(relation) {
135
+ return {
136
+ throughRelationName: pluralize(relation.through),
137
+ targetRelationName: relation.target
138
+ };
139
+ }
140
+ function compilePrismaSelect(schema, modelName, select) {
141
+ const manifest = getManifest(schema);
142
+ const model = manifest.models[modelName];
143
+ const output = {};
144
+ const hiddenScalarKeys = /* @__PURE__ */ new Set();
145
+ for (const [key, value] of Object.entries(select)) {
146
+ if (value === void 0) continue;
147
+ if (key in model.fields && value === true) {
148
+ output[key] = true;
149
+ continue;
150
+ }
151
+ if (!(key in schema.models[modelName].relations)) continue;
152
+ const relation = schema.models[modelName].relations[key];
153
+ const relationArgs = value === true ? {} : value;
154
+ if (relation.kind === "manyToMany") {
155
+ if (supportsNativePrismaManyToManyArgs(relationArgs)) {
156
+ const targetModel2 = relation.target;
157
+ const { throughRelationName, targetRelationName } = prismaManyToManyJoinKeys(relation);
158
+ output[throughRelationName] = {
159
+ select: {
160
+ [targetRelationName]: relationArgs.select ? {
161
+ select: compilePrismaSelect(schema, targetModel2, relationArgs.select)
162
+ } : true
163
+ }
164
+ };
165
+ continue;
166
+ }
167
+ const throughModel = manifest.models[relation.through];
168
+ const throughFromReference = parseReference(throughModel.fields[relation.from]?.references);
169
+ hiddenScalarKeys.add(
170
+ throughFromReference?.field ?? identityField(manifest.models[modelName]).name
171
+ );
172
+ continue;
173
+ }
174
+ if (value === true) {
175
+ output[key] = true;
176
+ continue;
177
+ }
178
+ const targetModel = relation.target;
179
+ const next = {};
180
+ if (relationArgs.where) {
181
+ next.where = compileWhere(
182
+ manifest.models[targetModel],
183
+ relationArgs.where
184
+ );
185
+ }
186
+ if (relationArgs.orderBy) {
187
+ next.orderBy = compileOrderBy(
188
+ relationArgs.orderBy
189
+ );
190
+ }
191
+ if (relationArgs.take !== void 0) next.take = relationArgs.take;
192
+ if (relationArgs.skip !== void 0) next.skip = relationArgs.skip;
193
+ if (relationArgs.select) {
194
+ next.select = compilePrismaSelect(schema, targetModel, relationArgs.select);
195
+ }
196
+ output[key] = Object.keys(next).length ? next : true;
197
+ }
198
+ for (const fieldName of hiddenScalarKeys) {
199
+ if (!(fieldName in output)) {
200
+ output[fieldName] = true;
201
+ }
202
+ }
203
+ return output;
204
+ }
130
205
  function buildPrismaUniqueWhere(lookup) {
131
206
  if (lookup.fields.length === 1) {
132
207
  const field = lookup.fields[0];
@@ -161,7 +236,8 @@ function createPrismaDriverInternal(config, state = {}) {
161
236
  where: compileWhere(model, args.where),
162
237
  orderBy: compileOrderBy(args.orderBy),
163
238
  take: args.take,
164
- skip: args.skip
239
+ skip: args.skip,
240
+ select: args.select ? compilePrismaSelect(schema, modelName, args.select) : void 0
165
241
  });
166
242
  return Promise.all(rows.map((row) => projectRow(schema, modelName, row, args.select)));
167
243
  }
@@ -172,13 +248,15 @@ function createPrismaDriverInternal(config, state = {}) {
172
248
  if (delegate.findFirst) {
173
249
  return delegate.findFirst({
174
250
  where: compileWhere(model, args.where),
175
- orderBy: compileOrderBy(args.orderBy)
251
+ orderBy: compileOrderBy(args.orderBy),
252
+ select: args.select ? compilePrismaSelect(schema, modelName, args.select) : void 0
176
253
  });
177
254
  }
178
255
  const rows = await delegate.findMany({
179
256
  where: compileWhere(model, args.where),
180
257
  orderBy: compileOrderBy(args.orderBy),
181
- take: 1
258
+ take: 1,
259
+ select: args.select ? compilePrismaSelect(schema, modelName, args.select) : void 0
182
260
  });
183
261
  return rows[0] ?? null;
184
262
  }
@@ -203,6 +281,32 @@ function createPrismaDriverInternal(config, state = {}) {
203
281
  continue;
204
282
  }
205
283
  if (key in schema.models[modelName].relations) {
284
+ const relation = schema.models[modelName].relations[key];
285
+ const loadedValue = row[key];
286
+ if (loadedValue !== void 0) {
287
+ const targetModel = relation.target;
288
+ const childSelect = value === true ? void 0 : value.select;
289
+ output[key] = Array.isArray(loadedValue) ? await Promise.all(
290
+ loadedValue.map(
291
+ (item) => projectRow(schema, targetModel, item, childSelect)
292
+ )
293
+ ) : loadedValue === null ? relation.kind === "hasMany" || relation.kind === "manyToMany" ? [] : null : await projectRow(schema, targetModel, loadedValue, childSelect);
294
+ continue;
295
+ }
296
+ if (relation.kind === "manyToMany") {
297
+ const targetModel = relation.target;
298
+ const childSelect = value === true ? void 0 : value.select;
299
+ const { throughRelationName, targetRelationName } = prismaManyToManyJoinKeys(relation);
300
+ const throughRows = row[throughRelationName];
301
+ if (Array.isArray(throughRows)) {
302
+ output[key] = await Promise.all(
303
+ throughRows.map(
304
+ (entry) => entry && typeof entry === "object" && entry[targetRelationName] && typeof entry[targetRelationName] === "object" ? entry[targetRelationName] : null
305
+ ).filter((entry) => entry !== null).map((entry) => projectRow(schema, targetModel, entry, childSelect))
306
+ );
307
+ continue;
308
+ }
309
+ }
206
310
  output[key] = await resolveRelation(
207
311
  schema,
208
312
  modelName,
@@ -321,6 +425,10 @@ function createPrismaDriverInternal(config, state = {}) {
321
425
  );
322
426
  }
323
427
  const driver = {
428
+ handle: {
429
+ kind: "prisma",
430
+ client: config.client
431
+ },
324
432
  async findMany(schema, model, args) {
325
433
  return loadRows(schema, model, args);
326
434
  },
@@ -349,7 +457,8 @@ function createPrismaDriverInternal(config, state = {}) {
349
457
  data: buildCreateData(
350
458
  manifest.models[model],
351
459
  args.data
352
- )
460
+ ),
461
+ select: args.select ? compilePrismaSelect(schema, model, args.select) : void 0
353
462
  });
354
463
  return projectRow(schema, model, row, args.select);
355
464
  },
@@ -376,7 +485,8 @@ function createPrismaDriverInternal(config, state = {}) {
376
485
  const updateData = buildUpdateData(args.data);
377
486
  const updated = delegate.update?.({
378
487
  where: identityWhere,
379
- data: updateData
488
+ data: updateData,
489
+ select: args.select ? compilePrismaSelect(schema, model, args.select) : void 0
380
490
  }) ?? (async () => {
381
491
  await delegate.updateMany({
382
492
  where: identityWhere,
@@ -386,7 +496,8 @@ function createPrismaDriverInternal(config, state = {}) {
386
496
  })();
387
497
  const row = await updated;
388
498
  const nextRow = row ?? await loadRawOneRow(schema, model, {
389
- where: identityWhere
499
+ where: identityWhere,
500
+ select: args.select
390
501
  });
391
502
  if (!nextRow) return null;
392
503
  return projectRow(schema, model, nextRow, args.select);
@@ -426,7 +537,8 @@ function createPrismaDriverInternal(config, state = {}) {
426
537
  const row = await (delegate.upsert?.({
427
538
  where: buildPrismaUniqueWhere(lookup),
428
539
  create: createData,
429
- update: updateData
540
+ update: updateData,
541
+ select: args.select ? compilePrismaSelect(schema, model, args.select) : void 0
430
542
  }) ?? runTransaction(async (txDriver) => {
431
543
  const existing = await txDriver.findUnique(schema, model, {
432
544
  where: args.where
@@ -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 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"]}
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 type OrmDriverHandle,\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\nconst pluralize = (value: string) => (value.endsWith(\"s\") ? value : `${value}s`);\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 } & Record<string, unknown>): Promise<PrismaRow>;\n update?(\n args: { where: PrismaRow; data: PrismaRow } & Record<string, unknown>,\n ): Promise<PrismaRow>;\n updateMany(args: { where?: PrismaWhereInput; data: PrismaRow }): Promise<{ count?: number }>;\n upsert?(\n args: { where: PrismaRow; create: PrismaRow; update: PrismaRow } & Record<string, unknown>,\n ): Promise<PrismaRow>;\n delete?(args: { where: PrismaRow } & Record<string, unknown>): 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\nexport type PrismaDriverHandle = OrmDriverHandle<\"prisma\", PrismaClientLike>;\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 supportsNativePrismaManyToManyArgs(args: Partial<FindManyArgs<any, any, any>>) {\n return (\n args.where === undefined &&\n args.orderBy === undefined &&\n args.take === undefined &&\n args.skip === undefined\n );\n}\n\nfunction prismaManyToManyJoinKeys(relation: { through: string; target: string }) {\n return {\n throughRelationName: pluralize(relation.through),\n targetRelationName: relation.target,\n };\n}\n\nfunction compilePrismaSelect<\n TSchema extends SchemaDefinition<any>,\n TModelName extends ModelName<TSchema>,\n>(schema: TSchema, modelName: TModelName, select: SelectShape<TSchema, TModelName>) {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const output: Record<string, unknown> = {};\n const hiddenScalarKeys = new Set<string>();\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] = true;\n continue;\n }\n\n if (!(key in schema.models[modelName].relations)) continue;\n\n const relation = schema.models[modelName].relations[key as RelationName<TSchema, TModelName>];\n const relationArgs = (value === true ? {} : value) as Partial<FindManyArgs<TSchema, any, any>>;\n if (relation.kind === \"manyToMany\") {\n if (supportsNativePrismaManyToManyArgs(relationArgs)) {\n const targetModel = relation.target as ModelName<TSchema>;\n const { throughRelationName, targetRelationName } = prismaManyToManyJoinKeys(relation);\n output[throughRelationName] = {\n select: {\n [targetRelationName]: relationArgs.select\n ? {\n select: compilePrismaSelect(schema, targetModel, relationArgs.select as any),\n }\n : true,\n },\n };\n continue;\n }\n\n const throughModel = manifest.models[relation.through];\n const throughFromReference = parseReference(throughModel.fields[relation.from]?.references);\n hiddenScalarKeys.add(\n throughFromReference?.field ?? identityField(manifest.models[modelName]).name,\n );\n continue;\n }\n\n if (value === true) {\n output[key] = true;\n continue;\n }\n const targetModel = relation.target as ModelName<TSchema>;\n const next: Record<string, unknown> = {};\n if (relationArgs.where) {\n next.where = compileWhere(\n manifest.models[targetModel],\n relationArgs.where as PrismaWhere | undefined,\n );\n }\n if (relationArgs.orderBy) {\n next.orderBy = compileOrderBy(\n relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n );\n }\n if (relationArgs.take !== undefined) next.take = relationArgs.take;\n if (relationArgs.skip !== undefined) next.skip = relationArgs.skip;\n if (relationArgs.select) {\n next.select = compilePrismaSelect(schema, targetModel, relationArgs.select as any);\n }\n\n output[key] = Object.keys(next).length ? next : true;\n }\n\n for (const fieldName of hiddenScalarKeys) {\n if (!(fieldName in output)) {\n output[fieldName] = true;\n }\n }\n\n return output;\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): OrmDriver<TSchema, PrismaDriverHandle> {\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 select: args.select ? compilePrismaSelect(schema, modelName, args.select) : undefined,\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 select?: SelectShape<TSchema, TModelName>;\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 select: args.select ? compilePrismaSelect(schema, modelName, args.select) : undefined,\n });\n }\n\n const rows = await delegate.findMany({\n where: compileWhere(model, args.where),\n orderBy: compileOrderBy(args.orderBy),\n take: 1,\n select: args.select ? compilePrismaSelect(schema, modelName, args.select) : undefined,\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 const relation =\n schema.models[modelName].relations[key as RelationName<TSchema, TModelName>];\n const loadedValue = row[key];\n if (loadedValue !== undefined) {\n const targetModel = relation.target as ModelName<TSchema>;\n const childSelect = value === true ? undefined : value.select;\n output[key] = Array.isArray(loadedValue)\n ? await Promise.all(\n loadedValue.map((item) =>\n projectRow(schema, targetModel, item as PrismaRow, childSelect as any),\n ),\n )\n : loadedValue === null\n ? relation.kind === \"hasMany\" || relation.kind === \"manyToMany\"\n ? []\n : null\n : await projectRow(schema, targetModel, loadedValue as PrismaRow, childSelect as any);\n continue;\n }\n\n if (relation.kind === \"manyToMany\") {\n const targetModel = relation.target as ModelName<TSchema>;\n const childSelect = value === true ? undefined : value.select;\n const { throughRelationName, targetRelationName } = prismaManyToManyJoinKeys(relation);\n const throughRows = row[throughRelationName];\n\n if (Array.isArray(throughRows)) {\n output[key] = await Promise.all(\n throughRows\n .map((entry) =>\n entry &&\n typeof entry === \"object\" &&\n (entry as PrismaRow)[targetRelationName] &&\n typeof (entry as PrismaRow)[targetRelationName] === \"object\"\n ? ((entry as PrismaRow)[targetRelationName] as PrismaRow)\n : null,\n )\n .filter((entry): entry is PrismaRow => entry !== null)\n .map((entry) => projectRow(schema, targetModel, entry, childSelect as any)),\n );\n continue;\n }\n }\n\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>(\n run: (driver: OrmDriver<TSchema, PrismaDriverHandle>) => Promise<TResult>,\n ) {\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, PrismaDriverHandle> = {\n handle: {\n kind: \"prisma\",\n client: config.client,\n },\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 select: args.select ? compilePrismaSelect(schema, model, args.select) : undefined,\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 select: args.select ? compilePrismaSelect(schema, model, args.select) : undefined,\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 select: args.select,\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 select: args.select ? compilePrismaSelect(schema, model, args.select) : undefined,\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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA2B;AAC3B,iBA2BO;AAQP,IAAM,YAAY,CAAC,UAAmB,MAAM,SAAS,GAAG,IAAI,QAAQ,GAAG,KAAK;AA6B5E,IAAM,gBAAgB,oBAAI,QAAgC;AAE1D,SAAS,YAAY,QAA+B;AAClD,QAAM,SAAS,cAAc,IAAI,MAAM;AACvC,MAAI,OAAQ,QAAO;AACnB,QAAM,WAAO,2BAAe,MAAM;AAClC,gBAAc,IAAI,QAAQ,IAAI;AAC9B,SAAO;AACT;AAEA,SAAS,cAAc,OAAsB;AAC3C,MAAI,MAAM,OAAO,GAAI,QAAO,MAAM,OAAO;AACzC,QAAM,cAAc,OAAO,OAAO,MAAM,MAAM,EAAE,KAAK,CAAC,UAAU,MAAM,MAAM;AAC5E,MAAI,YAAa,QAAO;AACxB,QAAM,IAAI;AAAA,IACR,UAAU,MAAM,IAAI;AAAA,EACtB;AACF;AAEA,SAAS,aAAa,OAAgB,OAAsB;AAC1D,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,MAAM,cAAc,KAAM,YAAO,+BAAW;AAChD,MAAI,MAAM,cAAc,MAAO,QAAO,oBAAI,KAAK;AAC/C,MAAI,OAAO,MAAM,iBAAiB,YAAY;AAC5C,WAAQ,MAAM,aAA+B;AAAA,EAC/C;AACA,SAAO,MAAM;AACf;AAEA,SAAS,eAAe,WAAoB;AAC1C,MAAI,CAAC,UAAW,QAAO;AACvB,QAAM,CAAC,OAAO,KAAK,IAAI,UAAU,MAAM,GAAG;AAC1C,MAAI,CAAC,SAAS,CAAC,MAAO,QAAO;AAC7B,SAAO,EAAE,OAAO,MAAM;AACxB;AAEA,SAAS,cAAc,SAAyC;AAC9D,QAAM,UAAU,QAAQ,OAAO,OAAO;AACtC,MAAI,CAAC,QAAQ,OAAQ,QAAO;AAC5B,MAAI,QAAQ,WAAW,EAAG,QAAO,QAAQ,CAAC;AAC1C,SAAO;AAAA,IACL,KAAK;AAAA,EACP;AACF;AAEA,SAAS,gBAAgB,OAAsB,OAAyC;AACtF,QAAM,SAAoB,CAAC;AAE3B,aAAW,SAAS,OAAO,OAAO,MAAM,MAAM,GAAG;AAC/C,UAAM,QAAQ,aAAa,MAAM,MAAM,IAAI,GAAG,KAAK;AACnD,QAAI,UAAU,QAAW;AACvB,aAAO,MAAM,IAAI,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,gBAAgB,OAAyC;AAChE,SAAO,OAAO,YAAY,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS,CAAC;AAC5F;AAEA,SAAS,cAAc,OAAsB,QAAiB;AAC5D,MAAI,KAAC,mCAAuB,MAAM,GAAG;AACnC,QAAI,MAAM,SAAS,UAAU,WAAW,MAAM;AAC5C,aAAO;AAAA,QACL,QAAQ;AAAA,MACV;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,QAAM,SAAkC,CAAC;AACzC,MAAI,QAAQ,OAAQ,QAAO,SAAS,OAAO;AAC3C,MAAI,cAAc,OAAQ,QAAO,WAAW,OAAO;AACnD,MAAI,QAAQ,OAAQ,QAAO,KAAK,OAAO;AACvC,MAAI,SAAS,OAAQ,QAAO,MAAM,OAAO;AACzC,MAAI,QAAQ,OAAQ,QAAO,KAAK,OAAO;AACvC,MAAI,SAAS,OAAQ,QAAO,MAAM,OAAO;AACzC,MAAI,QAAQ,OAAQ,QAAO,KAAK,OAAO;AACvC,MAAI,SAAS,OAAQ,QAAO,MAAM,OAAO;AACzC,SAAO;AACT;AAEA,SAAS,aAAa,OAAsB,OAAmD;AAC7F,MAAI,CAAC,MAAO,QAAO;AAEnB,QAAM,SAA2B,CAAC;AAElC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,QAAQ,SAAS,MAAM,QAAQ,KAAK,GAAG;AACzC,aAAO,MAAM,MACV,IAAI,CAAC,UAAU,aAAa,OAAO,KAAoB,CAAC,EACxD,OAAO,OAAO;AACjB;AAAA,IACF;AAEA,QAAI,QAAQ,QAAQ,MAAM,QAAQ,KAAK,GAAG;AACxC,aAAO,KAAK,MACT,IAAI,CAAC,UAAU,aAAa,OAAO,KAAoB,CAAC,EACxD,OAAO,OAAO;AACjB;AAAA,IACF;AAEA,QAAI,QAAQ,SAAS,OAAO;AAC1B,YAAM,WAAW,aAAa,OAAO,KAAoB;AACzD,UAAI,SAAU,QAAO,MAAM;AAC3B;AAAA,IACF;AAEA,QAAI,EAAE,OAAO,MAAM,QAAS;AAC5B,WAAO,GAAG,IAAI,cAAc,MAAM,OAAO,GAAG,GAAI,KAAK;AAAA,EACvD;AAEA,SAAO;AACT;AAEA,SAAS,eAAe,SAAmD;AACzE,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,UAAU,OAAO,QAAQ,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,KAAK;AACnE,MAAI,CAAC,QAAQ,OAAQ,QAAO;AAC5B,SAAO,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;AAAA,IACpC,CAAC,GAAG,GAAG;AAAA,EACT,EAAE;AACJ;AAEA,SAAS,mCAAmC,MAA4C;AACtF,SACE,KAAK,UAAU,UACf,KAAK,YAAY,UACjB,KAAK,SAAS,UACd,KAAK,SAAS;AAElB;AAEA,SAAS,yBAAyB,UAA+C;AAC/E,SAAO;AAAA,IACL,qBAAqB,UAAU,SAAS,OAAO;AAAA,IAC/C,oBAAoB,SAAS;AAAA,EAC/B;AACF;AAEA,SAAS,oBAGP,QAAiB,WAAuB,QAA0C;AAClF,QAAM,WAAW,YAAY,MAAM;AACnC,QAAM,QAAQ,SAAS,OAAO,SAAS;AACvC,QAAM,SAAkC,CAAC;AACzC,QAAM,mBAAmB,oBAAI,IAAY;AAEzC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,UAAU,OAAW;AAEzB,QAAI,OAAO,MAAM,UAAU,UAAU,MAAM;AACzC,aAAO,GAAG,IAAI;AACd;AAAA,IACF;AAEA,QAAI,EAAE,OAAO,OAAO,OAAO,SAAS,EAAE,WAAY;AAElD,UAAM,WAAW,OAAO,OAAO,SAAS,EAAE,UAAU,GAAwC;AAC5F,UAAM,eAAgB,UAAU,OAAO,CAAC,IAAI;AAC5C,QAAI,SAAS,SAAS,cAAc;AAClC,UAAI,mCAAmC,YAAY,GAAG;AACpD,cAAMA,eAAc,SAAS;AAC7B,cAAM,EAAE,qBAAqB,mBAAmB,IAAI,yBAAyB,QAAQ;AACrF,eAAO,mBAAmB,IAAI;AAAA,UAC5B,QAAQ;AAAA,YACN,CAAC,kBAAkB,GAAG,aAAa,SAC/B;AAAA,cACE,QAAQ,oBAAoB,QAAQA,cAAa,aAAa,MAAa;AAAA,YAC7E,IACA;AAAA,UACN;AAAA,QACF;AACA;AAAA,MACF;AAEA,YAAM,eAAe,SAAS,OAAO,SAAS,OAAO;AACrD,YAAM,uBAAuB,eAAe,aAAa,OAAO,SAAS,IAAI,GAAG,UAAU;AAC1F,uBAAiB;AAAA,QACf,sBAAsB,SAAS,cAAc,SAAS,OAAO,SAAS,CAAC,EAAE;AAAA,MAC3E;AACA;AAAA,IACF;AAEA,QAAI,UAAU,MAAM;AAClB,aAAO,GAAG,IAAI;AACd;AAAA,IACF;AACA,UAAM,cAAc,SAAS;AAC7B,UAAM,OAAgC,CAAC;AACvC,QAAI,aAAa,OAAO;AACtB,WAAK,QAAQ;AAAA,QACX,SAAS,OAAO,WAAW;AAAA,QAC3B,aAAa;AAAA,MACf;AAAA,IACF;AACA,QAAI,aAAa,SAAS;AACxB,WAAK,UAAU;AAAA,QACb,aAAa;AAAA,MACf;AAAA,IACF;AACA,QAAI,aAAa,SAAS,OAAW,MAAK,OAAO,aAAa;AAC9D,QAAI,aAAa,SAAS,OAAW,MAAK,OAAO,aAAa;AAC9D,QAAI,aAAa,QAAQ;AACvB,WAAK,SAAS,oBAAoB,QAAQ,aAAa,aAAa,MAAa;AAAA,IACnF;AAEA,WAAO,GAAG,IAAI,OAAO,KAAK,IAAI,EAAE,SAAS,OAAO;AAAA,EAClD;AAEA,aAAW,aAAa,kBAAkB;AACxC,QAAI,EAAE,aAAa,SAAS;AAC1B,aAAO,SAAS,IAAI;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBAAuB,QAA8B;AAC5D,MAAI,OAAO,OAAO,WAAW,GAAG;AAC9B,UAAM,QAAQ,OAAO,OAAO,CAAC;AAC7B,WAAO;AAAA,MACL,CAAC,MAAM,IAAI,GAAG,OAAO,OAAO,MAAM,IAAI;AAAA,IACxC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,CAAC,OAAO,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC,GAAG,OAAO;AAAA,MAC3D,OAAO,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,MAAM,OAAO,OAAO,MAAM,IAAI,CAAC,CAAC;AAAA,IACtE;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,OAAsB,KAAgB;AAChE,SAAO,2BAAuB,qCAAyB,OAAO,GAAG,CAAC;AACpE;AAEA,SAAS,2BACP,QACA,QAEI,CAAC,GACmC;AACxC,WAAS,YAAY,WAA+B;AAClD,UAAM,MAAM,OAAO,SAAS,SAAS,KAAK;AAC1C,UAAM,WAAW,OAAO,OAAO,GAAG;AAClC,QAAI,CAAC,UAAU;AACb,YAAM,IAAI;AAAA,QACR,oBAAoB,OAAO,GAAG,CAAC,gBAAgB,OAAO,SAAS,CAAC;AAAA,MAClE;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,iBAAe,SAGb,QAAiB,WAAuB,MAAkD;AAC1F,UAAM,WAAW,YAAY,MAAM;AACnC,UAAM,QAAQ,SAAS,OAAO,SAAS;AACvC,UAAM,OAAO,MAAM,YAAY,SAAS,EAAE,SAAS;AAAA,MACjD,OAAO,aAAa,OAAO,KAAK,KAAgC;AAAA,MAChE,SAAS,eAAe,KAAK,OAA8D;AAAA,MAC3F,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK,SAAS,oBAAoB,QAAQ,WAAW,KAAK,MAAM,IAAI;AAAA,IAC9E,CAAC;AAED,WAAO,QAAQ,IAAI,KAAK,IAAI,CAAC,QAAQ,WAAW,QAAQ,WAAW,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,EACvF;AAEA,iBAAe,cACb,QACA,WACA,MAKA;AACA,UAAM,WAAW,YAAY,MAAM;AACnC,UAAM,QAAQ,SAAS,OAAO,SAAS;AACvC,UAAM,WAAW,YAAY,SAAS;AAEtC,QAAI,SAAS,WAAW;AACtB,aAAO,SAAS,UAAU;AAAA,QACxB,OAAO,aAAa,OAAO,KAAK,KAAK;AAAA,QACrC,SAAS,eAAe,KAAK,OAAO;AAAA,QACpC,QAAQ,KAAK,SAAS,oBAAoB,QAAQ,WAAW,KAAK,MAAM,IAAI;AAAA,MAC9E,CAAC;AAAA,IACH;AAEA,UAAM,OAAO,MAAM,SAAS,SAAS;AAAA,MACnC,OAAO,aAAa,OAAO,KAAK,KAAK;AAAA,MACrC,SAAS,eAAe,KAAK,OAAO;AAAA,MACpC,MAAM;AAAA,MACN,QAAQ,KAAK,SAAS,oBAAoB,QAAQ,WAAW,KAAK,MAAM,IAAI;AAAA,IAC9E,CAAC;AACD,WAAO,KAAK,CAAC,KAAK;AAAA,EACpB;AAEA,iBAAe,WAIb,QACA,WACA,MAKA;AACA,UAAM,MAAM,MAAM,cAAc,QAAQ,WAAW,IAAI;AACvD,WAAO,MAAM,WAAW,QAAQ,WAAW,KAAK,KAAK,MAAM,IAAI;AAAA,EACjE;AAEA,iBAAe,WAIb,QACA,WACA,KACA,QACuD;AACvD,UAAM,WAAW,YAAY,MAAM;AACnC,UAAM,QAAQ,SAAS,OAAO,SAAS;AACvC,UAAM,SAAoB,CAAC;AAE3B,QAAI,CAAC,QAAQ;AACX,iBAAW,aAAa,OAAO,KAAK,MAAM,MAAM,GAAG;AACjD,eAAO,SAAS,IAAI,IAAI,SAAS;AAAA,MACnC;AACA,aAAO;AAAA,IACT;AAEA,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,UAAI,UAAU,OAAW;AAEzB,UAAI,OAAO,MAAM,UAAU,UAAU,MAAM;AACzC,eAAO,GAAG,IAAI,IAAI,GAAG;AACrB;AAAA,MACF;AAEA,UAAI,OAAO,OAAO,OAAO,SAAS,EAAE,WAAW;AAC7C,cAAM,WACJ,OAAO,OAAO,SAAS,EAAE,UAAU,GAAwC;AAC7E,cAAM,cAAc,IAAI,GAAG;AAC3B,YAAI,gBAAgB,QAAW;AAC7B,gBAAM,cAAc,SAAS;AAC7B,gBAAM,cAAc,UAAU,OAAO,SAAY,MAAM;AACvD,iBAAO,GAAG,IAAI,MAAM,QAAQ,WAAW,IACnC,MAAM,QAAQ;AAAA,YACZ,YAAY;AAAA,cAAI,CAAC,SACf,WAAW,QAAQ,aAAa,MAAmB,WAAkB;AAAA,YACvE;AAAA,UACF,IACA,gBAAgB,OACd,SAAS,SAAS,aAAa,SAAS,SAAS,eAC/C,CAAC,IACD,OACF,MAAM,WAAW,QAAQ,aAAa,aAA0B,WAAkB;AACxF;AAAA,QACF;AAEA,YAAI,SAAS,SAAS,cAAc;AAClC,gBAAM,cAAc,SAAS;AAC7B,gBAAM,cAAc,UAAU,OAAO,SAAY,MAAM;AACvD,gBAAM,EAAE,qBAAqB,mBAAmB,IAAI,yBAAyB,QAAQ;AACrF,gBAAM,cAAc,IAAI,mBAAmB;AAE3C,cAAI,MAAM,QAAQ,WAAW,GAAG;AAC9B,mBAAO,GAAG,IAAI,MAAM,QAAQ;AAAA,cAC1B,YACG;AAAA,gBAAI,CAAC,UACJ,SACA,OAAO,UAAU,YAChB,MAAoB,kBAAkB,KACvC,OAAQ,MAAoB,kBAAkB,MAAM,WAC9C,MAAoB,kBAAkB,IACxC;AAAA,cACN,EACC,OAAO,CAAC,UAA8B,UAAU,IAAI,EACpD,IAAI,CAAC,UAAU,WAAW,QAAQ,aAAa,OAAO,WAAkB,CAAC;AAAA,YAC9E;AACA;AAAA,UACF;AAAA,QACF;AAEA,eAAO,GAAG,IAAI,MAAM;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,iBAAe,gBAIb,QACA,WACA,cACA,KACA,OACA;AACA,UAAM,WAAW,YAAY,MAAM;AACnC,UAAM,WAAW,OAAO,OAAO,SAAS,EAAE,UAAU,YAAY;AAChE,UAAM,eAAe,UAAU,OAAO,CAAC,IAAI;AAE3C,QAAI,SAAS,SAAS,aAAa;AACjC,YAAM,eAAe,SAAS,OAAO,SAAS,EAAE,OAAO,SAAS,UAAU;AAC1E,YAAM,kBAAkB,eAAe,cAAc,UAAU;AAC/D,YAAMC,eACJ,iBAAiB,SAAS,cAAc,SAAS,OAAO,SAAS,MAAM,CAAC,EAAE;AAC5E,YAAM,eAAe,IAAI,SAAS,UAAU;AAE5C,UAAI,gBAAgB,KAAM,QAAO;AAEjC,aAAO,WAAW,QAAQ,SAAS,QAA8B;AAAA,QAC/D,OAAO;AAAA,UACL,aAAa;AAAA,UACb;AAAA,YACE,CAACA,YAAW,GAAG;AAAA,UACjB;AAAA,QACF;AAAA,QACA,SAAS,aAAa;AAAA,QACtB,QAAQ,aAAa;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,QAAI,SAAS,SAAS,UAAU;AAC9B,YAAM,cAAc,SAAS,OAAO,SAAS,MAAM;AACnD,YAAM,eAAe,YAAY,OAAO,SAAS,UAAU;AAC3D,YAAM,kBAAkB,eAAe,cAAc,UAAU;AAC/D,YAAMC,eAAc,iBAAiB,SAAS,cAAc,SAAS,OAAO,SAAS,CAAC,EAAE;AACxF,YAAMC,eAAc,IAAID,YAAW;AAEnC,UAAIC,gBAAe,KAAM,QAAO;AAEhC,aAAO,WAAW,QAAQ,SAAS,QAA8B;AAAA,QAC/D,OAAO;AAAA,UACL,aAAa;AAAA,UACb;AAAA,YACE,CAAC,SAAS,UAAU,GAAGA;AAAA,UACzB;AAAA,QACF;AAAA,QACA,SAAS,aAAa;AAAA,QACtB,QAAQ,aAAa;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,QAAI,SAAS,SAAS,WAAW;AAC/B,YAAM,cAAc,SAAS,OAAO,SAAS,MAAM;AACnD,YAAM,eAAe,YAAY,OAAO,SAAS,UAAU;AAC3D,YAAM,kBAAkB,eAAe,cAAc,UAAU;AAC/D,YAAMD,eAAc,iBAAiB,SAAS,cAAc,SAAS,OAAO,SAAS,CAAC,EAAE;AACxF,YAAMC,eAAc,IAAID,YAAW;AAEnC,UAAIC,gBAAe,KAAM,QAAO,CAAC;AAEjC,aAAO,SAAS,QAAQ,SAAS,QAA8B;AAAA,QAC7D,OAAO;AAAA,UACL,aAAa;AAAA,UACb;AAAA,YACE,CAAC,SAAS,UAAU,GAAGA;AAAA,UACzB;AAAA,QACF;AAAA,QACA,SAAS,aAAa;AAAA,QACtB,MAAM,aAAa;AAAA,QACnB,MAAM,aAAa;AAAA,QACnB,QAAQ,aAAa;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,UAAM,eAAe,SAAS,OAAO,SAAS,OAAO;AACrD,UAAM,uBAAuB,eAAe,aAAa,OAAO,SAAS,IAAI,GAAG,UAAU;AAC1F,UAAM,qBAAqB,eAAe,aAAa,OAAO,SAAS,EAAE,GAAG,UAAU;AACtF,UAAM,cACJ,sBAAsB,SAAS,cAAc,SAAS,OAAO,SAAS,CAAC,EAAE;AAC3E,UAAM,cACJ,oBAAoB,SAAS,cAAc,SAAS,OAAO,SAAS,MAAM,CAAC,EAAE;AAC/E,UAAM,cAAc,IAAI,WAAW;AAEnC,QAAI,eAAe,KAAM,QAAO,CAAC;AAEjC,UAAM,cAAc,MAAM,SAAS,QAAQ,SAAS,SAA+B;AAAA,MACjF,OAAO;AAAA,QACL,CAAC,SAAS,IAAI,GAAG;AAAA,MACnB;AAAA,IACF,CAAC;AAED,UAAM,YAAY,YACf,IAAI,CAAC,SAAoB,KAAK,SAAS,EAAE,CAAC,EAC1C,OAAO,CAAC,SAAS,QAAQ,IAAI;AAChC,QAAI,CAAC,UAAU,OAAQ,QAAO,CAAC;AAE/B,WAAO,SAAS,QAAQ,SAAS,QAA8B;AAAA,MAC7D,OAAO;AAAA,QACL,aAAa;AAAA,QACb;AAAA,UACE,CAAC,WAAW,GAAG;AAAA,YACb,IAAI;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS,aAAa;AAAA,MACtB,MAAM,aAAa;AAAA,MACnB,MAAM,aAAa;AAAA,MACnB,QAAQ,aAAa;AAAA,IACvB,CAAC;AAAA,EACH;AAEA,iBAAe,eACb,KACA;AACA,QAAI,MAAM,iBAAiB,CAAC,OAAO,OAAO,cAAc;AACtD,aAAO,IAAI,2BAA2B,QAAQ,EAAE,eAAe,KAAK,CAAC,CAAC;AAAA,IACxE;AAEA,WAAO,OAAO,OAAO;AAAA,MAAa,OAAO,OACvC;AAAA,QACE;AAAA,UACE;AAAA,YACE,GAAG;AAAA,YACH,QAAQ;AAAA,UACV;AAAA,UACA;AAAA,YACE,eAAe;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAiD;AAAA,IACrD,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,QAAQ,OAAO;AAAA,IACjB;AAAA,IACA,MAAM,SAAS,QAAQ,OAAO,MAAM;AAClC,aAAO,SAAS,QAAQ,OAAO,IAAI;AAAA,IACrC;AAAA,IACA,MAAM,UAAU,QAAQ,OAAO,MAAM;AACnC,aAAO,WAAW,QAAQ,OAAO,IAAI;AAAA,IACvC;AAAA,IACA,MAAM,WAAW,QAAQ,OAAO,MAAwD;AACtF,YAAM,WAAW,YAAY,MAAM;AACnC;AAAA,QACE,SAAS,OAAO,KAAK;AAAA,QACrB,KAAK;AAAA,QACL;AAAA,MACF;AACA,aAAO,WAAW,QAAQ,OAAO,IAAI;AAAA,IACvC;AAAA,IACA,MAAM,MAAM,QAAQ,OAAO,MAA+C;AACxE,YAAM,WAAW,YAAY,MAAM;AACnC,aAAO,YAAY,KAAK,EAAE,MAAM;AAAA,QAC9B,OAAO,aAAa,SAAS,OAAO,KAAK,GAAG,MAAM,KAAgC;AAAA,MACpF,CAAC;AAAA,IACH;AAAA,IACA,MAAM,OAAO,QAAQ,OAAO,MAAM;AAChC,YAAM,WAAW,YAAY,MAAM;AACnC,YAAM,WAAW,YAAY,KAAK;AAClC,YAAM,MAAM,MAAM,SAAS,OAAO;AAAA,QAChC,MAAM;AAAA,UACJ,SAAS,OAAO,KAAK;AAAA,UACrB,KAAK;AAAA,QACP;AAAA,QACA,QAAQ,KAAK,SAAS,oBAAoB,QAAQ,OAAO,KAAK,MAAM,IAAI;AAAA,MAC1E,CAAC;AACD,aAAO,WAAW,QAAQ,OAAO,KAAK,KAAK,MAAM;AAAA,IACnD;AAAA,IACA,MAAM,WAAW,QAAQ,OAAO,MAAM;AACpC,YAAM,UAAqB,CAAC;AAC5B,iBAAW,SAAS,KAAK,MAAM;AAC7B,gBAAQ;AAAA,UACN,MAAM,OAAO,OAAO,QAAQ,OAAO;AAAA,YACjC,MAAM;AAAA,YACN,QAAQ,KAAK;AAAA,UACf,CAAiD;AAAA,QACnD;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IACA,MAAM,OAAO,QAAQ,OAAO,MAAM;AAChC,YAAM,WAAW,YAAY,MAAM;AACnC,YAAM,UAAU,MAAM,cAAc,QAAQ,OAAO;AAAA,QACjD,OAAO,KAAK;AAAA,MACd,CAAC;AAED,UAAI,CAAC,QAAS,QAAO;AAErB,YAAM,WAAW,YAAY,KAAK;AAClC,YAAM,gBAAgB,mBAAmB,SAAS,OAAO,KAAK,GAAG,OAAO;AACxE,YAAM,aAAa,gBAAgB,KAAK,IAAwC;AAChF,YAAM,UACJ,SAAS,SAAS;AAAA,QAChB,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ,KAAK,SAAS,oBAAoB,QAAQ,OAAO,KAAK,MAAM,IAAI;AAAA,MAC1E,CAAC,MACA,YAAY;AACX,cAAM,SAAS,WAAW;AAAA,UACxB,OAAO;AAAA,UACP,MAAM;AAAA,QACR,CAAC;AACD,eAAO;AAAA,MACT,GAAG;AAEL,YAAM,MAAM,MAAM;AAClB,YAAM,UACJ,OACC,MAAM,cAAc,QAAQ,OAAO;AAAA,QAClC,OAAO;AAAA,QACP,QAAQ,KAAK;AAAA,MACf,CAAC;AACH,UAAI,CAAC,QAAS,QAAO;AAErB,aAAO,WAAW,QAAQ,OAAO,SAAS,KAAK,MAAM;AAAA,IACvD;AAAA,IACA,MAAM,WAAW,QAAQ,OAAO,MAAM;AACpC,YAAM,WAAW,YAAY,MAAM;AACnC,YAAM,SAAS,MAAM,YAAY,KAAK,EAAE,WAAW;AAAA,QACjD,OAAO,aAAa,SAAS,OAAO,KAAK,GAAG,KAAK,KAAoB;AAAA,QACrE,MAAM,gBAAgB,KAAK,IAAwC;AAAA,MACrE,CAAC;AACD,aAAO,OAAO,OAAO,SAAS,CAAC;AAAA,IACjC;AAAA,IACA,MAAM,OAAO,QAAQ,OAAO,MAAM;AAChC,YAAM,WAAW,YAAY,MAAM;AACnC,YAAM,aAAS;AAAA,QACb,SAAS,OAAO,KAAK;AAAA,QACrB,KAAK;AAAA,QACL;AAAA,MACF;AACA,YAAM,WAAW,YAAY,KAAK;AAClC,YAAM,aAAa;AAAA,QACjB,SAAS,OAAO,KAAK;AAAA,YACrB;AAAA,UACE,SAAS,OAAO,KAAK;AAAA,UACrB,KAAK;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,YAAM,aAAa,gBAAgB,KAAK,MAA0C;AAClF;AAAA,QACE,SAAS,OAAO,KAAK;AAAA,QACrB,KAAK;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAEA,YAAM,MAAM,OAAO,SAAS,SAAS;AAAA,QACnC,OAAO,uBAAuB,MAAM;AAAA,QACpC,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ,KAAK,SAAS,oBAAoB,QAAQ,OAAO,KAAK,MAAM,IAAI;AAAA,MAC1E,CAAC,KACC,eAAe,OAAO,aAAa;AACjC,cAAM,WAAW,MAAM,SAAS,WAAW,QAAQ,OAAO;AAAA,UACxD,OAAO,KAAK;AAAA,QACd,CAA2D;AAE3D,YAAI,UAAU;AACZ,gBAAM,UAAU,MAAM,SAAS,OAAO,QAAQ,OAAO;AAAA,YACnD,OAAO,KAAK;AAAA,YACZ,MAAM,KAAK;AAAA,UACb,CAAuD;AACvD,cAAI,CAAC,SAAS;AACZ,kBAAM,IAAI,MAAM,oBAAoB,OAAO,KAAK,CAAC,yBAAyB;AAAA,UAC5E;AACA,iBAAO;AAAA,QACT;AAEA,eAAO,SAAS,OAAO,QAAQ,OAAO;AAAA,UACpC,MAAM;AAAA,QACR,CAAuD;AAAA,MACzD,CAAC;AAEH,aAAO,WAAW,QAAQ,OAAO,KAAK,KAAK,MAAM;AAAA,IACnD;AAAA,IACA,MAAM,OAAO,QAAQ,OAAO,MAAM;AAChC,YAAM,WAAW,YAAY,MAAM;AACnC,YAAM,UAAU,MAAM,cAAc,QAAQ,OAAO;AAAA,QACjD,OAAO,KAAK;AAAA,MACd,CAAC;AACD,UAAI,CAAC,QAAS,QAAO;AAErB,YAAM,gBAAgB,mBAAmB,SAAS,OAAO,KAAK,GAAG,OAAO;AACxE,YAAM,WAAW,YAAY,KAAK;AAElC,UAAI,SAAS,QAAQ;AACnB,cAAM,SAAS,OAAO;AAAA,UACpB,OAAO;AAAA,QACT,CAAC;AACD,eAAO;AAAA,MACT;AAEA,YAAM,SAAS,MAAM,SAAS,WAAW;AAAA,QACvC,OAAO;AAAA,MACT,CAAC;AACD,aAAO,OAAO,OAAO,SAAS,CAAC;AAAA,IACjC;AAAA,IACA,MAAM,WAAW,QAAQ,OAAO,MAAM;AACpC,YAAM,WAAW,YAAY,MAAM;AACnC,YAAM,SAAS,MAAM,YAAY,KAAK,EAAE,WAAW;AAAA,QACjD,OAAO,aAAa,SAAS,OAAO,KAAK,GAAG,KAAK,KAAoB;AAAA,MACvE,CAAC;AACD,aAAO,OAAO,OAAO,SAAS,CAAC;AAAA,IACjC;AAAA,IACA,MAAM,YAAY,SAAS,KAAK;AAC9B,aAAO,eAAe,GAAG;AAAA,IAC3B;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,mBACd,QACA;AACA,SAAO,2BAA2B,MAAM;AAC1C;","names":["targetModel","targetField","sourceField","sourceValue"]}
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { SchemaDefinition, ModelName, OrmDriver } from '@farming-labs/orm';
1
+ import { SchemaDefinition, ModelName, OrmDriverHandle, OrmDriver } from '@farming-labs/orm';
2
2
 
3
3
  type PrismaRow = Record<string, unknown>;
4
4
  type PrismaWhereInput = Record<string, unknown>;
@@ -8,11 +8,11 @@ type PrismaDelegateLike = {
8
8
  count(args?: Record<string, unknown>): Promise<number>;
9
9
  create(args: {
10
10
  data: PrismaRow;
11
- }): Promise<PrismaRow>;
11
+ } & Record<string, unknown>): Promise<PrismaRow>;
12
12
  update?(args: {
13
13
  where: PrismaRow;
14
14
  data: PrismaRow;
15
- }): Promise<PrismaRow>;
15
+ } & Record<string, unknown>): Promise<PrismaRow>;
16
16
  updateMany(args: {
17
17
  where?: PrismaWhereInput;
18
18
  data: PrismaRow;
@@ -23,10 +23,10 @@ type PrismaDelegateLike = {
23
23
  where: PrismaRow;
24
24
  create: PrismaRow;
25
25
  update: PrismaRow;
26
- }): Promise<PrismaRow>;
26
+ } & Record<string, unknown>): Promise<PrismaRow>;
27
27
  delete?(args: {
28
28
  where: PrismaRow;
29
- }): Promise<PrismaRow>;
29
+ } & Record<string, unknown>): Promise<PrismaRow>;
30
30
  deleteMany(args: {
31
31
  where?: PrismaWhereInput;
32
32
  }): Promise<{
@@ -40,6 +40,7 @@ type PrismaDriverConfig<TSchema extends SchemaDefinition<any>> = {
40
40
  client: PrismaClientLike;
41
41
  models?: Partial<Record<ModelName<TSchema>, string>>;
42
42
  };
43
- declare function createPrismaDriver<TSchema extends SchemaDefinition<any>>(config: PrismaDriverConfig<TSchema>): OrmDriver<TSchema>;
43
+ type PrismaDriverHandle = OrmDriverHandle<"prisma", PrismaClientLike>;
44
+ declare function createPrismaDriver<TSchema extends SchemaDefinition<any>>(config: PrismaDriverConfig<TSchema>): OrmDriver<TSchema, PrismaDriverHandle>;
44
45
 
45
- export { type PrismaClientLike, type PrismaDriverConfig, createPrismaDriver };
46
+ export { type PrismaClientLike, type PrismaDriverConfig, type PrismaDriverHandle, createPrismaDriver };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { SchemaDefinition, ModelName, OrmDriver } from '@farming-labs/orm';
1
+ import { SchemaDefinition, ModelName, OrmDriverHandle, OrmDriver } from '@farming-labs/orm';
2
2
 
3
3
  type PrismaRow = Record<string, unknown>;
4
4
  type PrismaWhereInput = Record<string, unknown>;
@@ -8,11 +8,11 @@ type PrismaDelegateLike = {
8
8
  count(args?: Record<string, unknown>): Promise<number>;
9
9
  create(args: {
10
10
  data: PrismaRow;
11
- }): Promise<PrismaRow>;
11
+ } & Record<string, unknown>): Promise<PrismaRow>;
12
12
  update?(args: {
13
13
  where: PrismaRow;
14
14
  data: PrismaRow;
15
- }): Promise<PrismaRow>;
15
+ } & Record<string, unknown>): Promise<PrismaRow>;
16
16
  updateMany(args: {
17
17
  where?: PrismaWhereInput;
18
18
  data: PrismaRow;
@@ -23,10 +23,10 @@ type PrismaDelegateLike = {
23
23
  where: PrismaRow;
24
24
  create: PrismaRow;
25
25
  update: PrismaRow;
26
- }): Promise<PrismaRow>;
26
+ } & Record<string, unknown>): Promise<PrismaRow>;
27
27
  delete?(args: {
28
28
  where: PrismaRow;
29
- }): Promise<PrismaRow>;
29
+ } & Record<string, unknown>): Promise<PrismaRow>;
30
30
  deleteMany(args: {
31
31
  where?: PrismaWhereInput;
32
32
  }): Promise<{
@@ -40,6 +40,7 @@ type PrismaDriverConfig<TSchema extends SchemaDefinition<any>> = {
40
40
  client: PrismaClientLike;
41
41
  models?: Partial<Record<ModelName<TSchema>, string>>;
42
42
  };
43
- declare function createPrismaDriver<TSchema extends SchemaDefinition<any>>(config: PrismaDriverConfig<TSchema>): OrmDriver<TSchema>;
43
+ type PrismaDriverHandle = OrmDriverHandle<"prisma", PrismaClientLike>;
44
+ declare function createPrismaDriver<TSchema extends SchemaDefinition<any>>(config: PrismaDriverConfig<TSchema>): OrmDriver<TSchema, PrismaDriverHandle>;
44
45
 
45
- export { type PrismaClientLike, type PrismaDriverConfig, createPrismaDriver };
46
+ export { type PrismaClientLike, type PrismaDriverConfig, type PrismaDriverHandle, createPrismaDriver };
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import {
8
8
  resolveRowIdentityLookup,
9
9
  validateUniqueLookupUpdateData
10
10
  } from "@farming-labs/orm";
11
+ var pluralize = (value) => value.endsWith("s") ? value : `${value}s`;
11
12
  var manifestCache = /* @__PURE__ */ new WeakMap();
12
13
  function getManifest(schema) {
13
14
  const cached = manifestCache.get(schema);
@@ -110,6 +111,80 @@ function compileOrderBy(orderBy) {
110
111
  [key]: value
111
112
  }));
112
113
  }
114
+ function supportsNativePrismaManyToManyArgs(args) {
115
+ return args.where === void 0 && args.orderBy === void 0 && args.take === void 0 && args.skip === void 0;
116
+ }
117
+ function prismaManyToManyJoinKeys(relation) {
118
+ return {
119
+ throughRelationName: pluralize(relation.through),
120
+ targetRelationName: relation.target
121
+ };
122
+ }
123
+ function compilePrismaSelect(schema, modelName, select) {
124
+ const manifest = getManifest(schema);
125
+ const model = manifest.models[modelName];
126
+ const output = {};
127
+ const hiddenScalarKeys = /* @__PURE__ */ new Set();
128
+ for (const [key, value] of Object.entries(select)) {
129
+ if (value === void 0) continue;
130
+ if (key in model.fields && value === true) {
131
+ output[key] = true;
132
+ continue;
133
+ }
134
+ if (!(key in schema.models[modelName].relations)) continue;
135
+ const relation = schema.models[modelName].relations[key];
136
+ const relationArgs = value === true ? {} : value;
137
+ if (relation.kind === "manyToMany") {
138
+ if (supportsNativePrismaManyToManyArgs(relationArgs)) {
139
+ const targetModel2 = relation.target;
140
+ const { throughRelationName, targetRelationName } = prismaManyToManyJoinKeys(relation);
141
+ output[throughRelationName] = {
142
+ select: {
143
+ [targetRelationName]: relationArgs.select ? {
144
+ select: compilePrismaSelect(schema, targetModel2, relationArgs.select)
145
+ } : true
146
+ }
147
+ };
148
+ continue;
149
+ }
150
+ const throughModel = manifest.models[relation.through];
151
+ const throughFromReference = parseReference(throughModel.fields[relation.from]?.references);
152
+ hiddenScalarKeys.add(
153
+ throughFromReference?.field ?? identityField(manifest.models[modelName]).name
154
+ );
155
+ continue;
156
+ }
157
+ if (value === true) {
158
+ output[key] = true;
159
+ continue;
160
+ }
161
+ const targetModel = relation.target;
162
+ const next = {};
163
+ if (relationArgs.where) {
164
+ next.where = compileWhere(
165
+ manifest.models[targetModel],
166
+ relationArgs.where
167
+ );
168
+ }
169
+ if (relationArgs.orderBy) {
170
+ next.orderBy = compileOrderBy(
171
+ relationArgs.orderBy
172
+ );
173
+ }
174
+ if (relationArgs.take !== void 0) next.take = relationArgs.take;
175
+ if (relationArgs.skip !== void 0) next.skip = relationArgs.skip;
176
+ if (relationArgs.select) {
177
+ next.select = compilePrismaSelect(schema, targetModel, relationArgs.select);
178
+ }
179
+ output[key] = Object.keys(next).length ? next : true;
180
+ }
181
+ for (const fieldName of hiddenScalarKeys) {
182
+ if (!(fieldName in output)) {
183
+ output[fieldName] = true;
184
+ }
185
+ }
186
+ return output;
187
+ }
113
188
  function buildPrismaUniqueWhere(lookup) {
114
189
  if (lookup.fields.length === 1) {
115
190
  const field = lookup.fields[0];
@@ -144,7 +219,8 @@ function createPrismaDriverInternal(config, state = {}) {
144
219
  where: compileWhere(model, args.where),
145
220
  orderBy: compileOrderBy(args.orderBy),
146
221
  take: args.take,
147
- skip: args.skip
222
+ skip: args.skip,
223
+ select: args.select ? compilePrismaSelect(schema, modelName, args.select) : void 0
148
224
  });
149
225
  return Promise.all(rows.map((row) => projectRow(schema, modelName, row, args.select)));
150
226
  }
@@ -155,13 +231,15 @@ function createPrismaDriverInternal(config, state = {}) {
155
231
  if (delegate.findFirst) {
156
232
  return delegate.findFirst({
157
233
  where: compileWhere(model, args.where),
158
- orderBy: compileOrderBy(args.orderBy)
234
+ orderBy: compileOrderBy(args.orderBy),
235
+ select: args.select ? compilePrismaSelect(schema, modelName, args.select) : void 0
159
236
  });
160
237
  }
161
238
  const rows = await delegate.findMany({
162
239
  where: compileWhere(model, args.where),
163
240
  orderBy: compileOrderBy(args.orderBy),
164
- take: 1
241
+ take: 1,
242
+ select: args.select ? compilePrismaSelect(schema, modelName, args.select) : void 0
165
243
  });
166
244
  return rows[0] ?? null;
167
245
  }
@@ -186,6 +264,32 @@ function createPrismaDriverInternal(config, state = {}) {
186
264
  continue;
187
265
  }
188
266
  if (key in schema.models[modelName].relations) {
267
+ const relation = schema.models[modelName].relations[key];
268
+ const loadedValue = row[key];
269
+ if (loadedValue !== void 0) {
270
+ const targetModel = relation.target;
271
+ const childSelect = value === true ? void 0 : value.select;
272
+ output[key] = Array.isArray(loadedValue) ? await Promise.all(
273
+ loadedValue.map(
274
+ (item) => projectRow(schema, targetModel, item, childSelect)
275
+ )
276
+ ) : loadedValue === null ? relation.kind === "hasMany" || relation.kind === "manyToMany" ? [] : null : await projectRow(schema, targetModel, loadedValue, childSelect);
277
+ continue;
278
+ }
279
+ if (relation.kind === "manyToMany") {
280
+ const targetModel = relation.target;
281
+ const childSelect = value === true ? void 0 : value.select;
282
+ const { throughRelationName, targetRelationName } = prismaManyToManyJoinKeys(relation);
283
+ const throughRows = row[throughRelationName];
284
+ if (Array.isArray(throughRows)) {
285
+ output[key] = await Promise.all(
286
+ throughRows.map(
287
+ (entry) => entry && typeof entry === "object" && entry[targetRelationName] && typeof entry[targetRelationName] === "object" ? entry[targetRelationName] : null
288
+ ).filter((entry) => entry !== null).map((entry) => projectRow(schema, targetModel, entry, childSelect))
289
+ );
290
+ continue;
291
+ }
292
+ }
189
293
  output[key] = await resolveRelation(
190
294
  schema,
191
295
  modelName,
@@ -304,6 +408,10 @@ function createPrismaDriverInternal(config, state = {}) {
304
408
  );
305
409
  }
306
410
  const driver = {
411
+ handle: {
412
+ kind: "prisma",
413
+ client: config.client
414
+ },
307
415
  async findMany(schema, model, args) {
308
416
  return loadRows(schema, model, args);
309
417
  },
@@ -332,7 +440,8 @@ function createPrismaDriverInternal(config, state = {}) {
332
440
  data: buildCreateData(
333
441
  manifest.models[model],
334
442
  args.data
335
- )
443
+ ),
444
+ select: args.select ? compilePrismaSelect(schema, model, args.select) : void 0
336
445
  });
337
446
  return projectRow(schema, model, row, args.select);
338
447
  },
@@ -359,7 +468,8 @@ function createPrismaDriverInternal(config, state = {}) {
359
468
  const updateData = buildUpdateData(args.data);
360
469
  const updated = delegate.update?.({
361
470
  where: identityWhere,
362
- data: updateData
471
+ data: updateData,
472
+ select: args.select ? compilePrismaSelect(schema, model, args.select) : void 0
363
473
  }) ?? (async () => {
364
474
  await delegate.updateMany({
365
475
  where: identityWhere,
@@ -369,7 +479,8 @@ function createPrismaDriverInternal(config, state = {}) {
369
479
  })();
370
480
  const row = await updated;
371
481
  const nextRow = row ?? await loadRawOneRow(schema, model, {
372
- where: identityWhere
482
+ where: identityWhere,
483
+ select: args.select
373
484
  });
374
485
  if (!nextRow) return null;
375
486
  return projectRow(schema, model, nextRow, args.select);
@@ -409,7 +520,8 @@ function createPrismaDriverInternal(config, state = {}) {
409
520
  const row = await (delegate.upsert?.({
410
521
  where: buildPrismaUniqueWhere(lookup),
411
522
  create: createData,
412
- update: updateData
523
+ update: updateData,
524
+ select: args.select ? compilePrismaSelect(schema, model, args.select) : void 0
413
525
  }) ?? runTransaction(async (txDriver) => {
414
526
  const existing = await txDriver.findUnique(schema, model, {
415
527
  where: args.where
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 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"]}
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 type OrmDriverHandle,\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\nconst pluralize = (value: string) => (value.endsWith(\"s\") ? value : `${value}s`);\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 } & Record<string, unknown>): Promise<PrismaRow>;\n update?(\n args: { where: PrismaRow; data: PrismaRow } & Record<string, unknown>,\n ): Promise<PrismaRow>;\n updateMany(args: { where?: PrismaWhereInput; data: PrismaRow }): Promise<{ count?: number }>;\n upsert?(\n args: { where: PrismaRow; create: PrismaRow; update: PrismaRow } & Record<string, unknown>,\n ): Promise<PrismaRow>;\n delete?(args: { where: PrismaRow } & Record<string, unknown>): 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\nexport type PrismaDriverHandle = OrmDriverHandle<\"prisma\", PrismaClientLike>;\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 supportsNativePrismaManyToManyArgs(args: Partial<FindManyArgs<any, any, any>>) {\n return (\n args.where === undefined &&\n args.orderBy === undefined &&\n args.take === undefined &&\n args.skip === undefined\n );\n}\n\nfunction prismaManyToManyJoinKeys(relation: { through: string; target: string }) {\n return {\n throughRelationName: pluralize(relation.through),\n targetRelationName: relation.target,\n };\n}\n\nfunction compilePrismaSelect<\n TSchema extends SchemaDefinition<any>,\n TModelName extends ModelName<TSchema>,\n>(schema: TSchema, modelName: TModelName, select: SelectShape<TSchema, TModelName>) {\n const manifest = getManifest(schema);\n const model = manifest.models[modelName];\n const output: Record<string, unknown> = {};\n const hiddenScalarKeys = new Set<string>();\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] = true;\n continue;\n }\n\n if (!(key in schema.models[modelName].relations)) continue;\n\n const relation = schema.models[modelName].relations[key as RelationName<TSchema, TModelName>];\n const relationArgs = (value === true ? {} : value) as Partial<FindManyArgs<TSchema, any, any>>;\n if (relation.kind === \"manyToMany\") {\n if (supportsNativePrismaManyToManyArgs(relationArgs)) {\n const targetModel = relation.target as ModelName<TSchema>;\n const { throughRelationName, targetRelationName } = prismaManyToManyJoinKeys(relation);\n output[throughRelationName] = {\n select: {\n [targetRelationName]: relationArgs.select\n ? {\n select: compilePrismaSelect(schema, targetModel, relationArgs.select as any),\n }\n : true,\n },\n };\n continue;\n }\n\n const throughModel = manifest.models[relation.through];\n const throughFromReference = parseReference(throughModel.fields[relation.from]?.references);\n hiddenScalarKeys.add(\n throughFromReference?.field ?? identityField(manifest.models[modelName]).name,\n );\n continue;\n }\n\n if (value === true) {\n output[key] = true;\n continue;\n }\n const targetModel = relation.target as ModelName<TSchema>;\n const next: Record<string, unknown> = {};\n if (relationArgs.where) {\n next.where = compileWhere(\n manifest.models[targetModel],\n relationArgs.where as PrismaWhere | undefined,\n );\n }\n if (relationArgs.orderBy) {\n next.orderBy = compileOrderBy(\n relationArgs.orderBy as Partial<Record<string, \"asc\" | \"desc\">> | undefined,\n );\n }\n if (relationArgs.take !== undefined) next.take = relationArgs.take;\n if (relationArgs.skip !== undefined) next.skip = relationArgs.skip;\n if (relationArgs.select) {\n next.select = compilePrismaSelect(schema, targetModel, relationArgs.select as any);\n }\n\n output[key] = Object.keys(next).length ? next : true;\n }\n\n for (const fieldName of hiddenScalarKeys) {\n if (!(fieldName in output)) {\n output[fieldName] = true;\n }\n }\n\n return output;\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): OrmDriver<TSchema, PrismaDriverHandle> {\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 select: args.select ? compilePrismaSelect(schema, modelName, args.select) : undefined,\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 select?: SelectShape<TSchema, TModelName>;\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 select: args.select ? compilePrismaSelect(schema, modelName, args.select) : undefined,\n });\n }\n\n const rows = await delegate.findMany({\n where: compileWhere(model, args.where),\n orderBy: compileOrderBy(args.orderBy),\n take: 1,\n select: args.select ? compilePrismaSelect(schema, modelName, args.select) : undefined,\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 const relation =\n schema.models[modelName].relations[key as RelationName<TSchema, TModelName>];\n const loadedValue = row[key];\n if (loadedValue !== undefined) {\n const targetModel = relation.target as ModelName<TSchema>;\n const childSelect = value === true ? undefined : value.select;\n output[key] = Array.isArray(loadedValue)\n ? await Promise.all(\n loadedValue.map((item) =>\n projectRow(schema, targetModel, item as PrismaRow, childSelect as any),\n ),\n )\n : loadedValue === null\n ? relation.kind === \"hasMany\" || relation.kind === \"manyToMany\"\n ? []\n : null\n : await projectRow(schema, targetModel, loadedValue as PrismaRow, childSelect as any);\n continue;\n }\n\n if (relation.kind === \"manyToMany\") {\n const targetModel = relation.target as ModelName<TSchema>;\n const childSelect = value === true ? undefined : value.select;\n const { throughRelationName, targetRelationName } = prismaManyToManyJoinKeys(relation);\n const throughRows = row[throughRelationName];\n\n if (Array.isArray(throughRows)) {\n output[key] = await Promise.all(\n throughRows\n .map((entry) =>\n entry &&\n typeof entry === \"object\" &&\n (entry as PrismaRow)[targetRelationName] &&\n typeof (entry as PrismaRow)[targetRelationName] === \"object\"\n ? ((entry as PrismaRow)[targetRelationName] as PrismaRow)\n : null,\n )\n .filter((entry): entry is PrismaRow => entry !== null)\n .map((entry) => projectRow(schema, targetModel, entry, childSelect as any)),\n );\n continue;\n }\n }\n\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>(\n run: (driver: OrmDriver<TSchema, PrismaDriverHandle>) => Promise<TResult>,\n ) {\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, PrismaDriverHandle> = {\n handle: {\n kind: \"prisma\",\n client: config.client,\n },\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 select: args.select ? compilePrismaSelect(schema, model, args.select) : undefined,\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 select: args.select ? compilePrismaSelect(schema, model, args.select) : undefined,\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 select: args.select,\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 select: args.select ? compilePrismaSelect(schema, model, args.select) : undefined,\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":["targetModel","targetField","sourceField","sourceValue"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/orm-prisma",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
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.11"
22
+ "@farming-labs/orm": "0.0.13"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@prisma/client": "^6.5.0",