USE extremadesk;

SET @db := DATABASE();

SET @has_auto := (
    SELECT COUNT(*) FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'chamados' AND COLUMN_NAME = 'auto_atribuido'
);
SET @stmt := IF(@has_auto = 0,
    'ALTER TABLE chamados ADD COLUMN auto_atribuido tinyint(1) NOT NULL DEFAULT 0 AFTER tecnico_id',
    'SELECT 1'
);
PREPARE s FROM @stmt;
EXECUTE s;
DEALLOCATE PREPARE s;

CREATE TABLE IF NOT EXISTS chamados_anexos (
    id int(11) NOT NULL AUTO_INCREMENT,
    chamado_id int(11) NOT NULL,
    mensagem_id int(11) DEFAULT NULL,
    usuario_id int(11) DEFAULT NULL,
    arquivo varchar(255) NOT NULL,
    nome_original varchar(255) NOT NULL,
    mime varchar(120) DEFAULT NULL,
    tamanho int(11) DEFAULT NULL,
    created_at timestamp NOT NULL DEFAULT current_timestamp(),
    PRIMARY KEY (id),
    KEY idx_chamados_anexos_chamado (chamado_id),
    KEY idx_chamados_anexos_mensagem (mensagem_id),
    KEY idx_chamados_anexos_usuario (usuario_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

SET @has_idx_usuarios_tipo_deleted := (
    SELECT COUNT(*) FROM information_schema.STATISTICS
    WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'usuarios' AND INDEX_NAME = 'idx_usuarios_tipo_deleted'
);
SET @stmt := IF(@has_idx_usuarios_tipo_deleted = 0,
    'ALTER TABLE usuarios ADD INDEX idx_usuarios_tipo_deleted (tipo, deleted_at)',
    'SELECT 1'
);
PREPARE s FROM @stmt;
EXECUTE s;
DEALLOCATE PREPARE s;
