CREATE DATABASE IF NOT EXISTS manutencao CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE manutencao;

-- Usuários
CREATE TABLE IF NOT EXISTS usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(120) NOT NULL,
  usuario VARCHAR(80) NOT NULL UNIQUE,
  senha_hash VARCHAR(255) NOT NULL,
  perfil ENUM('admin','tecnico','solicitante') NOT NULL DEFAULT 'solicitante',
  ativo TINYINT(1) NOT NULL DEFAULT 1,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Equipamentos
CREATE TABLE IF NOT EXISTS equipamentos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(150) NOT NULL,
  codigo VARCHAR(60) NULL,
  ativo TINYINT(1) NOT NULL DEFAULT 1,
  created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Ordens de Serviço
CREATE TABLE IF NOT EXISTS ordens_servico (
  id INT AUTO_INCREMENT PRIMARY KEY,
  equipamento_id INT NOT NULL,
  prioridade ENUM('NORMAL','URGENTE','EMERGENCIAL') NOT NULL DEFAULT 'NORMAL',
  descricao_defeito TEXT NOT NULL,
  status ENUM('ABERTA','EM ANDAMENTO','FINALIZADA','CANCELADA') NOT NULL DEFAULT 'ABERTA',
  tecnico_id INT NULL,
  criado_por INT NULL,
  data_abertura DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  data_inicio DATETIME NULL,
  data_finalizacao DATETIME NULL,
  INDEX (equipamento_id),
  INDEX (status),
  INDEX (prioridade),
  INDEX (tecnico_id),
  CONSTRAINT fk_os_equip FOREIGN KEY (equipamento_id) REFERENCES equipamentos(id),
  CONSTRAINT fk_os_tecnico FOREIGN KEY (tecnico_id) REFERENCES usuarios(id) ON DELETE SET NULL,
  CONSTRAINT fk_os_criado FOREIGN KEY (criado_por) REFERENCES usuarios(id) ON DELETE SET NULL
) ENGINE=InnoDB;

INSERT INTO equipamentos (nome, codigo) VALUES
('Misturador 01','MST-01'),
('Bomba Hidráulica','BOM-02'),
('Esteira Linha A','EST-A'),
('Compressor','COM-01')
ON DUPLICATE KEY UPDATE nome=VALUES(nome);
