-- Corre isto no phpMyAdmin (separador "SQL").
-- Cria a gestão de ativos (equipamentos/licenças) por cliente, com listas
-- reutilizáveis de marcas e tipos de equipamento, garantia por anos, e
-- aviso de expiração (calculado a partir da data de aquisição + garantia).

CREATE TABLE IF NOT EXISTS asset_brands (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(100) NOT NULL UNIQUE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS asset_types (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(100) NOT NULL UNIQUE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS client_assets (
  id INT AUTO_INCREMENT PRIMARY KEY,
  cliente_id INT NOT NULL,
  categoria VARCHAR(20) NOT NULL DEFAULT 'outro', -- 'hardware', 'software', 'outro'
  nome VARCHAR(255) NOT NULL,
  marca_id INT NULL DEFAULT NULL,
  tipo_id INT NULL DEFAULT NULL,
  referencia VARCHAR(255) DEFAULT NULL, -- nº de série ou chave de licença
  data_aquisicao BIGINT NULL DEFAULT NULL,
  garantia_anos INT NULL DEFAULT NULL,
  data_validade BIGINT NULL DEFAULT NULL, -- calculada: aquisição + garantia
  notas LONGTEXT DEFAULT NULL,
  criado_em BIGINT NOT NULL,
  FOREIGN KEY (cliente_id) REFERENCES clients(id) ON DELETE CASCADE,
  FOREIGN KEY (marca_id) REFERENCES asset_brands(id) ON DELETE SET NULL,
  FOREIGN KEY (tipo_id) REFERENCES asset_types(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS client_asset_attachments (
  id INT AUTO_INCREMENT PRIMARY KEY,
  asset_id INT NOT NULL,
  original_name VARCHAR(255) NOT NULL,
  stored_name VARCHAR(255) NOT NULL,
  mime_type VARCHAR(150) DEFAULT '',
  size_bytes INT DEFAULT 0,
  uploaded_at BIGINT NOT NULL,
  FOREIGN KEY (asset_id) REFERENCES client_assets(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
