''), 'admin' ), s.value, 'admin', 1, '{$now}' FROM settings s WHERE s.key_name = 'admin_password_hash' AND s.value IS NOT NULL AND s.value <> ''"; return [ 'sqlite' => [ 'CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, password_hash TEXT NOT NULL, role TEXT NOT NULL DEFAULT "user", is_active INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL, last_login_at TEXT NULL )', 'CREATE TABLE IF NOT EXISTS user_groups ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL UNIQUE, created_at TEXT NOT NULL )', 'CREATE TABLE IF NOT EXISTS group_members ( group_id INTEGER NOT NULL, user_id INTEGER NOT NULL, role TEXT NOT NULL DEFAULT "editor", created_at TEXT NOT NULL, PRIMARY KEY (group_id, user_id) )', 'CREATE INDEX IF NOT EXISTS idx_group_members_user ON group_members (user_id)', 'ALTER TABLE domains ADD COLUMN group_id INTEGER NOT NULL DEFAULT 0', 'CREATE INDEX IF NOT EXISTS idx_domains_group ON domains (group_id)', "INSERT INTO user_groups (id, name, created_at) VALUES (1, 'Standard', '{$now}')", 'UPDATE domains SET group_id = 1', $adoptAdmin, "INSERT INTO group_members (group_id, user_id, role, created_at) SELECT 1, id, 'editor', '{$now}' FROM users", "DELETE FROM settings WHERE key_name IN ('admin_user', 'admin_password_hash')", ], 'mysql' => [ 'CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(190) NOT NULL, password_hash VARCHAR(255) NOT NULL, role VARCHAR(20) NOT NULL DEFAULT "user", is_active TINYINT(1) NOT NULL DEFAULT 1, created_at DATETIME NOT NULL, last_login_at DATETIME NULL, UNIQUE KEY uniq_users_username (username) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4', 'CREATE TABLE IF NOT EXISTS user_groups ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(190) NOT NULL, created_at DATETIME NOT NULL, UNIQUE KEY uniq_user_groups_name (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4', 'CREATE TABLE IF NOT EXISTS group_members ( group_id INT NOT NULL, user_id INT NOT NULL, role VARCHAR(20) NOT NULL DEFAULT "editor", created_at DATETIME NOT NULL, PRIMARY KEY (group_id, user_id), KEY idx_group_members_user (user_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4', 'ALTER TABLE domains ADD COLUMN group_id INT NOT NULL DEFAULT 0', 'ALTER TABLE domains ADD INDEX idx_domains_group (group_id)', "INSERT INTO user_groups (id, name, created_at) VALUES (1, 'Standard', '{$now}')", 'UPDATE domains SET group_id = 1', $adoptAdmin, "INSERT INTO group_members (group_id, user_id, role, created_at) SELECT 1, id, 'editor', '{$now}' FROM (SELECT id FROM users) AS existing_users", "DELETE FROM settings WHERE key_name IN ('admin_user', 'admin_password_hash')", ], ];