-- OpenRange database initialization -- Generated from SnapshotSpec -- Application database CREATE DATABASE IF NOT EXISTS {{ db_name | default('referral_db') }}; USE {{ db_name | default('referral_db') }}; -- Users table (web app authentication) CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(64) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, full_name VARCHAR(128), email VARCHAR(128), role VARCHAR(64) DEFAULT 'user', department VARCHAR(64), last_login DATETIME, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- Patients table CREATE TABLE IF NOT EXISTS patients ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(64) NOT NULL, last_name VARCHAR(64) NOT NULL, dob DATE, phone VARCHAR(20), email VARCHAR(128), address VARCHAR(256), emergency_contact VARCHAR(128), diagnosis VARCHAR(256), created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- Patient referrals CREATE TABLE IF NOT EXISTS patient_referrals ( id INT AUTO_INCREMENT PRIMARY KEY, patient_id INT, referring_clinic VARCHAR(128), specialist VARCHAR(128), status VARCHAR(32) DEFAULT 'Pending', diagnosis VARCHAR(256), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (patient_id) REFERENCES patients(id) ); -- Billing table CREATE TABLE IF NOT EXISTS billing ( id INT AUTO_INCREMENT PRIMARY KEY, patient_id INT, policy_number VARCHAR(32), amount_due DECIMAL(10, 2), status VARCHAR(32) DEFAULT 'Open', last_updated DATE, FOREIGN KEY (patient_id) REFERENCES patients(id) ); -- Sessions table CREATE TABLE IF NOT EXISTS sessions ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, session_token VARCHAR(128), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, last_ip VARCHAR(45), FOREIGN KEY (user_id) REFERENCES users(id) ); -- Access log table CREATE TABLE IF NOT EXISTS access_log ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, action VARCHAR(128), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, ip VARCHAR(45), FOREIGN KEY (user_id) REFERENCES users(id) ); -- Flags database CREATE DATABASE IF NOT EXISTS flags; USE flags; CREATE TABLE IF NOT EXISTS secrets ( id INT AUTO_INCREMENT PRIMARY KEY, flag_name VARCHAR(64) NOT NULL, flag VARCHAR(128) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); -- Create and grant application DB user (used by PHP web app) CREATE USER IF NOT EXISTS '{{ db_user | default('svc_db') }}'@'%' IDENTIFIED WITH mysql_native_password BY '{{ db_password | default('SvcDb!401') }}'; GRANT SELECT, INSERT, UPDATE ON {{ db_name | default('referral_db') }}.* TO '{{ db_user | default('svc_db') }}'@'%'; GRANT SELECT ON flags.* TO '{{ db_user | default('svc_db') }}'@'%'; FLUSH PRIVILEGES;