48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
import 'dotenv/config';
|
|
import { drizzle } from 'drizzle-orm/node-postgres';
|
|
import { eq } from 'drizzle-orm';
|
|
import pg from 'pg';
|
|
import argon2 from 'argon2';
|
|
import { env } from '../config/env.js';
|
|
import { users } from './schema/index.js';
|
|
|
|
const { Pool } = pg;
|
|
|
|
const TEST_USER = {
|
|
email: 'test@example.com',
|
|
password: 'TestPassword123!',
|
|
nickname: 'TestUser',
|
|
};
|
|
|
|
async function runSeed() {
|
|
const pool = new Pool({ connectionString: env.DATABASE_URL });
|
|
const db = drizzle(pool);
|
|
|
|
if (env.NODE_ENV !== 'development') {
|
|
await pool.end();
|
|
return;
|
|
}
|
|
|
|
const existing = await db.select().from(users).where(eq(users.email, TEST_USER.email)).limit(1);
|
|
if (existing.length > 0) {
|
|
await pool.end();
|
|
return;
|
|
}
|
|
|
|
const passwordHash = await argon2.hash(TEST_USER.password);
|
|
await db.insert(users).values({
|
|
email: TEST_USER.email,
|
|
passwordHash,
|
|
nickname: TEST_USER.nickname,
|
|
role: 'free',
|
|
emailVerifiedAt: new Date(),
|
|
});
|
|
|
|
await pool.end();
|
|
}
|
|
|
|
runSeed().catch((err) => {
|
|
console.error('Seed failed:', err);
|
|
process.exit(1);
|
|
});
|