@coko/server
Version:
Reusable server for use by Coko's projects
72 lines • 2.5 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.META_TABLE = exports.MIGRATIONS_TABLE = exports.migrationsMeta = exports.migrations = void 0;
const db_1 = __importDefault(require("./db"));
const MIGRATIONS_TABLE = 'migrations';
exports.MIGRATIONS_TABLE = MIGRATIONS_TABLE;
const META_TABLE = 'coko_server_meta';
exports.META_TABLE = META_TABLE;
const migrations = {
createTable: async () => {
await db_1.default.raw(`
CREATE TABLE IF NOT EXISTS ${MIGRATIONS_TABLE} (
id TEXT PRIMARY KEY,
run_at TIMESTAMPTZ DEFAULT current_timestamp
)
`);
},
getLastMigration: async () => {
const row = await (0, db_1.default)(MIGRATIONS_TABLE)
.select('id')
.orderBy('runAt', 'desc')
.first();
return row.id;
},
getRows: async () => {
return await (0, db_1.default)(MIGRATIONS_TABLE).orderBy('runAt', 'asc');
},
logMigration: async (migrationName) => {
await db_1.default.raw(`INSERT INTO ${MIGRATIONS_TABLE} (id) VALUES (?)`, [
migrationName,
]);
},
unlogMigration: async (migrationName) => {
await (0, db_1.default)(MIGRATIONS_TABLE).where({ id: migrationName }).delete();
},
};
exports.migrations = migrations;
const migrationsMeta = {
clearCheckpoint: async () => {
await (0, db_1.default)(META_TABLE).update({
lastSuccessfulMigrateCheckpoint: null,
});
},
exists: async () => {
return await db_1.default.schema.hasTable(META_TABLE);
},
getCheckpoint: async () => {
const row = await (0, db_1.default)(META_TABLE)
.select('lastSuccessfulMigrateCheckpoint')
.first();
return row.lastSuccessfulMigrateCheckpoint;
},
getData: async () => {
const rows = await (0, db_1.default)(META_TABLE);
return rows[0]; // this table always has one row only
},
setCheckpoint: async (value) => {
await (0, db_1.default)(META_TABLE).update({
lastSuccessfulMigrateCheckpoint: value,
});
},
setPgBossSchema: async (value) => {
await (0, db_1.default)(META_TABLE).update({
pg_boss_schema: value,
});
},
};
exports.migrationsMeta = migrationsMeta;
//# sourceMappingURL=migrateDbHelpers.js.map