29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
import { identityShimEnabled } from "../src/config/env";
|
|
import { migrate, pendingMigrations } from "../src/infra/db/migrate";
|
|
import { bootstrapScript, describeTarget, runWithDb } from "./_bootstrap";
|
|
|
|
/**
|
|
* Aplica as migrations pendentes. `--dry-run` apenas lista: usado no pipeline
|
|
* antes do passo manual de migração, para que ninguém descubra o que vai rodar
|
|
* só depois de ter rodado.
|
|
*/
|
|
const dryRun = process.argv.includes("--dry-run");
|
|
|
|
bootstrapScript("migrate");
|
|
|
|
runWithDb("migrate", "admin", async (db) => {
|
|
const pending = await pendingMigrations(db);
|
|
console.log(`alvo: ${describeTarget()}`);
|
|
console.log(`shim de identidade: ${identityShimEnabled() ? "SERÁ aplicado" : "NÃO será aplicado"}`);
|
|
if (pending.length === 0) {
|
|
console.log("migrations: nada pendente");
|
|
return;
|
|
}
|
|
if (dryRun) {
|
|
console.log(`migrations pendentes (dry-run, nada aplicado): ${pending.join(", ")}`);
|
|
return;
|
|
}
|
|
const ran = await migrate(db);
|
|
console.log(ran.length ? `migrations aplicadas: ${ran.join(", ")}` : "migrations: nada pendente");
|
|
});
|