- Created src/lib/db/schema.ts with users table (id, email, password_hash, created_at) - Created src/lib/db/index.ts exporting db singleton via Drizzle + Neon HTTP driver - Created drizzle.config.ts pointing to schema.ts with postgresql dialect - Created scripts/seed.ts reading AGENT_EMAIL/AGENT_PASSWORD to create hashed user row - Generated drizzle/0000_milky_black_cat.sql migration (committed per user decision) - db:migrate and db:seed pending user Neon database setup
30 lines
785 B
TypeScript
30 lines
785 B
TypeScript
import "dotenv/config";
|
|
import { drizzle } from "drizzle-orm/neon-http";
|
|
import { neon } from "@neondatabase/serverless";
|
|
import { users } from "../src/lib/db/schema";
|
|
import bcrypt from "bcryptjs";
|
|
|
|
const sql = neon(process.env.DATABASE_URL!);
|
|
const db = drizzle({ client: sql });
|
|
|
|
async function seed() {
|
|
const email = process.env.AGENT_EMAIL;
|
|
const password = process.env.AGENT_PASSWORD;
|
|
|
|
if (!email || !password) {
|
|
throw new Error("AGENT_EMAIL and AGENT_PASSWORD env vars are required");
|
|
}
|
|
|
|
const passwordHash = await bcrypt.hash(password, 12);
|
|
|
|
await db.insert(users).values({ email, passwordHash }).onConflictDoNothing();
|
|
|
|
console.log(`Seeded agent account: ${email}`);
|
|
process.exit(0);
|
|
}
|
|
|
|
seed().catch((err) => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|