-- Esquema del sistema de horarios de salas de computacion

CREATE TABLE IF NOT EXISTS usuarios (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  username TEXT NOT NULL UNIQUE,
  password_hash TEXT NOT NULL,
  nombre TEXT NOT NULL,
  rol TEXT NOT NULL CHECK (rol IN ('SU', 'DOCENTE', 'SECRETARIA')),
  activo INTEGER NOT NULL DEFAULT 1,
  creado_en TEXT NOT NULL DEFAULT (datetime('now'))
);

CREATE TABLE IF NOT EXISTS salas (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  nombre TEXT NOT NULL UNIQUE,
  orden INTEGER NOT NULL
);

CREATE TABLE IF NOT EXISTS bloques (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  numero INTEGER NOT NULL UNIQUE,
  etiqueta TEXT NOT NULL
);

CREATE TABLE IF NOT EXISTS clases (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  sala_id INTEGER NOT NULL REFERENCES salas(id),
  bloque_id INTEGER NOT NULL REFERENCES bloques(id),
  fecha TEXT NOT NULL,
  usuario_id INTEGER NOT NULL REFERENCES usuarios(id),
  curso TEXT NOT NULL,
  materia TEXT,
  notas TEXT,
  creado_en TEXT NOT NULL DEFAULT (datetime('now')),
  actualizado_en TEXT NOT NULL DEFAULT (datetime('now')),
  UNIQUE (sala_id, bloque_id, fecha)
);

CREATE INDEX IF NOT EXISTS idx_clases_fecha ON clases(fecha);
