@nestjs-dash/db-seeder-prisma
v0.2.2
Published
Prisma adapter for @nestjs-dash/db-seeder (transactional seeding via $transaction(), no @prisma/client dependency)
Readme
@nestjs-dash/db-seeder-prisma
Prisma adapter for @nestjs-dash/db-seeder: transactional seeding via prisma.$transaction(async (tx) => ...). Has no dependency on @prisma/client — that package's types only exist once a consumer runs prisma generate against their own schema, so this adapter defines a minimal structural PrismaModelDelegateLike/PrismaTransactionClientLike interface your generated client satisfies naturally.
Install
pnpm add @nestjs-dash/db-seeder @nestjs-dash/db-seeder-prisma @prisma/clientUsage
import { createAdapter, resolveTarget } from '@nestjs-dash/db-seeder-prisma';
import { normalize, runSeeding } from '@nestjs-dash/db-seeder';
const adapter = createAdapter(prisma);
// Prisma models can't be decorated, and there's no dependency on the DMMF
// here, so — unlike TypeORM/Drizzle — this adapter can't introspect columns
// on its own: pass the model name and its columns explicitly.
const target = resolveTarget({ modelName: 'author', columns: [{ name: 'name', required: true }] });
const rows = await normalize({ format: 'json', data: [{ name: 'Ada Lovelace' }] }, target);
await runSeeding(adapter, target, rows);onRowError: 'skip' is implemented via $executeRawUnsafe('SAVEPOINT ...') since Prisma has no delegate-level savepoint API — this works on Postgres/MySQL/SQLite, which all support nested savepoints inside an open transaction.
License
MIT
