CREATE TABLE horarios_atencion (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  odontologo_id BIGINT UNSIGNED NOT NULL,
  dia_semana TINYINT UNSIGNED NOT NULL COMMENT '1=lunes, 7=domingo',
  hora_inicio TIME NOT NULL,
  hora_fin TIME NOT NULL,
  duracion_cita_min SMALLINT UNSIGNED NOT NULL DEFAULT 30,
  activo TINYINT(1) NOT NULL DEFAULT 1,
  creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_horarios_odontologo FOREIGN KEY (odontologo_id) REFERENCES odontologos(id),
  CONSTRAINT chk_horarios_dia CHECK (dia_semana BETWEEN 1 AND 7),
  CONSTRAINT chk_horarios_rango CHECK (hora_fin > hora_inicio),
  KEY idx_horarios_odontologo_dia (odontologo_id, dia_semana, activo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE bloqueos_agenda (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  odontologo_id BIGINT UNSIGNED NOT NULL,
  inicio DATETIME NOT NULL,
  fin DATETIME NOT NULL,
  motivo VARCHAR(255) NOT NULL,
  estado ENUM('activo','cancelado') NOT NULL DEFAULT 'activo',
  creado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_bloqueos_odontologo FOREIGN KEY (odontologo_id) REFERENCES odontologos(id),
  CONSTRAINT chk_bloqueos_rango CHECK (fin > inicio),
  KEY idx_bloqueos_odontologo_inicio_estado (odontologo_id, inicio, estado)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
