geocrop-platform./apps/nextgen/server/migrate_roles.js

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');