-- A coluna entra nullable para permitir o backfill controlado.
ALTER TABLE `vacancies` ADD COLUMN `code` INT NULL;

-- Backfill: numera as vagas existentes por ordem de criacao (a mais antiga vira
-- 1). O `id` entra como desempate para o resultado ser deterministico. Vagas
-- com soft delete tambem recebem numero, para que nenhum numero seja reusado.
UPDATE `vacancies` `v`
JOIN (
    SELECT `id`, ROW_NUMBER() OVER (ORDER BY `created_at` ASC, `id` ASC) AS `rn`
    FROM `vacancies`
) `t` ON `t`.`id` = `v`.`id`
SET `v`.`code` = `t`.`rn`;

ALTER TABLE `vacancies` MODIFY `code` INT NOT NULL;

-- CreateIndex
-- O indice unico e pre-requisito do AUTO_INCREMENT no MySQL/MariaDB.
CREATE UNIQUE INDEX `vacancies_code_key` ON `vacancies`(`code`);

-- A partir daqui o proprio banco continua a sequencia (proximo = max + 1).
ALTER TABLE `vacancies` MODIFY `code` INT NOT NULL AUTO_INCREMENT;
