Add scripts to run migrations and to connect to the db
This commit is contained in:
44
express/migrate.ts
Normal file
44
express/migrate.ts
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
// migrate.ts
|
||||||
|
// CLI script for running database migrations
|
||||||
|
|
||||||
|
import { migrate, migrationStatus, pool } from "./database";
|
||||||
|
|
||||||
|
async function main(): Promise<void> {
|
||||||
|
const command = process.argv[2] || "run";
|
||||||
|
|
||||||
|
try {
|
||||||
|
switch (command) {
|
||||||
|
case "run":
|
||||||
|
await migrate();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "status":
|
||||||
|
const status = await migrationStatus();
|
||||||
|
console.log("Applied migrations:");
|
||||||
|
for (const name of status.applied) {
|
||||||
|
console.log(` ✓ ${name}`);
|
||||||
|
}
|
||||||
|
if (status.pending.length > 0) {
|
||||||
|
console.log("\nPending migrations:");
|
||||||
|
for (const name of status.pending) {
|
||||||
|
console.log(` • ${name}`);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log("\nNo pending migrations");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
console.error(`Unknown command: ${command}`);
|
||||||
|
console.error("Usage: migrate [run|status]");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
await pool.end();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch((err) => {
|
||||||
|
console.error("Migration failed:", err);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
9
framework/cmd.d/db
Executable file
9
framework/cmd.d/db
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
ROOT="$DIR/../.."
|
||||||
|
|
||||||
|
# FIXME: don't hard code this of course
|
||||||
|
PGPASSWORD=diachron psql -U diachron -h localhost diachron
|
||||||
9
framework/cmd.d/migrate
Executable file
9
framework/cmd.d/migrate
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
ROOT="$DIR/../.."
|
||||||
|
|
||||||
|
cd "$ROOT/express"
|
||||||
|
"$DIR"/tsx migrate.ts "$@"
|
||||||
Reference in New Issue
Block a user