agnostic-sql-migrator
Version:
Database agnostic migrator tool for SQL databases
50 lines • 3.01 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Version = void 0;
exports.Version = {
exists: (client, adapter, adapterType) => __awaiter(void 0, void 0, void 0, function* () {
const tableName = `${adapterType}_migration_table`;
if (adapterType === "postgres") {
const postgresQuery = `SELECT EXISTS(SELECT * FROM information_schema.tables WHERE table_name = '${tableName}') AS value;`;
const exists = yield adapter.query(client, postgresQuery);
return exists[0].value;
}
else if (adapterType === "mysql") {
const mysqlQuery = `SELECT EXISTS(SELECT * FROM information_schema.tables WHERE table_name='${tableName}') AS value;`;
const exists = yield adapter.query(client, mysqlQuery);
return exists[0].value === 0 ? false : true;
}
else if (adapterType === "sqlserver") {
const sqlServerQuery = `SELECT CASE WHEN EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '${tableName}') THEN 1 ELSE 0 END AS value`;
const exists = yield adapter.query(client, sqlServerQuery);
return exists[0].value === 0 ? false : true;
}
}),
create: (client, adapter, adapterType) => __awaiter(void 0, void 0, void 0, function* () {
const tableName = `${adapterType}_migration_table`;
console.log("New DB - Creating version information");
yield adapter.query(client, `CREATE TABLE ${tableName} (value INT);`);
yield adapter.query(client, `INSERT INTO ${tableName} (value) VALUES(1);`);
}),
update: (client, adapter, version, adapterType) => __awaiter(void 0, void 0, void 0, function* () {
const tableName = `${adapterType}_migration_table`;
yield adapter.query(client, `UPDATE ${tableName} SET value=${version}`);
}),
get: (client, adapter, adapterType) => __awaiter(void 0, void 0, void 0, function* () {
const tableName = `${adapterType}_migration_table`;
const version = yield adapter.query(client, `SELECT value FROM ${tableName}`);
const currentVersion = Number.parseInt(version[0].value);
console.log("Current DB Version is: ", currentVersion);
return currentVersion;
})
};
//# sourceMappingURL=version.js.map
;