@prisma-psm/pg 1.0.5 → 1.0.7
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/vcs.xml +1 -0
- package/package.json +1 -1
- package/src/index.js +15 -6
- package/src/index.ts +22 -10
- package/src/migration/index.d.ts +2 -1
- package/src/migration/index.d.ts.map +1 -1
- package/src/migration/index.js +39 -0
- package/src/migration/index.js.map +1 -1
- package/src/migration/index.ts +43 -1
- package/src/parser/backup/engine.d.ts +4 -1
- package/src/parser/backup/engine.d.ts.map +1 -1
- package/src/parser/backup/engine.js +53 -33
- package/src/parser/backup/engine.js.map +1 -1
- package/src/parser/backup/engine.ts +58 -33
- package/src/parser/backup/index.d.ts +4 -1
- package/src/parser/backup/index.d.ts.map +1 -1
- package/src/parser/def.d.ts +5 -3
- package/src/parser/def.d.ts.map +1 -1
- package/src/parser/def.ts +9 -2
- package/src/parser/modelParser.d.ts +4 -1
- package/src/parser/modelParser.d.ts.map +1 -1
- package/src/parser/notice.js +1 -1
- package/src/parser/notice.ts +2 -2
- package/src/parser/parser.d.ts +6 -1
- package/src/parser/parser.d.ts.map +1 -1
- package/src/parser/parser.js +16 -16
- package/src/parser/parser.js.map +1 -1
- package/src/parser/parser.ts +31 -18
- package/src/parser/schama.d.ts +3 -0
- package/src/parser/schama.d.ts.map +1 -0
- package/src/parser/schama.js +16 -0
- package/src/parser/schama.js.map +1 -0
- package/src/parser/schama.ts +14 -0
- package/src/parser/sql.d.ts +4 -1
- package/src/parser/sql.d.ts.map +1 -1
- package/src/parser/sql.js +47 -20
- package/src/parser/sql.js.map +1 -1
- package/src/parser/sql.ts +33 -22
- package/src/parser/sys.d.ts.map +1 -1
- package/src/parser/sys.js +2 -6
- package/src/parser/sys.js.map +1 -1
- package/src/parser/sys.ts +3 -5
- package/src/parser/table/engine.js +2 -2
- package/src/parser/table/engine.ts +3 -3
- package/src/sql/catalog-maps.d.ts +1 -0
- package/src/sql/catalog-maps.d.ts.map +1 -0
- package/src/sql/catalog-maps.js +283 -0
- package/src/sql/catalog-maps.js.map +1 -0
- package/src/sql/catalog-maps.ts +281 -0
- package/src/sql/sql-builder.d.ts +1 -0
- package/src/sql/sql-builder.d.ts.map +1 -0
- package/src/sql/sql-builder.js +256 -0
- package/src/sql/sql-builder.js.map +1 -0
- package/src/sql/sql-builder.ts +254 -0
- package/src/utils/escape.d.ts +5 -1
- package/src/utils/escape.d.ts.map +1 -1
- package/src/utils/escape.js +328 -4
- package/src/utils/escape.js.map +1 -1
- package/src/utils/escape.ts +331 -4
- package/src/utils/script-util.d.ts +26 -0
- package/src/utils/script-util.d.ts.map +1 -0
- package/src/utils/script-util.js +95 -0
- package/src/utils/script-util.js.map +1 -0
- package/src/utils/script-util.ts +105 -0
package/.idea/vcs.xml
CHANGED
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const sql_1 = require("./parser/sql");
|
|
3
2
|
const parser_1 = require("./parser/parser");
|
|
4
3
|
const migration_1 = require("./migration");
|
|
4
|
+
const sql_1 = require("./parser/sql");
|
|
5
5
|
function prepare(model) {
|
|
6
6
|
if (!model.schema)
|
|
7
7
|
model.schema = "public";
|
|
8
8
|
}
|
|
9
9
|
const driver = {
|
|
10
|
+
migrated: (opts) => {
|
|
11
|
+
return (0, migration_1.migrated)(opts);
|
|
12
|
+
},
|
|
10
13
|
migrator: opts => ({
|
|
11
14
|
migrate: () => (0, migration_1.migrate)({ sql: opts.migrate, url: opts.url, label: "NEXT" }),
|
|
12
15
|
test: () => (0, migration_1.migrate)({ sql: opts.check, url: opts.url, label: "TEST" }),
|
|
16
|
+
core: () => (0, migration_1.migrate)({ sql: opts.core, url: opts.url, label: "CORE" }),
|
|
13
17
|
}),
|
|
14
|
-
generator: opts =>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
generator: (opts) => {
|
|
19
|
+
let response = (0, parser_1.parser)(opts);
|
|
20
|
+
const generator = {
|
|
21
|
+
migrate: () => (0, sql_1.sql)({ mode: "migrate" }, response),
|
|
22
|
+
check: () => (0, sql_1.sql)({ mode: "check" }, response),
|
|
23
|
+
core: () => (0, sql_1.sql)({ mode: "core" }, response)
|
|
24
|
+
};
|
|
25
|
+
return generator;
|
|
26
|
+
},
|
|
27
|
+
prepare,
|
|
19
28
|
};
|
|
20
29
|
module.exports = driver;
|
|
21
30
|
//# sourceMappingURL=index.js.map
|
package/src/index.ts
CHANGED
|
@@ -1,23 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {PSMDriver, ModelOptions} from "@prisma-psm/core";
|
|
1
|
+
import {PSMDriver, ModelOptions, PSMGenerator} from "@prisma-psm/core";
|
|
3
2
|
import {parser} from "./parser/parser";
|
|
4
|
-
import {migrate} from "./migration";
|
|
5
|
-
|
|
3
|
+
import {migrate,migrated} from "./migration";
|
|
4
|
+
import {sql} from "./parser/sql";
|
|
6
5
|
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
function prepare( model:ModelOptions ){
|
|
10
9
|
if( !model.schema ) model.schema = "public";
|
|
11
10
|
}
|
|
11
|
+
|
|
12
|
+
|
|
12
13
|
const driver :PSMDriver = {
|
|
14
|
+
migrated:( opts )=>{
|
|
15
|
+
return migrated( opts );
|
|
16
|
+
},
|
|
13
17
|
migrator: opts => ({
|
|
14
18
|
migrate: () => migrate({ sql: opts.migrate, url: opts.url, label: "NEXT" }),
|
|
15
19
|
test: () => migrate({ sql: opts.check, url: opts.url, label: "TEST" }),
|
|
20
|
+
core: () => migrate({ sql: opts.core, url: opts.url, label: "CORE" }),
|
|
16
21
|
}),
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
22
|
+
|
|
23
|
+
generator:(opts) => {
|
|
24
|
+
let response = parser(opts);
|
|
25
|
+
|
|
26
|
+
const generator: PSMGenerator = {
|
|
27
|
+
migrate: () => sql( { mode: "migrate" }, response),
|
|
28
|
+
check: () => sql( { mode: "check" }, response),
|
|
29
|
+
core: () => sql( { mode: "core" }, response)
|
|
30
|
+
}
|
|
31
|
+
return generator;
|
|
32
|
+
},
|
|
33
|
+
prepare,
|
|
34
|
+
} as PSMDriver
|
|
23
35
|
export = driver
|
package/src/migration/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { MigrationOptions, PSMMigrationResult } from "@prisma-psm/core";
|
|
1
|
+
import { MigrationOptions, PSMMigrated, PSMMigratedOptions, PSMMigrationResult } from "@prisma-psm/core";
|
|
2
2
|
export declare function migrate(opts: MigrationOptions): Promise<PSMMigrationResult>;
|
|
3
|
+
export declare function migrated(opts: PSMMigratedOptions): Promise<PSMMigrated>;
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAKvG,wBAAgB,OAAO,CAAC,IAAI,EAAC,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsC1E;AACD,wBAAgB,QAAQ,CAAC,IAAI,EAAC,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAwCtE"}
|
package/src/migration/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.migrate = migrate;
|
|
4
|
+
exports.migrated = migrated;
|
|
4
5
|
const pg_1 = require("pg");
|
|
6
|
+
const escape_1 = require("../utils/escape");
|
|
5
7
|
function migrate(opts) {
|
|
6
8
|
return new Promise((resolve, reject) => {
|
|
7
9
|
const response = {
|
|
@@ -37,4 +39,41 @@ function migrate(opts) {
|
|
|
37
39
|
});
|
|
38
40
|
});
|
|
39
41
|
}
|
|
42
|
+
function migrated(opts) {
|
|
43
|
+
return new Promise((resolve, reject) => {
|
|
44
|
+
const response = {
|
|
45
|
+
messages: [],
|
|
46
|
+
};
|
|
47
|
+
const client = new pg_1.Client(opts.url);
|
|
48
|
+
client.connect(err => {
|
|
49
|
+
var _a;
|
|
50
|
+
if (err) {
|
|
51
|
+
(_a = response.messages) === null || _a === void 0 ? void 0 : _a.push(`Connection failed: ${err.message}`);
|
|
52
|
+
response.error = err;
|
|
53
|
+
}
|
|
54
|
+
const sys = (0, escape_1.oid)(opts.sys || "sys");
|
|
55
|
+
const query = new pg_1.Query(`
|
|
56
|
+
select * from ${sys}.migration;
|
|
57
|
+
`);
|
|
58
|
+
query.on("error", err => {
|
|
59
|
+
var _a;
|
|
60
|
+
response.error = err;
|
|
61
|
+
(_a = response.messages) === null || _a === void 0 ? void 0 : _a.push(`Load migrated failed: ${err.message}`);
|
|
62
|
+
console.error(`Load migrated failed`, err);
|
|
63
|
+
client.end(err1 => { });
|
|
64
|
+
resolve(response);
|
|
65
|
+
});
|
|
66
|
+
query.on("end", result => {
|
|
67
|
+
response.success = true;
|
|
68
|
+
response.migrated = result.rows;
|
|
69
|
+
client.end(err1 => { });
|
|
70
|
+
resolve(response);
|
|
71
|
+
});
|
|
72
|
+
client.on("notice", notice => {
|
|
73
|
+
console.log(`PSM NOTICE: ${notice.message}`);
|
|
74
|
+
});
|
|
75
|
+
client.query(query);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}
|
|
40
79
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
package/src/migration/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {MigrationOptions, PSMMigrationResult} from "@prisma-psm/core";
|
|
1
|
+
import {MigrationOptions, PSMMigrated, PSMMigratedOptions, PSMMigrationResult} from "@prisma-psm/core";
|
|
2
2
|
import { Client, Query } from 'pg'
|
|
3
|
+
import {oid} from "../utils/escape";
|
|
3
4
|
|
|
4
5
|
|
|
5
6
|
export function migrate(opts:MigrationOptions ):Promise<PSMMigrationResult>{
|
|
@@ -37,6 +38,47 @@ export function migrate(opts:MigrationOptions ):Promise<PSMMigrationResult>{
|
|
|
37
38
|
console.log( `PSM NOTICE: ${notice.message}`);
|
|
38
39
|
});
|
|
39
40
|
|
|
41
|
+
client.query( query);
|
|
42
|
+
});
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
export function migrated(opts:PSMMigratedOptions ):Promise<PSMMigrated>{
|
|
46
|
+
return new Promise( (resolve, reject) => {
|
|
47
|
+
const response:PSMMigrated = {
|
|
48
|
+
messages: [],
|
|
49
|
+
}
|
|
50
|
+
const client = new Client( opts.url);
|
|
51
|
+
client.connect( err => {
|
|
52
|
+
if( err ) {
|
|
53
|
+
response.messages?.push( `Connection failed: ${err.message}` );
|
|
54
|
+
response.error = err;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const sys = oid( opts.sys || "sys" )
|
|
58
|
+
|
|
59
|
+
const query = new Query( `
|
|
60
|
+
select * from ${sys}.migration;
|
|
61
|
+
`);
|
|
62
|
+
|
|
63
|
+
query.on( "error", err => {
|
|
64
|
+
response.error = err;
|
|
65
|
+
response.messages?.push( `Load migrated failed: ${err.message}` );
|
|
66
|
+
console.error( `Load migrated failed`, err)
|
|
67
|
+
client.end( err1 => { });
|
|
68
|
+
resolve( response );
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
query.on( "end", result => {
|
|
72
|
+
response.success = true;
|
|
73
|
+
response.migrated = result.rows;
|
|
74
|
+
client.end( err1 => { });
|
|
75
|
+
resolve( response );
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
client.on( "notice", notice => {
|
|
79
|
+
console.log( `PSM NOTICE: ${notice.message}`);
|
|
80
|
+
});
|
|
81
|
+
|
|
40
82
|
client.query( query);
|
|
41
83
|
});
|
|
42
84
|
})
|
|
@@ -6,7 +6,10 @@ export interface RestoreOptions {
|
|
|
6
6
|
model: ModelOptions;
|
|
7
7
|
parser: PostgresParserOptions;
|
|
8
8
|
}
|
|
9
|
-
export declare function restoreBackupSQL(opts: RestoreOptions):
|
|
9
|
+
export declare function restoreBackupSQL(opts: RestoreOptions): {
|
|
10
|
+
data: string[];
|
|
11
|
+
registry: string[];
|
|
12
|
+
};
|
|
10
13
|
export interface RestoreSerialOptions extends RestoreOptions {
|
|
11
14
|
from: string;
|
|
12
15
|
to: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAG3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAK/C,wBAAgB,2BAA2B,CAAE,IAAI,EAAE,qBAAqB,YAoCvE;AAGD,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAC,MAAM,CAAA;IACb,KAAK,EAAC,YAAY,CAAC;IACnB,MAAM,EAAC,qBAAqB,CAAA;CAC/B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAC,cAAc,GAAI,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAG3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAK/C,wBAAgB,2BAA2B,CAAE,IAAI,EAAE,qBAAqB,YAoCvE;AAGD,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAC,MAAM,CAAA;IACb,KAAK,EAAC,YAAY,CAAC;IACnB,MAAM,EAAC,qBAAqB,CAAA;CAC/B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAC,cAAc,GAAI;IACpD,IAAI,EAAC,MAAM,EAAE,CAAA;IACb,QAAQ,EAAC,MAAM,EAAE,CAAA;CACpB,CAiJA;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IACxD,IAAI,EAAC,MAAM,CAAA;IACX,EAAE,EAAC,MAAM,CAAA;IACT,GAAG,CAAC,EAAC,MAAM,CAAA;CACd;AACD,wBAAgB,gBAAgB,CAAE,IAAI,EAAC,oBAAoB,YAgB1D"}
|
|
@@ -5,9 +5,9 @@ exports.restoreBackupSQL = restoreBackupSQL;
|
|
|
5
5
|
exports.restoreSerialSQL = restoreSerialSQL;
|
|
6
6
|
const escape_1 = require("../../utils/escape");
|
|
7
7
|
const tabs_1 = require("../../utils/tabs");
|
|
8
|
+
const notice_1 = require("../notice");
|
|
8
9
|
const sys_1 = require("../sys");
|
|
9
10
|
const sha_1 = require("../../utils/sha");
|
|
10
|
-
const notice_1 = require("../notice");
|
|
11
11
|
function createFunctionRestoreSerial(opts) {
|
|
12
12
|
const sys = (0, escape_1.oid)(opts.sys);
|
|
13
13
|
const tab = " ";
|
|
@@ -46,7 +46,7 @@ function createFunctionRestoreSerial(opts) {
|
|
|
46
46
|
], tab);
|
|
47
47
|
}
|
|
48
48
|
function restoreBackupSQL(opts) {
|
|
49
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
|
|
49
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7;
|
|
50
50
|
const schema = (0, escape_1.oid)(opts.model.schema);
|
|
51
51
|
const source = (0, escape_1.oid)(opts.source);
|
|
52
52
|
const shadow = (0, escape_1.oid)(opts.parser.shadow);
|
|
@@ -61,12 +61,16 @@ function restoreBackupSQL(opts) {
|
|
|
61
61
|
const columns = opts.model.fields.filter(filter)
|
|
62
62
|
.map(value => ` ${(0, escape_1.oid)(value.name)}`)
|
|
63
63
|
.join(", ");
|
|
64
|
+
const DEFAULT_WHEN = `true`;
|
|
64
65
|
const DEFAULT_QUERY = `select * from ${schema}.${source}`;
|
|
66
|
+
const DEFAULT_SOURCE_CHECKER = `select 1 from pg_catalog.pg_tables t where t.tablename = ${(0, escape_1.lit)(opts.model.name)} and t.schemaname = ${(0, escape_1.lit)(opts.model.schema)}`;
|
|
65
67
|
const DEFAULT_RESOLVER = opts.model.fields.filter(filter)
|
|
66
68
|
.map(value => {
|
|
67
69
|
return ` ${(0, escape_1.oid)(value.dbName || value.name)}`;
|
|
68
70
|
})
|
|
69
71
|
.join(", ");
|
|
72
|
+
let source_exists = DEFAULT_SOURCE_CHECKER;
|
|
73
|
+
let when = DEFAULT_WHEN;
|
|
70
74
|
const revision_resolver = opts.model.fields.filter(filter)
|
|
71
75
|
.map(field => {
|
|
72
76
|
var _a, _b;
|
|
@@ -78,14 +82,18 @@ function restoreBackupSQL(opts) {
|
|
|
78
82
|
.join(", ");
|
|
79
83
|
let revision_query = DEFAULT_QUERY;
|
|
80
84
|
const expression = (_e = (_d = (_c = opts.model.psm) === null || _c === void 0 ? void 0 : _c.backup) === null || _d === void 0 ? void 0 : _d.rev) === null || _e === void 0 ? void 0 : _e.expression;
|
|
81
|
-
|
|
85
|
+
const exists = (_h = (_g = (_f = opts.model.psm) === null || _f === void 0 ? void 0 : _f.backup) === null || _g === void 0 ? void 0 : _g.rev) === null || _h === void 0 ? void 0 : _h.exists;
|
|
86
|
+
if (!!(exists === null || exists === void 0 ? void 0 : exists.length)) {
|
|
87
|
+
source_exists = exists;
|
|
88
|
+
}
|
|
89
|
+
if (((_l = (_k = (_j = opts.model.psm) === null || _j === void 0 ? void 0 : _j.backup) === null || _k === void 0 ? void 0 : _k.rev) === null || _l === void 0 ? void 0 : _l.from) === "query"
|
|
82
90
|
&& !!expression)
|
|
83
91
|
revision_query = expression;
|
|
84
|
-
else if (((
|
|
92
|
+
else if (((_p = (_o = (_m = opts.model.psm) === null || _m === void 0 ? void 0 : _m.backup) === null || _o === void 0 ? void 0 : _o.rev) === null || _p === void 0 ? void 0 : _p.from) === "query:linked"
|
|
85
93
|
&& !!expression
|
|
86
|
-
&& !!((
|
|
87
|
-
revision_query = (
|
|
88
|
-
else if (((
|
|
94
|
+
&& !!((_r = (_q = opts.model.psm) === null || _q === void 0 ? void 0 : _q.query) === null || _r === void 0 ? void 0 : _r[expression]))
|
|
95
|
+
revision_query = (_t = (_s = opts.model.psm) === null || _s === void 0 ? void 0 : _s.query) === null || _t === void 0 ? void 0 : _t[expression];
|
|
96
|
+
else if (((_w = (_v = (_u = opts.model.psm) === null || _u === void 0 ? void 0 : _u.backup) === null || _v === void 0 ? void 0 : _v.rev) === null || _w === void 0 ? void 0 : _w.from) === "model" && !!expression) {
|
|
89
97
|
let model = opts.parser.models.find(value => value.model === expression);
|
|
90
98
|
if (!!model)
|
|
91
99
|
revision_query = `select * from ${(0, escape_1.oid)(model.schema || "public")}.${(0, escape_1.oid)(model.dbName || model.name)}`;
|
|
@@ -93,11 +101,11 @@ function restoreBackupSQL(opts) {
|
|
|
93
101
|
const sys = (0, escape_1.oid)(opts.parser.sys);
|
|
94
102
|
let revision = "null";
|
|
95
103
|
const relation = `${schema}.${table}`;
|
|
96
|
-
if ((
|
|
97
|
-
revision = (0, escape_1.
|
|
104
|
+
if ((_z = (_y = (_x = opts.model.psm) === null || _x === void 0 ? void 0 : _x.backup) === null || _y === void 0 ? void 0 : _y.rev) === null || _z === void 0 ? void 0 : _z.version)
|
|
105
|
+
revision = (0, escape_1.lit)((_1 = (_0 = opts.model.psm) === null || _0 === void 0 ? void 0 : _0.backup) === null || _1 === void 0 ? void 0 : _1.rev.version);
|
|
98
106
|
let always_query = DEFAULT_QUERY;
|
|
99
107
|
let always_resolver = DEFAULT_RESOLVER;
|
|
100
|
-
if (((
|
|
108
|
+
if (((_4 = (_3 = (_2 = opts.model.psm) === null || _2 === void 0 ? void 0 : _2.backup) === null || _3 === void 0 ? void 0 : _3.rev) === null || _4 === void 0 ? void 0 : _4.apply) === "ALWAYS" && !!revision_query && !!revision_resolver) {
|
|
101
109
|
always_query = revision_query;
|
|
102
110
|
always_resolver = revision_resolver;
|
|
103
111
|
revision = `always-${opts.parser.migration}`;
|
|
@@ -106,8 +114,18 @@ function restoreBackupSQL(opts) {
|
|
|
106
114
|
do $$
|
|
107
115
|
declare
|
|
108
116
|
_revision character varying := ${revision}::character varying;
|
|
109
|
-
_relation character varying := ${(0, escape_1.
|
|
117
|
+
_relation character varying := ${(0, escape_1.lit)(relation)}::character varying;
|
|
118
|
+
___whenX1025475 boolean;
|
|
110
119
|
begin
|
|
120
|
+
if not exists( ${source_exists} ) then
|
|
121
|
+
return;
|
|
122
|
+
end if;
|
|
123
|
+
|
|
124
|
+
___whenX1025475 := (${when});
|
|
125
|
+
if not coalesce( ___whenX1025475, true ) then
|
|
126
|
+
return;
|
|
127
|
+
end if;
|
|
128
|
+
|
|
111
129
|
if _revision is not null and not exists(
|
|
112
130
|
select 1
|
|
113
131
|
from ${sys}.revision r
|
|
@@ -131,13 +149,6 @@ function restoreBackupSQL(opts) {
|
|
|
131
149
|
else
|
|
132
150
|
raise exception 'cannot restore revision';
|
|
133
151
|
end if;
|
|
134
|
-
|
|
135
|
-
${(0, sys_1.createRevision)(opts.parser, {
|
|
136
|
-
revision: (_4 = (_3 = (_2 = opts.model.psm) === null || _2 === void 0 ? void 0 : _2.backup) === null || _3 === void 0 ? void 0 : _3.rev) === null || _4 === void 0 ? void 0 : _4.version,
|
|
137
|
-
relation: relation,
|
|
138
|
-
hash: (0, sha_1.migrationHash)(opts.parser.migration, `restore:data-${relation}`),
|
|
139
|
-
operation: `restore:data-${relation}`
|
|
140
|
-
}).join("\n")}
|
|
141
152
|
end;
|
|
142
153
|
$$;
|
|
143
154
|
`.split("\n")
|
|
@@ -148,24 +159,33 @@ function restoreBackupSQL(opts) {
|
|
|
148
159
|
return value;
|
|
149
160
|
})
|
|
150
161
|
.join("\n");
|
|
151
|
-
return
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
162
|
+
return {
|
|
163
|
+
data: [
|
|
164
|
+
(0, notice_1.notice)(`RESTORE BACKUP FOR MODEL ${opts.model.model}`),
|
|
165
|
+
next,
|
|
166
|
+
(0, notice_1.notice)(`RESTORE BACKUP FOR MODEL ${opts.model.model} OK`),
|
|
167
|
+
],
|
|
168
|
+
registry: [
|
|
169
|
+
(0, notice_1.notice)(`REGISTRY RESTORE OF BACKUP FOR MODEL ${opts.model.model}`),
|
|
170
|
+
(0, sys_1.createRevision)(opts.parser, {
|
|
171
|
+
revision: (_7 = (_6 = (_5 = opts.model.psm) === null || _5 === void 0 ? void 0 : _5.backup) === null || _6 === void 0 ? void 0 : _6.rev) === null || _7 === void 0 ? void 0 : _7.version,
|
|
172
|
+
relation: relation,
|
|
173
|
+
hash: (0, sha_1.migrationHash)(opts.parser.migration, `restore:data-${relation}`),
|
|
174
|
+
operation: `restore:data-${relation}`
|
|
175
|
+
}).join("\n"),
|
|
176
|
+
(0, notice_1.notice)(`REGISTRY RESTORE OF BACKUP FOR MODEL ${opts.model.model} OK`),
|
|
177
|
+
],
|
|
178
|
+
};
|
|
156
179
|
}
|
|
157
180
|
function restoreSerialSQL(opts) {
|
|
158
|
-
let seq = "null";
|
|
159
|
-
if (!!opts.seq)
|
|
160
|
-
seq = (0, escape_1.val)(opts.seq);
|
|
161
181
|
const args = [
|
|
162
|
-
` schema := ${(0, escape_1.
|
|
163
|
-
` source := ${(0, escape_1.
|
|
164
|
-
` shadow := ${(0, escape_1.
|
|
165
|
-
` temp := ${(0, escape_1.
|
|
166
|
-
` "from" := ${(0, escape_1.
|
|
167
|
-
` "to" := ${(0, escape_1.
|
|
168
|
-
` "seq" := ${seq}
|
|
182
|
+
` schema := ${(0, escape_1.lit)(opts.model.schema, escape_1.VARCHAR)}`,
|
|
183
|
+
` source := ${(0, escape_1.lit)(opts.source, escape_1.VARCHAR)}`,
|
|
184
|
+
` shadow := ${(0, escape_1.lit)(opts.parser.shadow, escape_1.VARCHAR)}`,
|
|
185
|
+
` temp := ${(0, escape_1.lit)(opts.model.temp, escape_1.VARCHAR)}`,
|
|
186
|
+
` "from" := ${(0, escape_1.lit)(opts.from, escape_1.VARCHAR)}`,
|
|
187
|
+
` "to" := ${(0, escape_1.lit)(opts.to, escape_1.VARCHAR)}`,
|
|
188
|
+
` "seq" := ${(0, escape_1.lit)(opts.seq, escape_1.VARCHAR)}`,
|
|
169
189
|
];
|
|
170
190
|
return [
|
|
171
191
|
(0, notice_1.notice)(`RESTORE SEQUENCE OF FIELD ${opts.to} FROM MODEL ${opts.model.model}`),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":";;AAQA,kEAoCC;AASD,
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {FieldOption, ModelOptions} from "@prisma-psm/core";
|
|
2
|
-
import {oid,
|
|
2
|
+
import {oid, lit, VARCHAR} from "../../utils/escape";
|
|
3
3
|
import { noTab } from "../../utils/tabs";
|
|
4
4
|
import { PostgresParserOptions } from "../def";
|
|
5
|
+
import {notice} from "../notice";
|
|
5
6
|
import {createRevision} from "../sys";
|
|
6
7
|
import {migrationHash} from "../../utils/sha";
|
|
7
|
-
import {notice} from "../notice";
|
|
8
8
|
|
|
9
9
|
export function createFunctionRestoreSerial( opts: PostgresParserOptions) {
|
|
10
10
|
const sys = oid( opts.sys);
|
|
@@ -51,15 +51,15 @@ export interface RestoreOptions{
|
|
|
51
51
|
parser:PostgresParserOptions
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
export function restoreBackupSQL(opts:RestoreOptions ):
|
|
54
|
+
export function restoreBackupSQL(opts:RestoreOptions ): {
|
|
55
|
+
data:string[]
|
|
56
|
+
registry:string[]
|
|
57
|
+
}{
|
|
55
58
|
const schema = oid(opts.model.schema);
|
|
56
59
|
const source = oid(opts.source);
|
|
57
60
|
const shadow = oid(opts.parser.shadow);
|
|
58
|
-
const table
|
|
59
|
-
const temp
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
const table = oid(opts.model.name);
|
|
62
|
+
const temp = oid(opts.model.temp);
|
|
63
63
|
|
|
64
64
|
if( opts.model.psm?.backup?.skip ) return null as any;
|
|
65
65
|
|
|
@@ -69,12 +69,15 @@ export function restoreBackupSQL(opts:RestoreOptions ): string[] {
|
|
|
69
69
|
;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
|
|
72
73
|
const columns = opts.model.fields.filter( filter )
|
|
73
74
|
.map( value => ` ${oid(value.name)}` )
|
|
74
75
|
.join(", ")
|
|
75
76
|
;
|
|
76
77
|
|
|
78
|
+
const DEFAULT_WHEN = `true`;
|
|
77
79
|
const DEFAULT_QUERY = `select * from ${schema}.${source}`;
|
|
80
|
+
const DEFAULT_SOURCE_CHECKER = `select 1 from pg_catalog.pg_tables t where t.tablename = ${lit(opts.model.name)} and t.schemaname = ${lit(opts.model.schema)}`;
|
|
78
81
|
const DEFAULT_RESOLVER = opts.model.fields.filter( filter )
|
|
79
82
|
.map( value => {
|
|
80
83
|
return ` ${oid(value.dbName||value.name)}`;
|
|
@@ -82,6 +85,9 @@ export function restoreBackupSQL(opts:RestoreOptions ): string[] {
|
|
|
82
85
|
.join(", ")
|
|
83
86
|
;
|
|
84
87
|
|
|
88
|
+
let source_exists = DEFAULT_SOURCE_CHECKER;
|
|
89
|
+
let when = DEFAULT_WHEN;
|
|
90
|
+
|
|
85
91
|
const revision_resolver = opts.model.fields.filter( filter )
|
|
86
92
|
.map( field => {
|
|
87
93
|
|
|
@@ -94,9 +100,15 @@ export function restoreBackupSQL(opts:RestoreOptions ): string[] {
|
|
|
94
100
|
|
|
95
101
|
let revision_query = DEFAULT_QUERY;
|
|
96
102
|
const expression = opts.model.psm?.backup?.rev?.expression;
|
|
103
|
+
const exists = opts.model.psm?.backup?.rev?.exists;
|
|
104
|
+
|
|
105
|
+
if( !!exists?.length ){
|
|
106
|
+
source_exists = exists;
|
|
107
|
+
}
|
|
108
|
+
|
|
97
109
|
if( opts.model.psm?.backup?.rev?.from === "query"
|
|
98
110
|
&& !!expression
|
|
99
|
-
) revision_query = expression
|
|
111
|
+
) revision_query = expression;
|
|
100
112
|
|
|
101
113
|
else if( opts.model.psm?.backup?.rev?.from === "query:linked"
|
|
102
114
|
&& !!expression
|
|
@@ -111,7 +123,7 @@ export function restoreBackupSQL(opts:RestoreOptions ): string[] {
|
|
|
111
123
|
const sys = oid( opts.parser.sys );
|
|
112
124
|
let revision= "null";
|
|
113
125
|
const relation = `${schema}.${table}`;
|
|
114
|
-
if( opts.model.psm?.backup?.rev?.version ) revision =
|
|
126
|
+
if( opts.model.psm?.backup?.rev?.version ) revision = lit( opts.model.psm?.backup?.rev.version );
|
|
115
127
|
|
|
116
128
|
let always_query = DEFAULT_QUERY;
|
|
117
129
|
let always_resolver = DEFAULT_RESOLVER;
|
|
@@ -121,12 +133,22 @@ export function restoreBackupSQL(opts:RestoreOptions ): string[] {
|
|
|
121
133
|
revision = `always-${opts.parser.migration}`;
|
|
122
134
|
}
|
|
123
135
|
|
|
124
|
-
const next
|
|
136
|
+
const next =`
|
|
125
137
|
do $$
|
|
126
138
|
declare
|
|
127
139
|
_revision character varying := ${revision}::character varying;
|
|
128
|
-
_relation character varying := ${
|
|
140
|
+
_relation character varying := ${lit(relation)}::character varying;
|
|
141
|
+
___whenX1025475 boolean;
|
|
129
142
|
begin
|
|
143
|
+
if not exists( ${source_exists} ) then
|
|
144
|
+
return;
|
|
145
|
+
end if;
|
|
146
|
+
|
|
147
|
+
___whenX1025475 := (${when});
|
|
148
|
+
if not coalesce( ___whenX1025475, true ) then
|
|
149
|
+
return;
|
|
150
|
+
end if;
|
|
151
|
+
|
|
130
152
|
if _revision is not null and not exists(
|
|
131
153
|
select 1
|
|
132
154
|
from ${sys}.revision r
|
|
@@ -150,13 +172,6 @@ export function restoreBackupSQL(opts:RestoreOptions ): string[] {
|
|
|
150
172
|
else
|
|
151
173
|
raise exception 'cannot restore revision';
|
|
152
174
|
end if;
|
|
153
|
-
|
|
154
|
-
${ createRevision( opts.parser, {
|
|
155
|
-
revision: opts.model.psm?.backup?.rev?.version,
|
|
156
|
-
relation: relation,
|
|
157
|
-
hash: migrationHash( opts.parser.migration, `restore:data-${relation}`),
|
|
158
|
-
operation: `restore:data-${relation}`
|
|
159
|
-
}).join("\n")}
|
|
160
175
|
end;
|
|
161
176
|
$$;
|
|
162
177
|
`.split("\n")
|
|
@@ -167,11 +182,23 @@ export function restoreBackupSQL(opts:RestoreOptions ): string[] {
|
|
|
167
182
|
})
|
|
168
183
|
.join("\n");
|
|
169
184
|
|
|
170
|
-
return
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
185
|
+
return {
|
|
186
|
+
data: [
|
|
187
|
+
notice( `RESTORE BACKUP FOR MODEL ${opts.model.model}` ),
|
|
188
|
+
next,
|
|
189
|
+
notice( `RESTORE BACKUP FOR MODEL ${opts.model.model} OK` ),
|
|
190
|
+
],
|
|
191
|
+
registry: [
|
|
192
|
+
notice( `REGISTRY RESTORE OF BACKUP FOR MODEL ${opts.model.model}` ),
|
|
193
|
+
createRevision( opts.parser, {
|
|
194
|
+
revision: opts.model.psm?.backup?.rev?.version,
|
|
195
|
+
relation: relation,
|
|
196
|
+
hash: migrationHash( opts.parser.migration, `restore:data-${relation}`),
|
|
197
|
+
operation: `restore:data-${relation}`
|
|
198
|
+
}).join("\n"),
|
|
199
|
+
notice( `REGISTRY RESTORE OF BACKUP FOR MODEL ${opts.model.model} OK` ),
|
|
200
|
+
],
|
|
201
|
+
}
|
|
175
202
|
}
|
|
176
203
|
|
|
177
204
|
export interface RestoreSerialOptions extends RestoreOptions {
|
|
@@ -180,16 +207,14 @@ export interface RestoreSerialOptions extends RestoreOptions {
|
|
|
180
207
|
seq?:string
|
|
181
208
|
}
|
|
182
209
|
export function restoreSerialSQL( opts:RestoreSerialOptions) {
|
|
183
|
-
let seq = "null";
|
|
184
|
-
if( !!opts.seq ) seq = val( opts.seq );
|
|
185
210
|
const args = [
|
|
186
|
-
` schema := ${
|
|
187
|
-
` source := ${
|
|
188
|
-
` shadow := ${
|
|
189
|
-
` temp := ${
|
|
190
|
-
` "from" := ${
|
|
191
|
-
` "to" := ${
|
|
192
|
-
` "seq" := ${seq}
|
|
211
|
+
` schema := ${lit(opts.model.schema, VARCHAR)}`,
|
|
212
|
+
` source := ${lit(opts.source, VARCHAR)}`,
|
|
213
|
+
` shadow := ${lit(opts.parser.shadow, VARCHAR)}`,
|
|
214
|
+
` temp := ${lit(opts.model.temp, VARCHAR)}`,
|
|
215
|
+
` "from" := ${lit(opts.from, VARCHAR)}`,
|
|
216
|
+
` "to" := ${lit(opts.to, VARCHAR)}`,
|
|
217
|
+
` "seq" := ${lit( opts.seq, VARCHAR)}`,
|
|
193
218
|
];
|
|
194
219
|
return [
|
|
195
220
|
notice( `RESTORE SEQUENCE OF FIELD ${opts.to} FROM MODEL ${opts.model.model}`),
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { ModelOptions } from "@prisma-psm/core";
|
|
2
2
|
import { PostgresParserOptions } from "../def";
|
|
3
3
|
export declare function backupParser(model: ModelOptions, parser: PostgresParserOptions): {
|
|
4
|
-
restore_backup: () =>
|
|
4
|
+
restore_backup: () => {
|
|
5
|
+
data: string[];
|
|
6
|
+
registry: string[];
|
|
7
|
+
};
|
|
5
8
|
restore_serial: () => string[];
|
|
6
9
|
};
|
|
7
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,QAAQ,CAAC;AAI7C,wBAAgB,YAAY,CAAE,KAAK,EAAC,YAAY,EAAE,MAAM,EAAC,qBAAqB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,QAAQ,CAAC;AAI7C,wBAAgB,YAAY,CAAE,KAAK,EAAC,YAAY,EAAE,MAAM,EAAC,qBAAqB;;;;;;EAwB7E"}
|