UNPKG

agnostic-sql-migrator

Version:

Database agnostic migrator tool for SQL databases

50 lines 3.01 kB
"use strict"; 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