feat: add database seeding script for disease catalog and expert user

This commit is contained in:
Asep Haryana Saputra
2026-05-22 18:54:23 +00:00
parent 1f4e0fbef3
commit 8415cbb2de
2 changed files with 55 additions and 0 deletions
+1
View File
@@ -7,6 +7,7 @@
"dev": "bun --env-file=../../.env --watch src/index.ts",
"start": "bun --env-file=../../.env src/index.ts",
"typecheck": "tsc --project tsconfig.json",
"db:seed": "bun --env-file=../../.env src/db/seed.ts",
"db:generate": "drizzle-kit generate",
"db:migrate": "drizzle-kit migrate"
},
+54
View File
@@ -0,0 +1,54 @@
import { eq } from 'drizzle-orm';
import { createDbClient } from './client';
import { diseaseCatalog, users } from './schema';
import { demoExpertUser, diseaseCatalogRows } from './seed-data';
import { hashPassword } from '../lib/auth';
const db = createDbClient();
await db
.insert(diseaseCatalog)
.values(diseaseCatalogRows)
.onConflictDoUpdate({
target: diseaseCatalog.slug,
set: {
label: diseaseCatalog.label,
commonName: diseaseCatalog.commonName,
summary: diseaseCatalog.summary,
description: diseaseCatalog.description,
symptoms: diseaseCatalog.symptoms,
recommendations: diseaseCatalog.recommendations,
riskLevel: diseaseCatalog.riskLevel,
accentColor: diseaseCatalog.accentColor,
displayOrder: diseaseCatalog.displayOrder,
updatedAt: new Date(),
},
});
const passwordHash = await hashPassword(demoExpertUser.password);
const existingExpert = await db
.select({ id: users.id })
.from(users)
.where(eq(users.email, demoExpertUser.email))
.limit(1);
if (existingExpert[0]) {
await db
.update(users)
.set({
name: demoExpertUser.name,
role: demoExpertUser.role,
passwordHash,
updatedAt: new Date(),
})
.where(eq(users.email, demoExpertUser.email));
} else {
await db.insert(users).values({
email: demoExpertUser.email,
name: demoExpertUser.name,
role: demoExpertUser.role,
passwordHash,
});
}
console.log(`Seeded ${diseaseCatalogRows.length} disease catalog rows and expert user ${demoExpertUser.email}`);