// 种子数据:徐家 + 家长账号 + 两个孩子。可重复执行,已有数据则跳过。 import dotenv from "dotenv"; dotenv.config({ path: [".env.local", ".env"] }); import bcrypt from "bcryptjs"; import { drizzle } from "drizzle-orm/mysql2"; import { eq } from "drizzle-orm"; import mysql from "mysql2/promise"; import { families, users } from "../src/db/schema"; const url = process.env.DATABASE_URL; if (!url) throw new Error("缺少 DATABASE_URL"); async function main(url: string) { const connection = await mysql.createConnection(url); const db = drizzle(connection); try { const [existingParent] = await db .select() .from(users) .where(eq(users.phone, "18684839400")) .limit(1); if (existingParent) { console.log("种子数据已存在,跳过"); } else { const [family] = await db .insert(families) .values({ name: "徐家" }) .$returningId(); const passwordHash = await bcrypt.hash("123456Aa", 10); await db.insert(users).values({ familyId: family.id, role: "parent", displayName: "家长", phone: "18684839400", passwordHash, }); await db.insert(users).values([ { familyId: family.id, role: "child", displayName: "徐卿玮", sortOrder: 0 }, { familyId: family.id, role: "child", displayName: "徐子惠", sortOrder: 1 }, ]); console.log("种子数据写入完成:徐家 + 家长 + 徐卿玮 + 徐子惠"); } } finally { await connection.end(); } } main(url);