CREATE TABLE IF NOT EXISTS sys_user ( id BIGINT PRIMARY KEY, username VARCHAR(64) NOT NULL UNIQUE, password_hash VARCHAR(100) NOT NULL, enabled BOOLEAN NOT NULL, created_at TIMESTAMP NOT NULL, updated_at TIMESTAMP NOT NULL, created_by VARCHAR(64) NOT NULL, updated_by VARCHAR(64) NOT NULL, deleted BOOLEAN NOT NULL DEFAULT FALSE ); CREATE TABLE IF NOT EXISTS sys_role ( id BIGINT PRIMARY KEY, name VARCHAR(64) NOT NULL UNIQUE, created_at TIMESTAMP NOT NULL, updated_at TIMESTAMP NOT NULL, created_by VARCHAR(64) NOT NULL, updated_by VARCHAR(64) NOT NULL, deleted BOOLEAN NOT NULL DEFAULT FALSE ); CREATE TABLE IF NOT EXISTS sys_user_role ( user_id BIGINT NOT NULL, role_id BIGINT NOT NULL, PRIMARY KEY (user_id, role_id), CONSTRAINT fk_user_role_user FOREIGN KEY (user_id) REFERENCES sys_user(id), CONSTRAINT fk_user_role_role FOREIGN KEY (role_id) REFERENCES sys_role(id) ); CREATE TABLE IF NOT EXISTS platform_user_snapshot ( platform_user_id BIGINT PRIMARY KEY, account VARCHAR(64) NOT NULL, display_name VARCHAR(64) NOT NULL, role_key VARCHAR(16) NOT NULL, source_updated_at TIMESTAMP NOT NULL, synced_at TIMESTAMP NOT NULL ); CREATE TABLE IF NOT EXISTS auth_login_exchange_code ( code_hash CHAR(64) PRIMARY KEY, platform_user_id BIGINT NOT NULL, expires_at TIMESTAMP NOT NULL, consumed_at TIMESTAMP NULL ); CREATE TABLE IF NOT EXISTS auth_refresh_token ( token_hash CHAR(64) PRIMARY KEY, platform_user_id BIGINT NOT NULL, expires_at TIMESTAMP NOT NULL, revoked_at TIMESTAMP NULL ); INSERT IGNORE INTO sys_role (id, name, created_at, updated_at, created_by, updated_by, deleted) VALUES (1001, 'TEACHER', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'SYSTEM', 'SYSTEM', FALSE), (1002, 'STUDENT', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'SYSTEM', 'SYSTEM', FALSE); INSERT INTO sys_user (id, username, password_hash, enabled, created_at, updated_at, created_by, updated_by, deleted) VALUES (487, 'tzs001', '$2a$10$ufcw5KFHtOmLzxAsV4C.MuIDOErMlw0iw5J5hc8OMzaTx0u9QYxG6', TRUE, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'SYSTEM', 'SYSTEM', FALSE) ON DUPLICATE KEY UPDATE username = VALUES(username), password_hash = VALUES(password_hash), enabled = TRUE, updated_at = CURRENT_TIMESTAMP, updated_by = 'SYSTEM', deleted = FALSE; INSERT INTO platform_user_snapshot (platform_user_id, account, display_name, role_key, source_updated_at, synced_at) VALUES (487, 'tzs001', 'tzs001', 'STUDENT', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE account = VALUES(account), display_name = VALUES(display_name), role_key = VALUES(role_key), source_updated_at = CURRENT_TIMESTAMP, synced_at = CURRENT_TIMESTAMP; INSERT IGNORE INTO sys_user_role (user_id, role_id) VALUES (487, 1002);