Skip to content

Commit

Permalink
refactor: make /api/v1/migrations use migrator model
Browse files Browse the repository at this point in the history
  • Loading branch information
braiancalot committed Feb 9, 2025
1 parent b347655 commit 1f80e56
Showing 1 changed file with 8 additions and 41 deletions.
49 changes: 8 additions & 41 deletions pages/api/v1/migrations/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import migrationRunner from "node-pg-migrate";
import { resolve } from "node:path";
import database from "infra/database";
import { createRouter } from "next-connect";
import controller from "infra/controller";
import migrator from "models/migrator";

const router = createRouter();

Expand All @@ -11,49 +9,18 @@ router.post(postHandler);

export default router.handler(controller.errorHandlers);

const defaultMigrationOptions = {
dryRun: true,
dir: resolve("infra", "migrations"),
direction: "up",
verbose: true,
migrationsTable: "pgmigrations",
};

async function getHandler(req, res) {
let dbClient;

try {
dbClient = await database.getNewClient();
const pendingMigrations = await migrator.listPendingMigrations();

const pendingMigrations = await migrationRunner({
...defaultMigrationOptions,
dbClient,
});

return res.status(200).json(pendingMigrations);
} finally {
await dbClient.end();
}
return res.status(200).json(pendingMigrations);
}

async function postHandler(req, res) {
let dbClient;
const migratedMigrations = await migrator.runPendingMigrations();

try {
dbClient = await database.getNewClient();

const migratedMigrations = await migrationRunner({
...defaultMigrationOptions,
dbClient,
dryRun: false,
});

if (migratedMigrations.length > 0) {
return res.status(201).json(migratedMigrations);
}

return res.status(200).json(migratedMigrations);
} finally {
await dbClient.end();
if (migratedMigrations.length > 0) {
return res.status(201).json(migratedMigrations);
}

return res.status(200).json(migratedMigrations);
}

0 comments on commit 1f80e56

Please sign in to comment.