@farming-labs/orm-prisma 0.0.12 → 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
@@ -425,6 +425,10 @@ function createPrismaDriverInternal(config, state = {}) {
425
425
  );
426
426
  }
427
427
  const driver = {
428
+ handle: {
429
+ kind: "prisma",
430
+ client: config.client
431
+ },
428
432
  async findMany(schema, model, args) {
429
433
  return loadRows(schema, model, args);
430
434
  },
@@ -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\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\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) {\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>(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 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"]}
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/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>;
@@ -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>;
@@ -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
@@ -408,6 +408,10 @@ function createPrismaDriverInternal(config, state = {}) {
408
408
  );
409
409
  }
410
410
  const driver = {
411
+ handle: {
412
+ kind: "prisma",
413
+ client: config.client
414
+ },
411
415
  async findMany(schema, model, args) {
412
416
  return loadRows(schema, model, args);
413
417
  },
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\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\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) {\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>(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 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"]}
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.12",
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.12"
22
+ "@farming-labs/orm": "0.0.13"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@prisma/client": "^6.5.0",