@seedts/adapter-prisma
v0.1.1
Published
Prisma adapter for SeedTS
Maintainers
Readme
@seedts/adapter-prisma
Prisma adapter for SeedTS - enables database seeding with Prisma ORM.
Installation
npm install @seedts/adapter-prisma @prisma/client
# or
pnpm add @seedts/adapter-prisma @prisma/client
# or
yarn add @seedts/adapter-prisma @prisma/clientUsage
import { PrismaClient } from '@prisma/client';
import { PrismaAdapter } from '@seedts/adapter-prisma';
import { Seed, Action, Entity, Attribute } from '@seedts/jsx-runtime';
// Create Prisma client
const prisma = new PrismaClient();
// Create adapter
const adapter = new PrismaAdapter({
client: prisma,
modelName: 'user', // lowercase model name from your Prisma schema
});
// Use with SeedTS
export const UsersSeed = () => (
<Seed name="users" adapter={adapter}>
<Action count={10}>
<Entity>
<Attribute
name="email"
type="string"
factory={(ctx) => `user${ctx.index}@example.com`}
/>
<Attribute name="name" type="string" factory={() => 'John Doe'} />
</Entity>
</Action>
</Seed>
);Configuration
PrismaAdapterConfig
| Option | Type | Required | Default | Description |
|--------|------|----------|---------|-------------|
| client | PrismaClient | Yes | - | Prisma client instance |
| modelName | string | Yes | - | Model name (lowercase, e.g., 'user', 'post') |
| modelDelegate | any | No | - | Custom model delegate (auto-inferred if not provided) |
Features
- ✅ Transaction support (native Prisma transactions)
- ✅ Type-safe with Prisma generated types
- ✅ Automatic relation handling
- ✅ Works with all Prisma-supported databases
- ✅ Auto-increment ID handling
Prisma Schema Example
// schema.prisma
model User {
id Int @id @default(autoincrement())
email String @unique
name String
posts Post[]
createdAt DateTime @default(now())
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
author User @relation(fields: [authorId], references: [id])
authorId Int
createdAt DateTime @default(now())
}Multiple Models
const userAdapter = new PrismaAdapter({
client: prisma,
modelName: 'user',
});
const postAdapter = new PrismaAdapter({
client: prisma,
modelName: 'post',
});Advanced: Using Prisma Transactions
The Prisma adapter includes a special transaction() method for advanced use cases:
const result = await adapter.transaction(async (txAdapter) => {
// Use txAdapter inside the transaction
const users = await txAdapter.insert('users', userData);
return users;
});TypeScript Types
import { PrismaClient, User } from '@prisma/client';
import { PrismaAdapter } from '@seedts/adapter-prisma';
const adapter = new PrismaAdapter<User>({
client: prisma,
modelName: 'user',
});Cleanup
// Close Prisma connection
await adapter.close();License
MIT
