@prisma-psm/pg 1.0.0
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/.idea/modules.xml +8 -0
- package/.idea/php.xml +9 -0
- package/.idea/psm-pg.iml +8 -0
- package/.idea/vcs.xml +6 -0
- package/.idea/workspace.xml +73 -0
- package/LICENSE +201 -0
- package/README.md +2 -0
- package/package.json +21 -0
- package/src/index.d.ts +4 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +21 -0
- package/src/index.js.map +1 -0
- package/src/index.ts +23 -0
- package/src/migration/migrate.d.ts +3 -0
- package/src/migration/migrate.d.ts.map +1 -0
- package/src/migration/migrate.js +8 -0
- package/src/migration/migrate.js.map +1 -0
- package/src/migration/migrate.ts +7 -0
- package/src/migration/test.d.ts +3 -0
- package/src/migration/test.d.ts.map +1 -0
- package/src/migration/test.js +40 -0
- package/src/migration/test.js.map +1 -0
- package/src/migration/test.ts +43 -0
- package/src/parser/backup/engine.d.ts +16 -0
- package/src/parser/backup/engine.d.ts.map +1 -0
- package/src/parser/backup/engine.js +176 -0
- package/src/parser/backup/engine.js.map +1 -0
- package/src/parser/backup/engine.ts +201 -0
- package/src/parser/backup/index.d.ts +7 -0
- package/src/parser/backup/index.d.ts.map +1 -0
- package/src/parser/backup/index.js +29 -0
- package/src/parser/backup/index.js.map +1 -0
- package/src/parser/backup/index.ts +30 -0
- package/src/parser/constraint.d.ts +22 -0
- package/src/parser/constraint.d.ts.map +1 -0
- package/src/parser/constraint.js +160 -0
- package/src/parser/constraint.js.map +1 -0
- package/src/parser/constraint.ts +161 -0
- package/src/parser/def.d.ts +37 -0
- package/src/parser/def.d.ts.map +1 -0
- package/src/parser/def.js +4 -0
- package/src/parser/def.js.map +1 -0
- package/src/parser/def.ts +22 -0
- package/src/parser/dependencies.d.ts +3 -0
- package/src/parser/dependencies.d.ts.map +1 -0
- package/src/parser/dependencies.js +39 -0
- package/src/parser/dependencies.js.map +1 -0
- package/src/parser/dependencies.ts +43 -0
- package/src/parser/indexes.d.ts +13 -0
- package/src/parser/indexes.d.ts.map +1 -0
- package/src/parser/indexes.js +54 -0
- package/src/parser/indexes.js.map +1 -0
- package/src/parser/indexes.ts +57 -0
- package/src/parser/modelParser.d.ts +19 -0
- package/src/parser/modelParser.d.ts.map +1 -0
- package/src/parser/modelParser.js +24 -0
- package/src/parser/modelParser.js.map +1 -0
- package/src/parser/modelParser.ts +30 -0
- package/src/parser/notice.d.ts +2 -0
- package/src/parser/notice.d.ts.map +1 -0
- package/src/parser/notice.js +8 -0
- package/src/parser/notice.js.map +1 -0
- package/src/parser/notice.ts +5 -0
- package/src/parser/parser.d.ts +15 -0
- package/src/parser/parser.d.ts.map +1 -0
- package/src/parser/parser.js +72 -0
- package/src/parser/parser.js.map +1 -0
- package/src/parser/parser.ts +87 -0
- package/src/parser/shadow.d.ts +4 -0
- package/src/parser/shadow.d.ts.map +1 -0
- package/src/parser/shadow.js +21 -0
- package/src/parser/shadow.js.map +1 -0
- package/src/parser/shadow.ts +20 -0
- package/src/parser/sql.d.ts +3 -0
- package/src/parser/sql.d.ts.map +1 -0
- package/src/parser/sql.js +67 -0
- package/src/parser/sql.js.map +1 -0
- package/src/parser/sql.ts +74 -0
- package/src/parser/sys.d.ts +11 -0
- package/src/parser/sys.d.ts.map +1 -0
- package/src/parser/sys.js +54 -0
- package/src/parser/sys.js.map +1 -0
- package/src/parser/sys.ts +56 -0
- package/src/parser/table/engine.d.ts +7 -0
- package/src/parser/table/engine.d.ts.map +1 -0
- package/src/parser/table/engine.js +103 -0
- package/src/parser/table/engine.js.map +1 -0
- package/src/parser/table/engine.ts +106 -0
- package/src/parser/table/field.d.ts +8 -0
- package/src/parser/table/field.d.ts.map +1 -0
- package/src/parser/table/field.js +25 -0
- package/src/parser/table/field.js.map +1 -0
- package/src/parser/table/field.ts +22 -0
- package/src/parser/table.d.ts +8 -0
- package/src/parser/table.d.ts.map +1 -0
- package/src/parser/table.js +31 -0
- package/src/parser/table.js.map +1 -0
- package/src/parser/table.ts +30 -0
- package/src/utils/escape.d.ts +3 -0
- package/src/utils/escape.d.ts.map +1 -0
- package/src/utils/escape.js +59 -0
- package/src/utils/escape.js.map +1 -0
- package/src/utils/escape.ts +36 -0
- package/src/utils/sha.d.ts +2 -0
- package/src/utils/sha.d.ts.map +1 -0
- package/src/utils/sha.js +33 -0
- package/src/utils/sha.js.map +1 -0
- package/src/utils/sha.ts +6 -0
- package/src/utils/tabs.d.ts +2 -0
- package/src/utils/tabs.d.ts.map +1 -0
- package/src/utils/tabs.js +16 -0
- package/src/utils/tabs.js.map +1 -0
- package/src/utils/tabs.ts +14 -0
- package/tsconfig.json +81 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//filename: src/libs/migrate/index.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.parser = parser;
|
|
5
|
+
const shadow_1 = require("./shadow");
|
|
6
|
+
const sys_1 = require("./sys");
|
|
7
|
+
const dependencies_1 = require("./dependencies");
|
|
8
|
+
const modelParser_1 = require("./modelParser");
|
|
9
|
+
const engine_1 = require("./backup/engine");
|
|
10
|
+
function parser(opts) {
|
|
11
|
+
const schemas = new Set();
|
|
12
|
+
let response = {
|
|
13
|
+
options: opts,
|
|
14
|
+
parsed: {},
|
|
15
|
+
models: [],
|
|
16
|
+
core: [
|
|
17
|
+
...(0, sys_1.prepareCore)(opts),
|
|
18
|
+
...(0, sys_1.createMigration)(opts),
|
|
19
|
+
...(0, engine_1.createFunctionRestoreSerial)(opts)
|
|
20
|
+
],
|
|
21
|
+
shadow: {
|
|
22
|
+
create: [...(0, shadow_1.create_shadow)(opts)],
|
|
23
|
+
drop: [...(0, shadow_1.drop_shadow)(opts)],
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
opts.models.forEach((model, index) => {
|
|
27
|
+
var _a, _b, _c;
|
|
28
|
+
model.temp = `temp_${index}_${model.name}`;
|
|
29
|
+
schemas.add(model.schema);
|
|
30
|
+
if ((_a = model.psm) === null || _a === void 0 ? void 0 : _a.view)
|
|
31
|
+
return;
|
|
32
|
+
model.indexes = opts.indexes.filter(value => value.model === model.name);
|
|
33
|
+
const modelDDL = (0, modelParser_1.modelParser)(model, opts);
|
|
34
|
+
const parsed = {
|
|
35
|
+
model: model,
|
|
36
|
+
backup: { create: [], restore: [], restore_serial: [], clean: [] },
|
|
37
|
+
table: { create: [], drop: [], allocate: [] },
|
|
38
|
+
primary: { create: [], drop: [] },
|
|
39
|
+
foreign: { create: [], drop: [] },
|
|
40
|
+
unique: { create: [], drop: [] },
|
|
41
|
+
indexes: { create: [], drop: [] },
|
|
42
|
+
dependencies: [],
|
|
43
|
+
dependents: []
|
|
44
|
+
};
|
|
45
|
+
let backup = true;
|
|
46
|
+
if ((_c = (_b = model.psm) === null || _b === void 0 ? void 0 : _b.backup) === null || _c === void 0 ? void 0 : _c.skip)
|
|
47
|
+
backup = false;
|
|
48
|
+
if (backup) {
|
|
49
|
+
parsed.backup.restore.push(...modelDDL.restore_backup());
|
|
50
|
+
parsed.backup.restore_serial.push(...modelDDL.restore_serial());
|
|
51
|
+
}
|
|
52
|
+
parsed.table.create.push(...modelDDL.create_table());
|
|
53
|
+
parsed.primary.create.push(...modelDDL.create_primary_keys());
|
|
54
|
+
parsed.foreign.create.push(...modelDDL.create_foreign_key());
|
|
55
|
+
parsed.unique.create.push(...modelDDL.create_unique_key());
|
|
56
|
+
parsed.indexes.create.push(...modelDDL.create_index_key());
|
|
57
|
+
if (opts.mode === "migrate") {
|
|
58
|
+
parsed.table.drop.push(...modelDDL.drop_table());
|
|
59
|
+
parsed.table.allocate.push(...modelDDL.allocate_table());
|
|
60
|
+
parsed.primary.drop.push(...modelDDL.drop_primary_keys());
|
|
61
|
+
parsed.foreign.drop.push(...modelDDL.drop_foreign_key());
|
|
62
|
+
parsed.unique.drop.push(...modelDDL.drop_unique_key());
|
|
63
|
+
parsed.indexes.drop.push(...modelDDL.drop_index_key());
|
|
64
|
+
}
|
|
65
|
+
parsed.dependencies.push(...modelDDL.depends());
|
|
66
|
+
response.parsed[model.name] = parsed;
|
|
67
|
+
response.models.push(model.name);
|
|
68
|
+
});
|
|
69
|
+
(0, dependencies_1.reverseDependencies)(Object.values(response.parsed));
|
|
70
|
+
return response;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
//filename: src/libs/migrate/index.ts
|
|
2
|
+
|
|
3
|
+
import {create_shadow, drop_shadow} from "./shadow";
|
|
4
|
+
import {createMigration, prepareCore} from "./sys";
|
|
5
|
+
import {reverseDependencies} from "./dependencies";
|
|
6
|
+
import {modelParser} from "./modelParser";
|
|
7
|
+
import {createFunctionRestoreSerial} from "./backup/engine";
|
|
8
|
+
import {ParseModelResult, PostgresParserOptions} from "./def";
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
export interface ParserResult {
|
|
12
|
+
options:PostgresParserOptions
|
|
13
|
+
models: string[],
|
|
14
|
+
core: string[]
|
|
15
|
+
shadow: { create:string[], drop:string[] },
|
|
16
|
+
parsed: {
|
|
17
|
+
[p:string]:ParseModelResult
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function parser( opts:PostgresParserOptions){
|
|
22
|
+
const schemas = new Set();
|
|
23
|
+
let response:ParserResult = {
|
|
24
|
+
options: opts,
|
|
25
|
+
parsed:{},
|
|
26
|
+
models:[],
|
|
27
|
+
core:[
|
|
28
|
+
...prepareCore(opts),
|
|
29
|
+
...createMigration(opts),
|
|
30
|
+
...createFunctionRestoreSerial(opts)
|
|
31
|
+
],
|
|
32
|
+
shadow:{
|
|
33
|
+
create: [...create_shadow( opts )],
|
|
34
|
+
drop: [...drop_shadow( opts )],
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
opts.models.forEach( (model, index) => {
|
|
39
|
+
model.temp = `temp_${index}_${model.name}`;
|
|
40
|
+
|
|
41
|
+
schemas.add( model.schema )
|
|
42
|
+
|
|
43
|
+
if( model.psm?.view ) return;
|
|
44
|
+
model.indexes = opts.indexes.filter( value => value.model === model.name );
|
|
45
|
+
const modelDDL = modelParser( model, opts );
|
|
46
|
+
const parsed:ParseModelResult = {
|
|
47
|
+
model: model,
|
|
48
|
+
backup:{ create:[], restore:[], restore_serial:[], clean:[] },
|
|
49
|
+
table:{ create:[], drop:[], allocate:[]},
|
|
50
|
+
primary:{ create:[], drop:[] },
|
|
51
|
+
foreign:{ create:[], drop:[] },
|
|
52
|
+
unique:{ create:[], drop:[] },
|
|
53
|
+
indexes:{ create:[], drop:[] },
|
|
54
|
+
dependencies:[],
|
|
55
|
+
dependents:[]
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
let backup = true;
|
|
59
|
+
if( model.psm?.backup?.skip ) backup = false;
|
|
60
|
+
|
|
61
|
+
if( backup ){
|
|
62
|
+
parsed.backup.restore.push( ...modelDDL.restore_backup() );
|
|
63
|
+
parsed.backup.restore_serial.push( ...modelDDL.restore_serial());
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
parsed.table.create.push( ...modelDDL.create_table());
|
|
67
|
+
parsed.primary.create.push( ...modelDDL.create_primary_keys())
|
|
68
|
+
parsed.foreign.create.push( ...modelDDL.create_foreign_key() );
|
|
69
|
+
parsed.unique.create.push( ...modelDDL.create_unique_key());
|
|
70
|
+
parsed.indexes.create.push( ...modelDDL.create_index_key());
|
|
71
|
+
|
|
72
|
+
if( opts.mode === "migrate" ){
|
|
73
|
+
parsed.table.drop.push( ...modelDDL.drop_table());
|
|
74
|
+
parsed.table.allocate.push( ...modelDDL.allocate_table());
|
|
75
|
+
parsed.primary.drop.push(...modelDDL.drop_primary_keys());
|
|
76
|
+
parsed.foreign.drop.push( ...modelDDL.drop_foreign_key());
|
|
77
|
+
parsed.unique.drop.push( ...modelDDL.drop_unique_key());
|
|
78
|
+
parsed.indexes.drop.push( ...modelDDL.drop_index_key());
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
parsed.dependencies.push( ...modelDDL.depends());
|
|
82
|
+
response.parsed[model.name] = parsed;
|
|
83
|
+
response.models.push( model.name)
|
|
84
|
+
});
|
|
85
|
+
reverseDependencies( Object.values( response.parsed ))
|
|
86
|
+
return response;
|
|
87
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow.d.ts","sourceRoot":"","sources":["shadow.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,OAAO,CAAC;AAI5C,wBAAgB,aAAa,CAAE,IAAI,EAAE,qBAAqB,GAAI,MAAM,EAAE,CAMrE;AAED,wBAAgB,WAAW,CAAE,IAAI,EAAE,qBAAqB,GAAI,MAAM,EAAE,CAMnE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.create_shadow = create_shadow;
|
|
4
|
+
exports.drop_shadow = drop_shadow;
|
|
5
|
+
const escape_1 = require("../utils/escape");
|
|
6
|
+
const notice_1 = require("./notice");
|
|
7
|
+
function create_shadow(opts) {
|
|
8
|
+
return [
|
|
9
|
+
(0, notice_1.notice)(`CREATE SHADOW SCHEMA ${opts.shadow}`),
|
|
10
|
+
`create schema ${(0, escape_1.oid)(opts.shadow)};`,
|
|
11
|
+
(0, notice_1.notice)(`CREATE SHADOW SCHEMA ${opts.shadow} OK!`),
|
|
12
|
+
];
|
|
13
|
+
}
|
|
14
|
+
function drop_shadow(opts) {
|
|
15
|
+
return [
|
|
16
|
+
(0, notice_1.notice)(`DROP SHADOW SCHEMA ${opts.shadow}`),
|
|
17
|
+
`drop schema ${(0, escape_1.oid)(opts.shadow)} cascade;`,
|
|
18
|
+
(0, notice_1.notice)(`DROP SHADOW SCHEMA ${opts.shadow} OK!`),
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=shadow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow.js","sourceRoot":"","sources":["shadow.ts"],"names":[],"mappings":";;AAKA,sCAMC;AAED,kCAMC;AAjBD,4CAAoC;AACpC,qCAAgC;AAEhC,SAAgB,aAAa,CAAE,IAA2B;IACtD,OAAO;QACH,IAAA,eAAM,EAAC,wBAAyB,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9C,iBAAiB,IAAA,YAAG,EAAE,IAAI,CAAC,MAAM,CAAE,GAAG;QACtC,IAAA,eAAM,EAAC,wBAAyB,IAAI,CAAC,MAAM,MAAM,CAAC;KACrD,CAAC;AACN,CAAC;AAED,SAAgB,WAAW,CAAE,IAA2B;IACpD,OAAO;QACH,IAAA,eAAM,EAAC,sBAAuB,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5C,eAAe,IAAA,YAAG,EAAE,IAAI,CAAC,MAAM,CAAE,WAAW;QAC5C,IAAA,eAAM,EAAC,sBAAuB,IAAI,CAAC,MAAM,MAAM,CAAC;KACnD,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//filename: src/libs/migrate/shadow.ts
|
|
2
|
+
import {PostgresParserOptions} from "./def";
|
|
3
|
+
import {oid} from "../utils/escape";
|
|
4
|
+
import {notice} from "./notice";
|
|
5
|
+
|
|
6
|
+
export function create_shadow( opts: PostgresParserOptions ): string[] {
|
|
7
|
+
return [
|
|
8
|
+
notice(`CREATE SHADOW SCHEMA ${ opts.shadow}`),
|
|
9
|
+
`create schema ${oid( opts.shadow )};`,
|
|
10
|
+
notice(`CREATE SHADOW SCHEMA ${ opts.shadow} OK!`),
|
|
11
|
+
];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function drop_shadow( opts: PostgresParserOptions ): string[] {
|
|
15
|
+
return [
|
|
16
|
+
notice(`DROP SHADOW SCHEMA ${ opts.shadow}`),
|
|
17
|
+
`drop schema ${oid( opts.shadow )} cascade;`,
|
|
18
|
+
notice(`DROP SHADOW SCHEMA ${ opts.shadow} OK!`),
|
|
19
|
+
];
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["sql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,UAAU,CAAC;AAEtC,wBAAgB,GAAG,CAAC,QAAQ,EAAE,YAAY,UAuEzC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sql = sql;
|
|
4
|
+
function sql(response) {
|
|
5
|
+
let parsed = Object.values(response.parsed);
|
|
6
|
+
const commands = [];
|
|
7
|
+
commands.push(`/*
|
|
8
|
+
@PSM - Prisma SAFE MIGRATE
|
|
9
|
+
@author zootakuxy
|
|
10
|
+
@automation cli psm
|
|
11
|
+
@mode ${response.options.mode}
|
|
12
|
+
@date ${new Date().toISOString()}
|
|
13
|
+
*/`);
|
|
14
|
+
commands.push(...response.core);
|
|
15
|
+
commands.push(...response.shadow.create);
|
|
16
|
+
//Create Table
|
|
17
|
+
parsed.filter(value => !!value.table.create.length).forEach(value => {
|
|
18
|
+
commands.push(...value.table.create);
|
|
19
|
+
});
|
|
20
|
+
//Restore
|
|
21
|
+
parsed.filter(value => !!value.backup.restore.length).forEach(value => {
|
|
22
|
+
commands.push(...value.backup.restore);
|
|
23
|
+
});
|
|
24
|
+
parsed.filter(value => !!value.backup.restore_serial.length).forEach(value => {
|
|
25
|
+
commands.push(...value.backup.restore_serial);
|
|
26
|
+
});
|
|
27
|
+
//Create indexes
|
|
28
|
+
parsed.filter(value => !!value.indexes.create.length).forEach(value => {
|
|
29
|
+
commands.push(...value.indexes.create);
|
|
30
|
+
});
|
|
31
|
+
//Create constraints
|
|
32
|
+
parsed.filter(value => !!value.primary.create.length).forEach(value => {
|
|
33
|
+
commands.push(...value.primary.create);
|
|
34
|
+
});
|
|
35
|
+
parsed.filter(value => !!value.unique.create.length).forEach(value => {
|
|
36
|
+
commands.push(...value.unique.create);
|
|
37
|
+
});
|
|
38
|
+
parsed.filter(value => !!value.foreign.create.length).forEach(value => {
|
|
39
|
+
commands.push(...value.foreign.create);
|
|
40
|
+
});
|
|
41
|
+
//Drops
|
|
42
|
+
parsed.filter(value => !!value.foreign.drop.length).forEach(value => {
|
|
43
|
+
commands.push(...value.foreign.drop);
|
|
44
|
+
});
|
|
45
|
+
parsed.filter(value => !!value.unique.drop.length).forEach(value => {
|
|
46
|
+
commands.push(...value.unique.drop);
|
|
47
|
+
});
|
|
48
|
+
parsed.filter(value => !!value.primary.drop.length).forEach(value => {
|
|
49
|
+
commands.push(...value.primary.drop);
|
|
50
|
+
});
|
|
51
|
+
parsed.filter(value => !!value.indexes.drop.length).forEach(value => {
|
|
52
|
+
commands.push(...value.indexes.drop);
|
|
53
|
+
});
|
|
54
|
+
parsed.filter(value => !!value.table.drop.length).forEach(value => {
|
|
55
|
+
commands.push(...value.table.drop);
|
|
56
|
+
});
|
|
57
|
+
//Clean backup
|
|
58
|
+
parsed.filter(value => !!value.table.allocate.length).forEach(value => {
|
|
59
|
+
commands.push(...value.table.allocate);
|
|
60
|
+
});
|
|
61
|
+
parsed.filter(value => !!value.backup.clean.length).forEach(value => {
|
|
62
|
+
commands.push(...value.backup.clean);
|
|
63
|
+
});
|
|
64
|
+
commands.push(...response.shadow.drop);
|
|
65
|
+
return commands.join("\n");
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {ParserResult} from "./parser";
|
|
2
|
+
|
|
3
|
+
export function sql(response: ParserResult ) {
|
|
4
|
+
let parsed = Object.values( response.parsed );
|
|
5
|
+
const commands:string[] = [];
|
|
6
|
+
|
|
7
|
+
commands.push( `/*
|
|
8
|
+
@PSM - Prisma SAFE MIGRATE
|
|
9
|
+
@author zootakuxy
|
|
10
|
+
@automation cli psm
|
|
11
|
+
@mode ${response.options.mode}
|
|
12
|
+
@date ${ new Date().toISOString() }
|
|
13
|
+
*/`);
|
|
14
|
+
|
|
15
|
+
commands.push( ...response.core );
|
|
16
|
+
commands.push( ...response.shadow.create );
|
|
17
|
+
|
|
18
|
+
//Create Table
|
|
19
|
+
parsed.filter( value => !!value.table.create.length ).forEach( value => {
|
|
20
|
+
commands.push( ...value.table.create );
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
//Restore
|
|
24
|
+
parsed.filter( value => !!value.backup.restore.length ).forEach( value => {
|
|
25
|
+
commands.push( ...value.backup.restore );
|
|
26
|
+
});
|
|
27
|
+
parsed.filter( value => !!value.backup.restore_serial.length ).forEach( value => {
|
|
28
|
+
commands.push( ...value.backup.restore_serial );
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
//Create indexes
|
|
32
|
+
parsed.filter( value => !!value.indexes.create.length ).forEach( value => {
|
|
33
|
+
commands.push( ...value.indexes.create );
|
|
34
|
+
})
|
|
35
|
+
|
|
36
|
+
//Create constraints
|
|
37
|
+
parsed.filter( value => !!value.primary.create.length ).forEach( value => {
|
|
38
|
+
commands.push( ...value.primary.create );
|
|
39
|
+
})
|
|
40
|
+
parsed.filter( value => !!value.unique.create.length ).forEach( value => {
|
|
41
|
+
commands.push( ...value.unique.create );
|
|
42
|
+
})
|
|
43
|
+
parsed.filter( value => !!value.foreign.create.length ).forEach( value => {
|
|
44
|
+
commands.push( ...value.foreign.create );
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
//Drops
|
|
48
|
+
parsed.filter( value => !!value.foreign.drop.length ).forEach( value => {
|
|
49
|
+
commands.push( ...value.foreign.drop );
|
|
50
|
+
})
|
|
51
|
+
parsed.filter( value => !!value.unique.drop.length ).forEach( value => {
|
|
52
|
+
commands.push( ...value.unique.drop );
|
|
53
|
+
})
|
|
54
|
+
parsed.filter( value => !!value.primary.drop.length ).forEach( value => {
|
|
55
|
+
commands.push( ...value.primary.drop );
|
|
56
|
+
})
|
|
57
|
+
parsed.filter( value => !!value.indexes.drop.length ).forEach( value => {
|
|
58
|
+
commands.push( ...value.indexes.drop );
|
|
59
|
+
})
|
|
60
|
+
parsed.filter( value => !!value.table.drop.length ).forEach( value => {
|
|
61
|
+
commands.push( ...value.table.drop );
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
//Clean backup
|
|
65
|
+
parsed.filter( value => !!value.table.allocate.length ).forEach( value => {
|
|
66
|
+
commands.push( ...value.table.allocate );
|
|
67
|
+
});
|
|
68
|
+
parsed.filter( value => !!value.backup.clean.length ).forEach( value => {
|
|
69
|
+
commands.push( ...value.backup.clean );
|
|
70
|
+
});
|
|
71
|
+
commands.push( ...response.shadow.drop );
|
|
72
|
+
|
|
73
|
+
return commands.join("\n");
|
|
74
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PostgresParserOptions } from "./def";
|
|
2
|
+
export declare function prepareCore(opts: PostgresParserOptions): string[];
|
|
3
|
+
export declare function createMigration(opts: PostgresParserOptions): string[];
|
|
4
|
+
export interface OperationOptions {
|
|
5
|
+
hash: string;
|
|
6
|
+
operation?: string;
|
|
7
|
+
relation?: string;
|
|
8
|
+
revision?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function createRevision(opts: PostgresParserOptions, operation: OperationOptions): string[];
|
|
11
|
+
//# sourceMappingURL=sys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sys.d.ts","sourceRoot":"","sources":["sys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,OAAO,CAAC;AAK5C,wBAAgB,WAAW,CAAE,IAAI,EAAC,qBAAqB,YAkBtD;AACD,wBAAgB,eAAe,CAAE,IAAI,EAAC,qBAAqB,YAQ1D;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAC,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AACD,wBAAgB,cAAc,CAAC,IAAI,EAAC,qBAAqB,EAAE,SAAS,EAAC,gBAAgB,YAepF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prepareCore = prepareCore;
|
|
4
|
+
exports.createMigration = createMigration;
|
|
5
|
+
exports.createRevision = createRevision;
|
|
6
|
+
const escape_1 = require("../utils/escape");
|
|
7
|
+
const tabs_1 = require("../utils/tabs");
|
|
8
|
+
function prepareCore(opts) {
|
|
9
|
+
const sys = (0, escape_1.oid)(opts.sys);
|
|
10
|
+
const tab = " ";
|
|
11
|
+
return (0, tabs_1.noTab)([
|
|
12
|
+
`create schema if not exists ${sys};`,
|
|
13
|
+
`create table if not exists ${sys}.migration(
|
|
14
|
+
sid character varying not null primary key,
|
|
15
|
+
date timestamptz not null default clock_timestamp()
|
|
16
|
+
);`,
|
|
17
|
+
`create table if not exists ${sys}.revision(
|
|
18
|
+
hash character varying not null primary key,
|
|
19
|
+
migration_sid character varying not null references ${sys}.migration,
|
|
20
|
+
date timestamptz not null default clock_timestamp(),
|
|
21
|
+
operation character varying not null,
|
|
22
|
+
relation character varying not null,
|
|
23
|
+
revision character varying
|
|
24
|
+
);`,
|
|
25
|
+
], tab);
|
|
26
|
+
}
|
|
27
|
+
function createMigration(opts) {
|
|
28
|
+
if (opts.mode === "check")
|
|
29
|
+
return [];
|
|
30
|
+
const sys = (0, escape_1.oid)(opts.sys);
|
|
31
|
+
const migration = (0, escape_1.val)(opts.migration);
|
|
32
|
+
const tab = " ";
|
|
33
|
+
return (0, tabs_1.noTab)([
|
|
34
|
+
`insert into ${sys}.migration ( sid ) values ( ${migration} );`,
|
|
35
|
+
], tab);
|
|
36
|
+
}
|
|
37
|
+
function createRevision(opts, operation) {
|
|
38
|
+
if (opts.mode === "check")
|
|
39
|
+
return [];
|
|
40
|
+
const sys = (0, escape_1.oid)(opts.sys);
|
|
41
|
+
const tab = " ";
|
|
42
|
+
operation = Object.assign(Object.assign({}, operation), { migration_sid: opts.migration });
|
|
43
|
+
const keys = Object.keys(operation);
|
|
44
|
+
const columns = keys.map(value => (0, escape_1.oid)(value)).join(", ");
|
|
45
|
+
const values = keys.map(value => {
|
|
46
|
+
if (!operation[value])
|
|
47
|
+
return `null`;
|
|
48
|
+
return (0, escape_1.val)(operation[value]);
|
|
49
|
+
}).join(", ");
|
|
50
|
+
return (0, tabs_1.noTab)([
|
|
51
|
+
`insert into ${sys}.revision ( ${columns} ) values ( ${values} );`,
|
|
52
|
+
], tab);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=sys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sys.js","sourceRoot":"","sources":["sys.ts"],"names":[],"mappings":";;AAKA,kCAkBC;AACD,0CAQC;AAQD,wCAeC;AAtDD,4CAAyC;AACzC,wCAAoC;AAGpC,SAAgB,WAAW,CAAE,IAA0B;IACnD,MAAM,GAAG,GAAG,IAAA,YAAG,EAAE,IAAI,CAAC,GAAG,CAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,WAAW,CAAC;IACxB,OAAO,IAAA,YAAK,EAAC;QACT,+BAA+B,GAAG,GAAG;QACrC,8BAA8B,GAAG;;;YAG7B;QACJ,8BAA8B,GAAG;;kEAEyB,GAAG;;;;;YAKzD;KACP,EAAE,GAAG,CAAC,CAAA;AACX,CAAC;AACD,SAAgB,eAAe,CAAE,IAA0B;IACvD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAG,OAAO,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAA,YAAG,EAAE,IAAI,CAAC,GAAG,CAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAA,YAAG,EAAE,IAAI,CAAC,SAAS,CAAE,CAAC;IACxC,MAAM,GAAG,GAAG,WAAW,CAAC;IACxB,OAAO,IAAA,YAAK,EAAE;QACV,eAAe,GAAG,+BAA+B,SAAS,KAAK;KAClE,EAAE,GAAG,CAAC,CAAA;AACX,CAAC;AAQD,SAAgB,cAAc,CAAC,IAA0B,EAAE,SAA0B;IACjF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAG,OAAO,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAA,YAAG,EAAE,IAAI,CAAC,GAAG,CAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,WAAW,CAAC;IACxB,SAAS,GAAG,gCAAK,SAAS,KAAE,aAAa,EAAE,IAAI,CAAC,SAAS,GAAS,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAE,SAAS,CAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE,CAAC,IAAA,YAAG,EAAE,KAAK,CAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAE,KAAK,CAAC,EAAE;QAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAG,OAAO,MAAM,CAAA;QACrC,OAAO,IAAA,YAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAE,CAAA;IAClC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,IAAA,YAAK,EAAC;QACT,eAAe,GAAG,eAAgB,OAAO,eAAe,MAAM,KAAK;KACtE,EAAE,GAAG,CAAC,CAAA;AACX,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import {PostgresParserOptions} from "./def";
|
|
2
|
+
import {oid, val} from "../utils/escape";
|
|
3
|
+
import {noTab} from "../utils/tabs";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
export function prepareCore( opts:PostgresParserOptions ){
|
|
7
|
+
const sys = oid( opts.sys );
|
|
8
|
+
const tab = " ";
|
|
9
|
+
return noTab([
|
|
10
|
+
`create schema if not exists ${sys};`,
|
|
11
|
+
`create table if not exists ${sys}.migration(
|
|
12
|
+
sid character varying not null primary key,
|
|
13
|
+
date timestamptz not null default clock_timestamp()
|
|
14
|
+
);`,
|
|
15
|
+
`create table if not exists ${sys}.revision(
|
|
16
|
+
hash character varying not null primary key,
|
|
17
|
+
migration_sid character varying not null references ${sys}.migration,
|
|
18
|
+
date timestamptz not null default clock_timestamp(),
|
|
19
|
+
operation character varying not null,
|
|
20
|
+
relation character varying not null,
|
|
21
|
+
revision character varying
|
|
22
|
+
);`,
|
|
23
|
+
], tab)
|
|
24
|
+
}
|
|
25
|
+
export function createMigration( opts:PostgresParserOptions ){
|
|
26
|
+
if( opts.mode === "check" ) return [];
|
|
27
|
+
const sys = oid( opts.sys );
|
|
28
|
+
const migration = val( opts.migration );
|
|
29
|
+
const tab = " ";
|
|
30
|
+
return noTab( [
|
|
31
|
+
`insert into ${sys}.migration ( sid ) values ( ${migration} );`,
|
|
32
|
+
], tab)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface OperationOptions {
|
|
36
|
+
hash:string,
|
|
37
|
+
operation?: string
|
|
38
|
+
relation?: string
|
|
39
|
+
revision?: string
|
|
40
|
+
}
|
|
41
|
+
export function createRevision(opts:PostgresParserOptions, operation:OperationOptions ){
|
|
42
|
+
if( opts.mode === "check" ) return [];
|
|
43
|
+
const sys = oid( opts.sys );
|
|
44
|
+
const tab = " ";
|
|
45
|
+
operation = { ...operation, migration_sid: opts.migration } as any;
|
|
46
|
+
const keys = Object.keys( operation );
|
|
47
|
+
const columns = keys.map( value => oid( value )).join(", ");
|
|
48
|
+
const values = keys.map( value => {
|
|
49
|
+
if( !operation[value] ) return `null`
|
|
50
|
+
return val( operation[value] )
|
|
51
|
+
}).join(", ");
|
|
52
|
+
|
|
53
|
+
return noTab([
|
|
54
|
+
`insert into ${sys}.revision ( ${ columns} ) values ( ${values} );`,
|
|
55
|
+
], tab)
|
|
56
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AA6C7C,wBAAgB,SAAS,CAAG,IAAI,EAAC,WAAW;;;EA4C3C;AAGD,wBAAgB,YAAY,CAAG,IAAI,EAAC,WAAW,EAAE,KAAK,EAAC,MAAM,UAY5D"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseType = parseType;
|
|
4
|
+
exports.parseDefault = parseDefault;
|
|
5
|
+
const escape_1 = require("../../utils/escape");
|
|
6
|
+
const PRISMA_DEFAULTS = {
|
|
7
|
+
now: (opts) => {
|
|
8
|
+
return `now()`;
|
|
9
|
+
},
|
|
10
|
+
uuid: (opts) => {
|
|
11
|
+
return `gen_random_uuid()`;
|
|
12
|
+
},
|
|
13
|
+
autoincrement: (opts) => {
|
|
14
|
+
return ``;
|
|
15
|
+
},
|
|
16
|
+
dbgenerated: (opts) => {
|
|
17
|
+
return ` ${opts.args}`;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const PRISMA_TYPE_MAP = {
|
|
21
|
+
String: "varchar",
|
|
22
|
+
DateTime: "timestamptz",
|
|
23
|
+
Json: "json",
|
|
24
|
+
Float: "double precision",
|
|
25
|
+
SmallInt: "int2",
|
|
26
|
+
Int: "int4",
|
|
27
|
+
BigInt: "int8",
|
|
28
|
+
Boolean: "boolean",
|
|
29
|
+
Bytes: "bytea",
|
|
30
|
+
Decimal: "numeric",
|
|
31
|
+
Uuid: "uuid",
|
|
32
|
+
Timestamptz: "timestamptz",
|
|
33
|
+
JsonB: "jsonb",
|
|
34
|
+
VarChar: "varchar",
|
|
35
|
+
Integer: "int4",
|
|
36
|
+
Oid: "oid",
|
|
37
|
+
};
|
|
38
|
+
function parseType(opts) {
|
|
39
|
+
var _a, _b, _c, _d;
|
|
40
|
+
let type = "";
|
|
41
|
+
let autoincrement = ((_a = opts === null || opts === void 0 ? void 0 : opts.default) === null || _a === void 0 ? void 0 : _a.name) === "autoincrement";
|
|
42
|
+
let native = (_b = opts.nativeType) === null || _b === void 0 ? void 0 : _b[0];
|
|
43
|
+
if (!!native)
|
|
44
|
+
native = PRISMA_TYPE_MAP[native] || native;
|
|
45
|
+
let primatype = opts.type;
|
|
46
|
+
let datatype = native || PRISMA_TYPE_MAP[primatype] || primatype;
|
|
47
|
+
let serial = false;
|
|
48
|
+
if (datatype === "int2" && autoincrement) {
|
|
49
|
+
type = "serial2";
|
|
50
|
+
serial = true;
|
|
51
|
+
}
|
|
52
|
+
else if (datatype === "int4" && autoincrement) {
|
|
53
|
+
type = "serial";
|
|
54
|
+
serial = true;
|
|
55
|
+
}
|
|
56
|
+
else if (datatype === "int8" && autoincrement) {
|
|
57
|
+
type = "serial8";
|
|
58
|
+
serial = true;
|
|
59
|
+
}
|
|
60
|
+
else if (datatype === "oid" && autoincrement) {
|
|
61
|
+
type = "serial";
|
|
62
|
+
serial = true;
|
|
63
|
+
}
|
|
64
|
+
else if (!!opts.nativeType) {
|
|
65
|
+
let args = "";
|
|
66
|
+
if (((_c = opts.nativeType) === null || _c === void 0 ? void 0 : _c[1].length) > 0)
|
|
67
|
+
args = `(${(_d = opts.nativeType) === null || _d === void 0 ? void 0 : _d[1].join(", ")})`;
|
|
68
|
+
type = `${native}${args}`;
|
|
69
|
+
}
|
|
70
|
+
else if (!!PRISMA_TYPE_MAP[opts.type]) {
|
|
71
|
+
type = PRISMA_TYPE_MAP[opts.type];
|
|
72
|
+
}
|
|
73
|
+
else
|
|
74
|
+
type = opts.type;
|
|
75
|
+
if (!type)
|
|
76
|
+
type = "text";
|
|
77
|
+
if (opts.isList)
|
|
78
|
+
return {
|
|
79
|
+
type: `${type}[]`,
|
|
80
|
+
serial
|
|
81
|
+
};
|
|
82
|
+
return {
|
|
83
|
+
type: type,
|
|
84
|
+
serial: serial
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function parseDefault(opts, typed) {
|
|
88
|
+
let defaults = "";
|
|
89
|
+
if (opts.hasDefaultValue && !!opts.default && Array.isArray(opts.default)) {
|
|
90
|
+
defaults = opts.default.map(value => (0, escape_1.val)(value)).join(", ");
|
|
91
|
+
defaults = ` array[ ${defaults} ]`;
|
|
92
|
+
}
|
|
93
|
+
else if (opts.hasDefaultValue && !!opts.default && typeof opts.default === "object" && !Array.isArray(opts.default)) {
|
|
94
|
+
defaults = PRISMA_DEFAULTS[opts.default.name](opts.default);
|
|
95
|
+
}
|
|
96
|
+
else if (opts.hasDefaultValue && !!opts.default) {
|
|
97
|
+
defaults = (0, escape_1.val)(opts.default + "");
|
|
98
|
+
}
|
|
99
|
+
if (!(defaults === null || defaults === void 0 ? void 0 : defaults.length))
|
|
100
|
+
return "";
|
|
101
|
+
return `${defaults}::${typed}`;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":"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"}
|