import bcrypt from 'bcryptjs' import { createDb } from './db' import { runMigrations } from './migrate' const { db, sqlite } = createDb() runMigrations(sqlite) // Seed reference data — units sqlite.run("INSERT OR IGNORE INTO units (name) VALUES ('mg')") sqlite.run("INSERT OR IGNORE INTO units (name) VALUES ('gm')") sqlite.run("INSERT OR IGNORE INTO units (name) VALUES ('ml')") sqlite.run("INSERT OR IGNORE INTO units (name) VALUES ('piece')") // Seed enterprise sqlite.run("INSERT OR IGNORE INTO enterprises (id, name, type, owner_name, mobile) VALUES (1, 'Main Pharmacy', 'Pharmacy', 'Admin User', '0000000000')") // Seed staff (admin user) const today = new Date().toISOString().slice(0, 10) const adminHash = bcrypt.hashSync('admin123', 10) || '' sqlite.run( "INSERT OR IGNORE INTO staff (id, name, username, password, added_on, is_password_reset_needed) VALUES (1, 'Admin', 'admin', ?, ?, 1)", [adminHash, today], ) // Link staff to enterprise sqlite.run("INSERT OR IGNORE INTO enterprise_staff (id, staff_id, enterprise_id) VALUES (1, 1, 1)") // Seed roles sqlite.run("INSERT OR IGNORE INTO roles (id, name) VALUES (1, 'Admin')") sqlite.run("INSERT OR IGNORE INTO roles (id, name) VALUES (2, 'Pharmacist')") sqlite.run("INSERT OR IGNORE INTO roles (id, name) VALUES (3, 'Manager')") sqlite.run("INSERT OR IGNORE INTO roles (id, name) VALUES (4, 'Cashier')") // Seed permissions const permNames = [ 'product.read', 'product.write', 'stock.read', 'stock.write', 'distributor.read', 'distributor.write', 'storage.read', 'storage.write', 'billing.read', 'billing.write', 'staff.read', 'staff.write', 'customer.read', 'customer.write', ] for (let i = 0; i < permNames.length; i++) { sqlite.run(`INSERT OR IGNORE INTO permissions (id, name) VALUES (${i + 1}, '${permNames[i]}')`) } // Seed role_permissions — Admin gets all for (let i = 1; i <= permNames.length; i++) { sqlite.run(`INSERT OR IGNORE INTO role_permissions (role_id, permission_id) VALUES (1, ${i})`) } // Seed staff_roles — admin gets Admin role sqlite.run("INSERT OR IGNORE INTO staff_roles (staff_id, role_id) VALUES (1, 1)") export { db, sqlite }