battery_tracker/src/lib/db/seed.ts

42 lines
1.2 KiB
TypeScript

import Database from 'better-sqlite3';
import { drizzle } from 'drizzle-orm/better-sqlite3';
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
import * as schema from './schema';
import path from 'path';
import fs from 'fs';
const dbPath = path.join(process.cwd(), 'data', 'battery_tracker.db');
// Ensure data directory exists
const dataDir = path.dirname(dbPath);
if (!fs.existsSync(dataDir)) {
fs.mkdirSync(dataDir, { recursive: true });
}
const sqlite = new Database(dbPath);
sqlite.pragma('foreign_keys = ON');
const db = drizzle(sqlite, { schema });
// Run migrations
console.log('Running migrations...');
migrate(db, { migrationsFolder: './drizzle' });
console.log('Migrations complete.');
// Seed default battery types
const defaultTypes = ['AA', 'AAA', '18650', 'CR2032', '9V', 'C', 'D', '14500', '16340', '21700'];
console.log('Seeding default battery types...');
for (const typeName of defaultTypes) {
try {
db.insert(schema.batteryTypes).values({ name: typeName, isCustom: false }).run();
console.log(` Added: ${typeName}`);
} catch {
// Already exists, skip
console.log(` Skipped (exists): ${typeName}`);
}
}
console.log('Seed complete!');
sqlite.close();