@klapeks/micro-db-utils 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/connections/cloud/s3.js +1 -1
- package/dist/connections/index.d.ts +0 -1
- package/dist/connections/index.js +2 -2
- package/dist/connections/kafka/kafka.js +1 -1
- package/dist/connections/nosql/mongo.js +1 -1
- package/dist/connections/nosql/redis.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/micro.sql.d.ts +11 -0
- package/dist/micro.sql.js +87 -0
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.js +1 -0
- package/dist/migrations/mysql.migrations.d.ts +0 -2
- package/dist/migrations/mysql.migrations.js +6 -201
- package/dist/migrations/super.migrations.d.ts +13 -0
- package/dist/migrations/super.migrations.js +313 -0
- package/dist/selectors/raw-mysql.select.handler.d.ts +2 -2
- package/dist/sql/column.type.parser.d.ts +12 -0
- package/dist/sql/column.type.parser.js +53 -0
- package/dist/sql/commands/abstract.sql.command.d.ts +21 -0
- package/dist/sql/commands/abstract.sql.command.js +30 -0
- package/dist/sql/commands/alter.commands.d.ts +8 -0
- package/dist/sql/commands/alter.commands.js +27 -0
- package/dist/sql/commands/edit-data.commands.d.ts +6 -0
- package/dist/sql/commands/edit-data.commands.js +48 -0
- package/dist/sql/commands/index.d.ts +6 -0
- package/dist/sql/commands/index.js +22 -0
- package/dist/sql/commands/select.commands.d.ts +6 -0
- package/dist/sql/commands/select.commands.js +17 -0
- package/dist/sql/commands/tables.commands.d.ts +10 -0
- package/dist/sql/commands/tables.commands.js +75 -0
- package/dist/sql/commands/time.commands.d.ts +7 -0
- package/dist/sql/commands/time.commands.js +24 -0
- package/dist/sql/connections/abstract.connection.d.ts +22 -0
- package/dist/sql/connections/abstract.connection.js +127 -0
- package/dist/sql/connections/index.d.ts +11 -0
- package/dist/sql/connections/index.js +35 -0
- package/dist/sql/connections/mssql.connection.d.ts +15 -0
- package/dist/sql/connections/mssql.connection.js +171 -0
- package/dist/{connections → sql/connections}/mysql.connection.d.ts +5 -4
- package/dist/{connections → sql/connections}/mysql.connection.js +46 -27
- package/dist/sql/index.d.ts +2 -0
- package/dist/sql/index.js +18 -0
- package/dist/utils/columns.types.d.ts +11 -11
- package/package.json +4 -2
- /package/dist/{connections → utils}/quiet.require.d.ts +0 -0
- /package/dist/{connections → utils}/quiet.require.js +0 -0
|
@@ -38,7 +38,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.S3Connection = void 0;
|
|
40
40
|
var utils_1 = require("@klapeks/utils");
|
|
41
|
-
var quiet_require_1 = require("
|
|
41
|
+
var quiet_require_1 = require("../../utils/quiet.require");
|
|
42
42
|
var s3ClientModule = (0, quiet_require_1.quietRequire)('@aws-sdk/client-s3');
|
|
43
43
|
var s3PresignerModule = (0, quiet_require_1.quietRequire)('@aws-sdk/s3-request-presigner');
|
|
44
44
|
var logger = new utils_1.Logger("S3/R2");
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// RDBMS
|
|
3
|
+
// export * from './mysql.connection';
|
|
2
4
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
5
|
if (k2 === undefined) k2 = k;
|
|
4
6
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -14,8 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
16
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
17
|
};
|
|
16
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
// RDBMS
|
|
18
|
-
__exportStar(require("./mysql.connection"), exports);
|
|
19
19
|
// NoSQL
|
|
20
20
|
__exportStar(require("./nosql/redis"), exports);
|
|
21
21
|
__exportStar(require("./nosql/mongo"), exports);
|
|
@@ -40,7 +40,7 @@ exports.KafkaConnection = exports.instances = void 0;
|
|
|
40
40
|
var utils_1 = require("@klapeks/utils");
|
|
41
41
|
var kafka_producer_1 = require("./kafka.producer");
|
|
42
42
|
var kafka_consumer_1 = require("./kafka.consumer");
|
|
43
|
-
var quiet_require_1 = require("
|
|
43
|
+
var quiet_require_1 = require("../../utils/quiet.require");
|
|
44
44
|
var kafkajsModule = (0, quiet_require_1.quietRequire)('kafkajs');
|
|
45
45
|
var logger = new utils_1.Logger("Kafka");
|
|
46
46
|
exports.instances = {
|
|
@@ -38,7 +38,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.MongoGeoPoint = exports.MongoDBConnection = exports.cursorOffsetAggregation = exports.flattenForUpdate = void 0;
|
|
40
40
|
var utils_1 = require("@klapeks/utils");
|
|
41
|
-
var quiet_require_1 = require("
|
|
41
|
+
var quiet_require_1 = require("../../utils/quiet.require");
|
|
42
42
|
var mongooseModule = (0, quiet_require_1.quietRequire)('mongoose');
|
|
43
43
|
function flattenForUpdate(object, prefix) {
|
|
44
44
|
if (prefix === void 0) { prefix = ''; }
|
|
@@ -38,7 +38,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.RedisConnection = void 0;
|
|
40
40
|
var utils_1 = require("@klapeks/utils");
|
|
41
|
-
var quiet_require_1 = require("
|
|
41
|
+
var quiet_require_1 = require("../../utils/quiet.require");
|
|
42
42
|
var redisModule = (0, quiet_require_1.quietRequire)('redis');
|
|
43
43
|
var logger = new utils_1.Logger("Redis");
|
|
44
44
|
var RedisConnection = /** @class */ (function () {
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,7 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./utils"), exports);
|
|
18
|
+
__exportStar(require("./micro.sql"), exports);
|
|
19
|
+
__exportStar(require("./sql"), exports);
|
|
17
20
|
__exportStar(require("./connections"), exports);
|
|
18
21
|
__exportStar(require("./migrations"), exports);
|
|
19
22
|
__exportStar(require("./selectors"), exports);
|
|
20
|
-
__exportStar(require("./utils"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DatabaseOptions } from "@klapeks/utils";
|
|
2
|
+
import { ISQLCommandAdapter, SQLAlterCommand, SQLCommandData, SQLEditDataCommands, SQLSelectCommands, SQLTablesCommands, SQLTimeCommandsExpressions } from "./sql";
|
|
3
|
+
import { DataSource, DataSourceOptions } from "typeorm";
|
|
4
|
+
export declare namespace MicroSQL {
|
|
5
|
+
function dataSourceQuery<T = any>(dataSource: DataSource, cb: ISQLCommandAdapter | SQLCommandData | string | ((dbtype: DatabaseOptions['type'], database: string) => ISQLCommandAdapter | SQLCommandData | string | Promise<ISQLCommandAdapter | SQLCommandData | string>)): Promise<T[]>;
|
|
6
|
+
function alter(table: string): SQLAlterCommand;
|
|
7
|
+
function select(table: string): SQLSelectCommands;
|
|
8
|
+
function editData(table: string): SQLEditDataCommands;
|
|
9
|
+
function tables(): typeof SQLTablesCommands;
|
|
10
|
+
function timeExpressions(dbtype: DatabaseOptions['type'] | DataSourceOptions['type']): SQLTimeCommandsExpressions;
|
|
11
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.MicroSQL = void 0;
|
|
40
|
+
var sql_1 = require("./sql");
|
|
41
|
+
var MicroSQL;
|
|
42
|
+
(function (MicroSQL) {
|
|
43
|
+
function dataSourceQuery(dataSource, cb) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
45
|
+
var dbType, query, _a;
|
|
46
|
+
return __generator(this, function (_b) {
|
|
47
|
+
switch (_b.label) {
|
|
48
|
+
case 0:
|
|
49
|
+
dbType = dataSource.options.type;
|
|
50
|
+
if (!(typeof cb == 'function')) return [3 /*break*/, 2];
|
|
51
|
+
return [4 /*yield*/, cb(dbType, dataSource.options.database)];
|
|
52
|
+
case 1:
|
|
53
|
+
_a = _b.sent();
|
|
54
|
+
return [3 /*break*/, 3];
|
|
55
|
+
case 2:
|
|
56
|
+
_a = cb;
|
|
57
|
+
_b.label = 3;
|
|
58
|
+
case 3:
|
|
59
|
+
query = (_a);
|
|
60
|
+
query = (0, sql_1.toRawSQL)(dbType, query);
|
|
61
|
+
return [2 /*return*/, dataSource.query(query.query, query.params)];
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
MicroSQL.dataSourceQuery = dataSourceQuery;
|
|
67
|
+
function alter(table) {
|
|
68
|
+
return new sql_1.SQLAlterCommand(table);
|
|
69
|
+
}
|
|
70
|
+
MicroSQL.alter = alter;
|
|
71
|
+
function select(table) {
|
|
72
|
+
return new sql_1.SQLSelectCommands(table);
|
|
73
|
+
}
|
|
74
|
+
MicroSQL.select = select;
|
|
75
|
+
function editData(table) {
|
|
76
|
+
return new sql_1.SQLEditDataCommands(table);
|
|
77
|
+
}
|
|
78
|
+
MicroSQL.editData = editData;
|
|
79
|
+
function tables() {
|
|
80
|
+
return sql_1.SQLTablesCommands;
|
|
81
|
+
}
|
|
82
|
+
MicroSQL.tables = tables;
|
|
83
|
+
function timeExpressions(dbtype) {
|
|
84
|
+
return new sql_1.SQLTimeCommandsExpressions(dbtype);
|
|
85
|
+
}
|
|
86
|
+
MicroSQL.timeExpressions = timeExpressions;
|
|
87
|
+
})(MicroSQL = exports.MicroSQL || (exports.MicroSQL = {}));
|
package/dist/migrations/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { DataSource, EntitySchema } from "typeorm";
|
|
2
2
|
export declare class MySQLMigrations {
|
|
3
|
-
static get migrationTableName(): string;
|
|
4
3
|
static addMigration(entity: EntitySchema, date: Date, sql: string | string[]): void;
|
|
5
|
-
private static checkIsCreatesTable;
|
|
6
4
|
static runMigrations(dataSource: DataSource): Promise<void>;
|
|
7
5
|
}
|
|
@@ -35,216 +35,21 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
39
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
40
|
-
if (ar || !(i in from)) {
|
|
41
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
42
|
-
ar[i] = from[i];
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
46
|
-
};
|
|
47
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
39
|
exports.MySQLMigrations = void 0;
|
|
49
|
-
var
|
|
50
|
-
var mysql_connection_1 = require("../connections/mysql.connection");
|
|
51
|
-
var utils_1 = require("@klapeks/utils");
|
|
52
|
-
var iso_date_time_1 = require("../utils/iso.date.time");
|
|
53
|
-
// for mysql
|
|
54
|
-
// export type
|
|
55
|
-
var _migrations = [];
|
|
56
|
-
var logger = new utils_1.Logger("MySQL Migrations");
|
|
40
|
+
var super_migrations_1 = require("./super.migrations");
|
|
57
41
|
var MySQLMigrations = /** @class */ (function () {
|
|
58
42
|
function MySQLMigrations() {
|
|
59
43
|
}
|
|
60
|
-
Object.defineProperty(MySQLMigrations, "migrationTableName", {
|
|
61
|
-
get: function () {
|
|
62
|
-
return process.env.DB_UTILS_MIGRATION_TABLE_NAME || "_kldb_mini_migrations";
|
|
63
|
-
},
|
|
64
|
-
enumerable: false,
|
|
65
|
-
configurable: true
|
|
66
|
-
});
|
|
67
44
|
MySQLMigrations.addMigration = function (entity, date, sql) {
|
|
68
|
-
|
|
69
|
-
table: entity.options.tableName || entity.options.name,
|
|
70
|
-
date: date,
|
|
71
|
-
sql: sql
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
|
-
MySQLMigrations.checkIsCreatesTable = function (migrations) {
|
|
75
|
-
if (!migrations)
|
|
76
|
-
return false;
|
|
77
|
-
if (Array.isArray(migrations))
|
|
78
|
-
return this.checkIsCreatesTable(migrations[0]);
|
|
79
|
-
return migrations.trim().toLowerCase().startsWith('create table');
|
|
45
|
+
super_migrations_1.SuperMigrations.addRawMigration('mysql', entity, date, sql);
|
|
80
46
|
};
|
|
81
47
|
MySQLMigrations.runMigrations = function (dataSource) {
|
|
82
|
-
var _a;
|
|
83
48
|
return __awaiter(this, void 0, void 0, function () {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
case 0:
|
|
89
|
-
_b.trys.push([0, 11, , 12]);
|
|
90
|
-
options_1 = (0, utils_1.dataSourceOptions)();
|
|
91
|
-
if (options_1.type != 'mysql')
|
|
92
|
-
return [2 /*return*/];
|
|
93
|
-
mysqlInstance_1 = new mysql_connection_1.RawMySQLConnection(options_1);
|
|
94
|
-
return [4 /*yield*/, mysqlInstance_1.takePool()];
|
|
95
|
-
case 1:
|
|
96
|
-
_b.sent();
|
|
97
|
-
getTable_1 = function (table) { return __awaiter(_this, void 0, void 0, function () {
|
|
98
|
-
return __generator(this, function (_a) {
|
|
99
|
-
return [2 /*return*/, mysqlInstance_1.runSQL_One("\n SELECT * FROM information_schema.tables\n WHERE table_schema = '".concat(options_1.database, "' \n AND table_name = '").concat(table, "'\n LIMIT 1;\n "))];
|
|
100
|
-
});
|
|
101
|
-
}); };
|
|
102
|
-
return [4 /*yield*/, getTable_1(this.migrationTableName)];
|
|
103
|
-
case 2:
|
|
104
|
-
hasMigrationTable = _b.sent();
|
|
105
|
-
if (!!hasMigrationTable) return [3 /*break*/, 4];
|
|
106
|
-
logger.log("Creating migration table..");
|
|
107
|
-
return [4 /*yield*/, mysqlInstance_1.runSQL("\n CREATE TABLE ".concat(this.migrationTableName, " (\n `table` VARCHAR(255) NOT NULL PRIMARY KEY,\n `lastMigrationTime` VARCHAR(128) NOT NULL\n )\n "))];
|
|
108
|
-
case 3:
|
|
109
|
-
_b.sent();
|
|
110
|
-
_b.label = 4;
|
|
111
|
-
case 4: return [4 /*yield*/, mysqlInstance_1.runSQL("SELECT * FROM ".concat(this.migrationTableName))];
|
|
112
|
-
case 5:
|
|
113
|
-
migrationRecords_1 = _b.sent();
|
|
114
|
-
runnedMigrationsAmount_1 = 0;
|
|
115
|
-
runTableMigration = function (table) { return __awaiter(_this, void 0, void 0, function () {
|
|
116
|
-
var todoMigrations, isTableExistsInfo, lastMigrationDate, lastRealMigration, _local_runSQL, _i, todoMigrations_1, migration, migrationName, sqls, _a, sqls_1, sql, sql;
|
|
117
|
-
var _this = this;
|
|
118
|
-
var _b, _c, _d;
|
|
119
|
-
return __generator(this, function (_e) {
|
|
120
|
-
switch (_e.label) {
|
|
121
|
-
case 0:
|
|
122
|
-
todoMigrations = _migrations.sort(function (c1, c2) { return c1.date.getTime() - c2.date.getTime(); });
|
|
123
|
-
todoMigrations = __spreadArray([], todoMigrations, true).filter(function (m) { return m.table == table; });
|
|
124
|
-
return [4 /*yield*/, getTable_1(table)];
|
|
125
|
-
case 1:
|
|
126
|
-
isTableExistsInfo = _e.sent();
|
|
127
|
-
if (!(!isTableExistsInfo && !this.checkIsCreatesTable((_b = todoMigrations === null || todoMigrations === void 0 ? void 0 : todoMigrations[0]) === null || _b === void 0 ? void 0 : _b.sql))) return [3 /*break*/, 4];
|
|
128
|
-
logger.log("Table ".concat(table, " not found. Migrations ").concat(todoMigrations === null || todoMigrations === void 0 ? void 0 : todoMigrations.length, " will be skipped"));
|
|
129
|
-
lastMigrationDate = todoMigrations.length ? (_c = todoMigrations === null || todoMigrations === void 0 ? void 0 : todoMigrations[todoMigrations.length - 1]) === null || _c === void 0 ? void 0 : _c.date : undefined;
|
|
130
|
-
if (!((todoMigrations === null || todoMigrations === void 0 ? void 0 : todoMigrations.length) && lastMigrationDate)) return [3 /*break*/, 3];
|
|
131
|
-
return [4 /*yield*/, mysqlInstance_1.runSQL("\n INSERT INTO `".concat(this.migrationTableName, "` (`table`, `lastMigrationTime`)\n VALUES ('").concat(table, "', '").concat((0, iso_date_time_1.toISODate)(lastMigrationDate), "')\n ON DUPLICATE KEY UPDATE `lastMigrationTime` = '").concat((0, iso_date_time_1.toISODate)(lastMigrationDate), "'\n "))];
|
|
132
|
-
case 2:
|
|
133
|
-
_e.sent();
|
|
134
|
-
_e.label = 3;
|
|
135
|
-
case 3: return [2 /*return*/];
|
|
136
|
-
case 4:
|
|
137
|
-
lastRealMigration = (_d = migrationRecords_1 === null || migrationRecords_1 === void 0 ? void 0 : migrationRecords_1.find(function (r) { return r.table == table; })) === null || _d === void 0 ? void 0 : _d.lastMigrationTime;
|
|
138
|
-
_local_runSQL = function (sql) { return __awaiter(_this, void 0, void 0, function () {
|
|
139
|
-
return __generator(this, function (_a) {
|
|
140
|
-
switch (_a.label) {
|
|
141
|
-
case 0:
|
|
142
|
-
if (!sql.toLowerCase().startsWith("alter table")) return [3 /*break*/, 2];
|
|
143
|
-
// log error if error
|
|
144
|
-
return [4 /*yield*/, mysqlInstance_1.runSQL(sql).catch(function (err) {
|
|
145
|
-
logger.error("Error while alter table:", err);
|
|
146
|
-
})];
|
|
147
|
-
case 1:
|
|
148
|
-
// log error if error
|
|
149
|
-
_a.sent();
|
|
150
|
-
return [3 /*break*/, 4];
|
|
151
|
-
case 2:
|
|
152
|
-
// throw error if error
|
|
153
|
-
return [4 /*yield*/, mysqlInstance_1.runSQL(sql)];
|
|
154
|
-
case 3:
|
|
155
|
-
// throw error if error
|
|
156
|
-
_a.sent();
|
|
157
|
-
_a.label = 4;
|
|
158
|
-
case 4: return [2 /*return*/];
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
}); };
|
|
162
|
-
_i = 0, todoMigrations_1 = todoMigrations;
|
|
163
|
-
_e.label = 5;
|
|
164
|
-
case 5:
|
|
165
|
-
if (!(_i < todoMigrations_1.length)) return [3 /*break*/, 16];
|
|
166
|
-
migration = todoMigrations_1[_i];
|
|
167
|
-
if (migration.table != table)
|
|
168
|
-
return [3 /*break*/, 15];
|
|
169
|
-
if (lastRealMigration && new Date(lastRealMigration).getTime() >= migration.date.getTime()) {
|
|
170
|
-
return [3 /*break*/, 15];
|
|
171
|
-
}
|
|
172
|
-
runnedMigrationsAmount_1 += 1;
|
|
173
|
-
migrationName = '"' + table + ' ' + (0, iso_date_time_1.toISODate)(migration.date) + '"';
|
|
174
|
-
if (!Array.isArray(migration.sql)) return [3 /*break*/, 10];
|
|
175
|
-
sqls = migration.sql.filter(Boolean).map(function (sql) {
|
|
176
|
-
return utils_1.utils.replaceAll(sql.trim(), "%{table_name}", table);
|
|
177
|
-
});
|
|
178
|
-
logger.log(runnedMigrationsAmount_1, "| Migrations will be runned:", migrationName, '|\n' + utils_1.terminalColors.cyan, sqls);
|
|
179
|
-
_a = 0, sqls_1 = sqls;
|
|
180
|
-
_e.label = 6;
|
|
181
|
-
case 6:
|
|
182
|
-
if (!(_a < sqls_1.length)) return [3 /*break*/, 9];
|
|
183
|
-
sql = sqls_1[_a];
|
|
184
|
-
return [4 /*yield*/, _local_runSQL(sql)];
|
|
185
|
-
case 7:
|
|
186
|
-
_e.sent();
|
|
187
|
-
_e.label = 8;
|
|
188
|
-
case 8:
|
|
189
|
-
_a++;
|
|
190
|
-
return [3 /*break*/, 6];
|
|
191
|
-
case 9: return [3 /*break*/, 12];
|
|
192
|
-
case 10:
|
|
193
|
-
sql = utils_1.utils.replaceAll(migration.sql, "%{table_name}", table);
|
|
194
|
-
logger.log(runnedMigrationsAmount_1, "| Migration will be runned:", migrationName, '|\n' + utils_1.terminalColors.cyan, sql.trim());
|
|
195
|
-
return [4 /*yield*/, _local_runSQL(sql)];
|
|
196
|
-
case 11:
|
|
197
|
-
_e.sent();
|
|
198
|
-
_e.label = 12;
|
|
199
|
-
case 12: return [4 /*yield*/, mysqlInstance_1.runSQL("\n INSERT INTO `".concat(this.migrationTableName, "` (`table`, `lastMigrationTime`)\n VALUES ('").concat(table, "', '").concat((0, iso_date_time_1.toISODate)(migration.date), "')\n ON DUPLICATE KEY UPDATE `lastMigrationTime` = '").concat((0, iso_date_time_1.toISODate)(migration.date), "'\n "))];
|
|
200
|
-
case 13:
|
|
201
|
-
_e.sent();
|
|
202
|
-
logger.log(runnedMigrationsAmount_1, "| Migration", migrationName, "successfully done");
|
|
203
|
-
return [4 /*yield*/, utils_1.utils.sleep(100)];
|
|
204
|
-
case 14:
|
|
205
|
-
_e.sent();
|
|
206
|
-
_e.label = 15;
|
|
207
|
-
case 15:
|
|
208
|
-
_i++;
|
|
209
|
-
return [3 /*break*/, 5];
|
|
210
|
-
case 16: return [2 /*return*/];
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
}); };
|
|
214
|
-
tablesToMigrate = Object.values(dataSource.options.entities || []).map(function (m) {
|
|
215
|
-
if (m instanceof typeorm_1.EntitySchema)
|
|
216
|
-
return m.options.name;
|
|
217
|
-
return undefined;
|
|
218
|
-
}).filter(Boolean);
|
|
219
|
-
_i = 0, tablesToMigrate_1 = tablesToMigrate;
|
|
220
|
-
_b.label = 6;
|
|
221
|
-
case 6:
|
|
222
|
-
if (!(_i < tablesToMigrate_1.length)) return [3 /*break*/, 9];
|
|
223
|
-
table = tablesToMigrate_1[_i];
|
|
224
|
-
return [4 /*yield*/, runTableMigration(table)];
|
|
225
|
-
case 7:
|
|
226
|
-
_b.sent();
|
|
227
|
-
_b.label = 8;
|
|
228
|
-
case 8:
|
|
229
|
-
_i++;
|
|
230
|
-
return [3 /*break*/, 6];
|
|
231
|
-
case 9:
|
|
232
|
-
if (runnedMigrationsAmount_1) {
|
|
233
|
-
logger.log("All migrations completed:", runnedMigrationsAmount_1);
|
|
234
|
-
}
|
|
235
|
-
return [4 /*yield*/, mysqlInstance_1.destroyConnection().catch(function (err) {
|
|
236
|
-
logger.error("Error while closing pool:", err);
|
|
237
|
-
})];
|
|
238
|
-
case 10:
|
|
239
|
-
_b.sent();
|
|
240
|
-
return [3 /*break*/, 12];
|
|
241
|
-
case 11:
|
|
242
|
-
err_1 = _b.sent();
|
|
243
|
-
if ((_a = err_1 === null || err_1 === void 0 ? void 0 : err_1.sqlMessage) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes("unknown database"))
|
|
244
|
-
return [2 /*return*/];
|
|
245
|
-
// logger.error("err of musql:", err.sqlMessage);
|
|
246
|
-
throw err_1;
|
|
247
|
-
case 12: return [2 /*return*/];
|
|
49
|
+
return __generator(this, function (_a) {
|
|
50
|
+
switch (_a.label) {
|
|
51
|
+
case 0: return [4 /*yield*/, super_migrations_1.SuperMigrations.runMigrations(dataSource)];
|
|
52
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
248
53
|
}
|
|
249
54
|
});
|
|
250
55
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DataSource, EntitySchema } from "typeorm";
|
|
2
|
+
import { ISQLCommandAdapter, SQLCommandData } from "../sql";
|
|
3
|
+
import { DatabaseOptions } from "@klapeks/utils";
|
|
4
|
+
type SuperMigrationsSQLParam = string | ISQLCommandAdapter | SQLCommandData | (string | ISQLCommandAdapter | SQLCommandData)[];
|
|
5
|
+
export declare class SuperMigrations {
|
|
6
|
+
private static _migrations;
|
|
7
|
+
static get migrationTableName(): string;
|
|
8
|
+
static addRawMigration(dbtype: DatabaseOptions['type'] | 'all', entity: EntitySchema, date: Date | string, sql: SuperMigrationsSQLParam): void;
|
|
9
|
+
static addMigration(entity: EntitySchema, date: Date | string, sql: ISQLCommandAdapter | ISQLCommandAdapter[]): void;
|
|
10
|
+
private static runMigrationForTable;
|
|
11
|
+
static runMigrations(dataSource: DataSource): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export {};
|