clickhouse-migrations 0.1.7 → 0.1.9
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/lib/cli.js +2 -2
- package/lib/migrate.js +31 -17
- package/package.json +12 -10
package/lib/cli.js
CHANGED
package/lib/migrate.js
CHANGED
|
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
14
14
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
15
|
function step(op) {
|
|
16
16
|
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
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
19
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
20
|
switch (op[0]) {
|
|
@@ -35,12 +35,15 @@ 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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
38
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
42
|
exports.migrate = void 0;
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
var
|
|
43
|
-
var
|
|
43
|
+
var client_1 = require("@clickhouse/client");
|
|
44
|
+
var commander_1 = require("commander");
|
|
45
|
+
var fs_1 = __importDefault(require("fs"));
|
|
46
|
+
var crypto_1 = __importDefault(require("crypto"));
|
|
44
47
|
// Extract SQL queries from migrations.
|
|
45
48
|
var sql_queries = function (content) {
|
|
46
49
|
var queries = content
|
|
@@ -71,19 +74,23 @@ var connect = function (host, username, password, db_name) {
|
|
|
71
74
|
if (db_name) {
|
|
72
75
|
db_params.database = db_name;
|
|
73
76
|
}
|
|
74
|
-
return
|
|
77
|
+
return (0, client_1.createClient)(db_params);
|
|
75
78
|
};
|
|
76
|
-
var create_db = function (
|
|
77
|
-
var q, e_1;
|
|
79
|
+
var create_db = function (host, username, password, db_name) { return __awaiter(void 0, void 0, void 0, function () {
|
|
80
|
+
var client, q, e_1;
|
|
78
81
|
return __generator(this, function (_a) {
|
|
79
82
|
switch (_a.label) {
|
|
80
83
|
case 0:
|
|
84
|
+
client = connect(host, username, password);
|
|
81
85
|
q = "CREATE DATABASE IF NOT EXISTS ".concat(db_name, " ENGINE = Atomic");
|
|
82
86
|
_a.label = 1;
|
|
83
87
|
case 1:
|
|
84
88
|
_a.trys.push([1, 3, , 4]);
|
|
85
89
|
return [4 /*yield*/, client.exec({
|
|
86
90
|
query: q,
|
|
91
|
+
clickhouse_settings: {
|
|
92
|
+
wait_end_of_query: 1,
|
|
93
|
+
},
|
|
87
94
|
})];
|
|
88
95
|
case 2:
|
|
89
96
|
_a.sent();
|
|
@@ -93,7 +100,10 @@ var create_db = function (client, db_name) { return __awaiter(void 0, void 0, vo
|
|
|
93
100
|
log('error', "can't create the database ".concat(db_name, "."), e_1.message);
|
|
94
101
|
process.exit(1);
|
|
95
102
|
return [3 /*break*/, 4];
|
|
96
|
-
case 4: return [
|
|
103
|
+
case 4: return [4 /*yield*/, client.close()];
|
|
104
|
+
case 5:
|
|
105
|
+
_a.sent();
|
|
106
|
+
return [2 /*return*/];
|
|
97
107
|
}
|
|
98
108
|
});
|
|
99
109
|
}); };
|
|
@@ -108,6 +118,9 @@ var init_migration_table = function (client) { return __awaiter(void 0, void 0,
|
|
|
108
118
|
_a.trys.push([1, 3, , 4]);
|
|
109
119
|
return [4 /*yield*/, client.exec({
|
|
110
120
|
query: q,
|
|
121
|
+
clickhouse_settings: {
|
|
122
|
+
wait_end_of_query: 1,
|
|
123
|
+
},
|
|
111
124
|
})];
|
|
112
125
|
case 2:
|
|
113
126
|
_a.sent();
|
|
@@ -124,7 +137,7 @@ var init_migration_table = function (client) { return __awaiter(void 0, void 0,
|
|
|
124
137
|
var get_migrations = function (migrations_home) {
|
|
125
138
|
var files;
|
|
126
139
|
try {
|
|
127
|
-
files =
|
|
140
|
+
files = fs_1.default.readdirSync(migrations_home);
|
|
128
141
|
}
|
|
129
142
|
catch (e) {
|
|
130
143
|
log('error', "no migration directory ".concat(migrations_home, ". Please create it."));
|
|
@@ -173,9 +186,10 @@ var apply_migrations = function (client, migrations, migrations_home) { return _
|
|
|
173
186
|
process.exit(1);
|
|
174
187
|
return [3 /*break*/, 5];
|
|
175
188
|
case 5:
|
|
176
|
-
migrations_applied =
|
|
189
|
+
migrations_applied = [];
|
|
177
190
|
migration_query_result.forEach(function (row) {
|
|
178
191
|
migrations_applied[row.version] = {
|
|
192
|
+
version: row.version,
|
|
179
193
|
checksum: row.checksum,
|
|
180
194
|
migration_name: row.migration_name,
|
|
181
195
|
};
|
|
@@ -195,8 +209,8 @@ var apply_migrations = function (client, migrations, migrations_home) { return _
|
|
|
195
209
|
case 6:
|
|
196
210
|
if (!(_i < migrations_1.length)) return [3 /*break*/, 17];
|
|
197
211
|
migration_1 = migrations_1[_i];
|
|
198
|
-
content =
|
|
199
|
-
checksum =
|
|
212
|
+
content = fs_1.default.readFileSync(migrations_home + '/' + migration_1.file).toString();
|
|
213
|
+
checksum = crypto_1.default.createHash('md5').update(content).digest('hex');
|
|
200
214
|
if (migrations_applied[migration_1.version]) {
|
|
201
215
|
// Check if migration file was not changed after apply.
|
|
202
216
|
if (migrations_applied[migration_1.version].checksum !== checksum) {
|
|
@@ -270,10 +284,10 @@ var migration = function (migrations_home, host, username, password, db_name) {
|
|
|
270
284
|
switch (_a.label) {
|
|
271
285
|
case 0:
|
|
272
286
|
migrations = get_migrations(migrations_home);
|
|
273
|
-
|
|
274
|
-
return [4 /*yield*/, create_db(client, db_name)];
|
|
287
|
+
return [4 /*yield*/, create_db(host, username, password, db_name)];
|
|
275
288
|
case 1:
|
|
276
289
|
_a.sent();
|
|
290
|
+
client = connect(host, username, password, db_name);
|
|
277
291
|
return [4 /*yield*/, init_migration_table(client)];
|
|
278
292
|
case 2:
|
|
279
293
|
_a.sent();
|
|
@@ -288,8 +302,8 @@ var migration = function (migrations_home, host, username, password, db_name) {
|
|
|
288
302
|
});
|
|
289
303
|
}); };
|
|
290
304
|
var migrate = function () {
|
|
291
|
-
var program = new Command();
|
|
292
|
-
program.name('clickhouse-migrations').description('ClickHouse migrations.').version('0.1.
|
|
305
|
+
var program = new commander_1.Command();
|
|
306
|
+
program.name('clickhouse-migrations').description('ClickHouse migrations.').version('0.1.9');
|
|
293
307
|
program
|
|
294
308
|
.command('migrate')
|
|
295
309
|
.description('Apply migrations.')
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clickhouse-migrations",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "CLI NodeJS ClickHouse Migrations",
|
|
5
5
|
"bin": {
|
|
6
6
|
"clickhouse-migrations": "lib/cli.js"
|
|
7
7
|
},
|
|
8
8
|
"scripts": {
|
|
9
|
-
"build": "tsc",
|
|
9
|
+
"build": "rm lib/*; tsc",
|
|
10
10
|
"test": "jest --config jestconfig.json",
|
|
11
11
|
"format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"",
|
|
12
|
-
"lint": "eslint ./src
|
|
12
|
+
"lint": "eslint ./src --ext .ts",
|
|
13
13
|
"prepare": "npm run build",
|
|
14
14
|
"prepublishOnly": "npm test && npm run lint",
|
|
15
15
|
"preversion": "npm run lint",
|
|
@@ -20,19 +20,21 @@
|
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"repository": "VVVi/clickhouse-migrations",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@clickhouse/client": "^0.0.
|
|
23
|
+
"@clickhouse/client": "^0.0.10",
|
|
24
24
|
"commander": "^9.4.1"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@types/jest": "^29.2.
|
|
27
|
+
"@types/jest": "^29.2.3",
|
|
28
28
|
"@types/node": "^18.11.9",
|
|
29
|
-
"@typescript-eslint/parser": "^5.
|
|
30
|
-
"eslint": "^
|
|
29
|
+
"@typescript-eslint/parser": "^5.44.0",
|
|
30
|
+
"@typescript-eslint/eslint-plugin": "^5.44.0",
|
|
31
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
32
|
+
"eslint": "^8.28.0",
|
|
31
33
|
"eslint-config-prettier": "^8.5.0",
|
|
32
|
-
"jest": "^29.
|
|
33
|
-
"prettier": "^2.
|
|
34
|
+
"jest": "^29.3.1",
|
|
35
|
+
"prettier": "^2.8.0",
|
|
34
36
|
"ts-jest": "^29.0.3",
|
|
35
|
-
"typescript": "^4.
|
|
37
|
+
"typescript": "^4.9.3"
|
|
36
38
|
},
|
|
37
39
|
"files": [
|
|
38
40
|
"lib/**/*"
|