-- HR Workforce Platform - SQLite transition schema draft -- Stage 7 artifact: install sqlite3 or use a Node SQLite package before applying. PRAGMA foreign_keys = ON; CREATE TABLE IF NOT EXISTS companies ( id TEXT PRIMARY KEY, name TEXT NOT NULL, legal_name TEXT, status TEXT NOT NULL DEFAULT 'active', created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS branches ( id TEXT PRIMARY KEY, company_id TEXT NOT NULL REFERENCES companies(id), name TEXT NOT NULL, location TEXT, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS departments ( id TEXT PRIMARY KEY, branch_id TEXT NOT NULL REFERENCES branches(id), name TEXT NOT NULL, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS employees ( id TEXT PRIMARY KEY, employee_code TEXT NOT NULL UNIQUE, full_name_en TEXT NOT NULL, full_name_ar TEXT, department TEXT, designation TEXT, manager_employee_code TEXT, status TEXT NOT NULL DEFAULT 'active', joining_date TEXT, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS users ( id TEXT PRIMARY KEY, employee_code TEXT, name TEXT NOT NULL, email TEXT UNIQUE, pin_hash TEXT, role TEXT NOT NULL CHECK (role IN ('HR Admin','Manager','Employee')), is_active INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS documents ( id TEXT PRIMARY KEY, employee_code TEXT NOT NULL, document_type TEXT NOT NULL, dropbox_url TEXT, expiry_date TEXT, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS leave_requests ( id TEXT PRIMARY KEY, employee_code TEXT NOT NULL, leave_type TEXT NOT NULL, from_date TEXT NOT NULL, to_date TEXT NOT NULL, reason TEXT, status TEXT NOT NULL DEFAULT 'Submitted', last_action_by TEXT, last_action_at TEXT, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS performance_evaluations ( id TEXT PRIMARY KEY, employee_code TEXT NOT NULL, period TEXT NOT NULL, score REAL, comments TEXT, status TEXT NOT NULL DEFAULT 'Draft', created_by TEXT, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, closed_at TEXT ); CREATE TABLE IF NOT EXISTS employee_feedback ( id TEXT PRIMARY KEY, employee_code TEXT NOT NULL, area TEXT NOT NULL, rating INTEGER, feedback_text TEXT, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS recruitment_vacancies ( id TEXT PRIMARY KEY, department TEXT, position TEXT NOT NULL, required_date TEXT, priority TEXT, status TEXT NOT NULL DEFAULT 'Open', created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS audit_logs ( id TEXT PRIMARY KEY, actor_name TEXT, action TEXT NOT NULL, details_json TEXT NOT NULL DEFAULT '{}', created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS notifications ( id TEXT PRIMARY KEY, employee_code TEXT, notification_type TEXT NOT NULL, severity TEXT NOT NULL DEFAULT 'info', message TEXT NOT NULL, due_date TEXT, is_read INTEGER NOT NULL DEFAULT 0, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP );