domaindrivenjs
Version:
Composition-based Domain-Driven Design toolkit for JavaScript/TypeScript
21 lines (20 loc) • 934 B
TypeScript
/**
* Creates a Prisma-based repository adapter
*
* @template T - Aggregate type
* @template P - Prisma model type
* @param {object} options - Adapter configuration
* @param {any} options.prisma - Prisma client instance
* @param {string} options.model - Prisma model name
* @param {string} options.identity - Identity field of the aggregate
* @param {(aggregate: T) => P} [options.serialize] - Function to convert aggregate to Prisma model
* @param {(data: P) => T} [options.deserialize] - Function to convert Prisma model to aggregate
* @returns {import('../Base.js').RepositoryAdapter<T>} Prisma repository adapter
*/
export function createPrismaAdapter<T, P>({ prisma, model, identity, serialize, deserialize, }: {
prisma: any;
model: string;
identity: string;
serialize?: ((aggregate: T) => P) | undefined;
deserialize?: ((data: P) => T) | undefined;
}): import("../Base.js").RepositoryAdapter<T>;