CREATE TABLE IF NOT EXISTS admin_users (
  id CHAR(16) PRIMARY KEY,
  username VARCHAR(32) NOT NULL,
  display_name VARCHAR(120) NOT NULL,
  role VARCHAR(20) NOT NULL,
  active TINYINT(1) NOT NULL DEFAULT 1,
  password_hash VARCHAR(255) NOT NULL,
  created_at DATETIME(3) NOT NULL,
  UNIQUE KEY uq_admin_users_username (username),
  INDEX ix_admin_users_role (role)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS admin_sessions (
  token CHAR(64) PRIMARY KEY,
  user_id CHAR(16) NOT NULL,
  expires_at DATETIME(3) NOT NULL,
  INDEX ix_admin_sessions_user (user_id),
  INDEX ix_admin_sessions_expires (expires_at),
  CONSTRAINT fk_admin_sessions_user
    FOREIGN KEY (user_id) REFERENCES admin_users(id)
    ON DELETE CASCADE
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
