Skip to content

Seeding

Velox TS provides database seeding through Prisma’s built-in system, with a Laravel-style API planned for future releases.

Terminal window
pnpm db:seed

Add to your package.json:

{
"prisma": {
"seed": "tsx prisma/seed.ts"
}
}

Create prisma/seed.ts:

import { db } from '@/database';
async function main() {
// Clean existing data
await db.user.deleteMany();
// Create seed data
await db.user.createMany({
data: [
{ name: 'Alice', email: 'alice@example.com' },
{ name: 'Bob', email: 'bob@example.com' },
],
});
console.log('Seeding completed');
}
main()
.catch(console.error)
.finally(() => db.$disconnect());

For realistic test data, use @faker-js/faker:

import { faker } from '@faker-js/faker';
import { db } from '@/database';
function createFakeUser() {
return {
name: faker.person.fullName(),
email: faker.internet.email(),
createdAt: faker.date.past(),
};
}
// Create multiple users
await db.user.createMany({
data: Array.from({ length: 10 }, createFakeUser),
});
CommandDescription
pnpm db:seedRun seed file
pnpm db:push --force-resetReset database (then run db:seed)

The planned API will provide an expressive, Laravel-inspired interface:

// 🚧 Planned API - not yet available
import { defineSeeder, defineFactory } from '@veloxts/orm';
// Factory for generating fake data
export const userFactory = defineFactory({
model: 'user',
definition: (faker) => ({
name: faker.person.fullName(),
email: faker.internet.email(),
createdAt: faker.date.past(),
}),
});
// Seeder using factory
export default defineSeeder({
name: 'users',
run: async () => {
await userFactory.createMany(10);
},
});

Planned CLI commands:

CommandDescription
velox db:seedRun all seeders
velox db:seed --seeder=usersRun specific seeder
velox db:seed --freshFresh database + seed
velox make seeder usersGenerate seeder file