45 lines
2.1 KiB
JavaScript
45 lines
2.1 KiB
JavaScript
const Database = require('better-sqlite3');
|
|
const dbPath = process.env.DB_PATH || 'data/school.db';
|
|
const db = new Database(dbPath);
|
|
db.pragma('foreign_keys=off');
|
|
db.exec(`
|
|
BEGIN TRANSACTION;
|
|
CREATE TABLE users_new (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
uid TEXT UNIQUE,
|
|
email TEXT UNIQUE NOT NULL,
|
|
password TEXT NOT NULL,
|
|
role TEXT NOT NULL CHECK(role IN ('systems_admin', 'school_admin', 'teacher', 'student', 'parent', 'accountant', 'librarian', 'nurse', 'clubs_head')),
|
|
first_name TEXT NOT NULL,
|
|
last_name TEXT NOT NULL,
|
|
phone TEXT,
|
|
address TEXT,
|
|
date_of_birth DATE,
|
|
gender TEXT CHECK(gender IN ('male', 'female', 'other')),
|
|
id_number TEXT,
|
|
profile_image TEXT,
|
|
emergency_contact TEXT,
|
|
emergency_phone TEXT,
|
|
is_active INTEGER DEFAULT 1,
|
|
last_login DATETIME,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
last_synced_at DATETIME,
|
|
sync_status TEXT DEFAULT 'pending' CHECK(sync_status IN ('synced', 'pending', 'conflict')),
|
|
is_deleted INTEGER DEFAULT 0
|
|
);
|
|
INSERT INTO users_new (id, uid, email, password, role, first_name, last_name, phone, address, date_of_birth, gender, id_number, profile_image, emergency_contact, emergency_phone, is_active, last_login, created_at, updated_at, last_synced_at, sync_status, is_deleted)
|
|
SELECT id, uid, email, password, CASE WHEN role = 'admin' THEN 'school_admin' WHEN role = 'principal' THEN 'school_admin' ELSE role END, first_name, last_name, phone, address, date_of_birth, gender, id_number, profile_image, emergency_contact, emergency_phone, is_active, last_login, created_at, updated_at, last_synced_at, sync_status, is_deleted FROM users;
|
|
|
|
DROP TABLE users;
|
|
ALTER TABLE users_new RENAME TO users;
|
|
CREATE INDEX IF NOT EXISTS idx_users_role ON users(role);
|
|
|
|
INSERT OR IGNORE INTO users (email, password, role, first_name, last_name, phone)
|
|
VALUES ('sysadmin@school.com', '$2a$10$XU0k2s/A/8JmI00.41/o..p25aI1WnB1I.hS12hYq1N1D8KzR2x4W', 'systems_admin', 'System', 'Administrator', '+1234567890');
|
|
|
|
COMMIT;
|
|
PRAGMA foreign_keys=on;
|
|
`);
|
|
console.log('Migration successful');
|