prostgles-server 4.2.604 → 4.2.605
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/TableConfig/getTableTriggerQueries.d.ts +5 -0
- package/dist/TableConfig/getTableTriggerQueries.d.ts.map +1 -0
- package/dist/TableConfig/getTableTriggerQueries.js +61 -0
- package/dist/TableConfig/getTableTriggerQueries.js.map +1 -0
- package/dist/TableConfig/getTableTriggerQueries.spec.d.ts +2 -0
- package/dist/TableConfig/getTableTriggerQueries.spec.d.ts.map +1 -0
- package/dist/TableConfig/getTableTriggerQueries.spec.js +56 -0
- package/dist/TableConfig/getTableTriggerQueries.spec.js.map +1 -0
- package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
- package/dist/TableConfig/initTableConfig.js +2 -57
- package/dist/TableConfig/initTableConfig.js.map +1 -1
- package/lib/TableConfig/getTableTriggerQueries.spec.ts +77 -0
- package/lib/TableConfig/getTableTriggerQueries.ts +74 -0
- package/lib/TableConfig/initTableConfig.ts +2 -67
- package/package.json +1 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DB } from "../initProstgles";
|
|
2
|
+
import type { TableConfig } from "./TableConfigTypes";
|
|
3
|
+
/** Reconcile only triggers owned by tableConfig; preserve manually created triggers. */
|
|
4
|
+
export declare const getTableTriggerQueries: (db: DB, tableName: string, tableConfig: TableConfig[string], asName: (name: string) => string) => Promise<string[]>;
|
|
5
|
+
//# sourceMappingURL=getTableTriggerQueries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTableTriggerQueries.d.ts","sourceRoot":"","sources":["../../lib/TableConfig/getTableTriggerQueries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,GACjC,IAAI,EAAE,EACN,WAAW,MAAM,EACjB,aAAa,WAAW,CAAC,MAAM,CAAC,EAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,KAC/B,OAAO,CAAC,MAAM,EAAE,CA4DlB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTableTriggerQueries = void 0;
|
|
4
|
+
const pg_promise_1 = require("pg-promise");
|
|
5
|
+
const md5_1 = require("prostgles-types/dist/md5");
|
|
6
|
+
const MANAGED_TRIGGER_PREFIX = "prostgles.tableConfig:";
|
|
7
|
+
/** Reconcile only triggers owned by tableConfig; preserve manually created triggers. */
|
|
8
|
+
const getTableTriggerQueries = async (db, tableName, tableConfig, asName) => {
|
|
9
|
+
const tableIdent = asName(tableName);
|
|
10
|
+
const existing = await db.any(`
|
|
11
|
+
SELECT t.tgname AS name, obj_description(t.oid, 'pg_trigger') AS comment
|
|
12
|
+
FROM pg_trigger t
|
|
13
|
+
WHERE t.tgrelid = to_regclass($1) AND NOT t.tgisinternal
|
|
14
|
+
`, [tableIdent]);
|
|
15
|
+
const queries = [];
|
|
16
|
+
const desired = new Set();
|
|
17
|
+
const isDropped = tableConfig.dropIfExists || tableConfig.dropIfExistsCascade;
|
|
18
|
+
for (const [functionName, trigger] of Object.entries(tableConfig.triggers ?? {})) {
|
|
19
|
+
const functionIdent = asName(functionName);
|
|
20
|
+
let functionAdded = false;
|
|
21
|
+
for (const action of trigger.actions) {
|
|
22
|
+
const name = `${functionName}_${action}`;
|
|
23
|
+
desired.add(name);
|
|
24
|
+
const triggerIdent = asName(name);
|
|
25
|
+
const transitionTables = trigger.forEach === "row"
|
|
26
|
+
? ""
|
|
27
|
+
: [
|
|
28
|
+
"REFERENCING",
|
|
29
|
+
action !== "delete" ? "NEW TABLE AS new_table" : "",
|
|
30
|
+
action !== "insert" ? "OLD TABLE AS old_table" : "",
|
|
31
|
+
].join(" ");
|
|
32
|
+
const definition = `CREATE TRIGGER ${triggerIdent}
|
|
33
|
+
${trigger.type} ${action} ON ${tableIdent}
|
|
34
|
+
${transitionTables} FOR EACH ${trigger.forEach}
|
|
35
|
+
EXECUTE FUNCTION ${functionIdent}();`;
|
|
36
|
+
const comment = MANAGED_TRIGGER_PREFIX + (0, md5_1.md5)(definition + trigger.query);
|
|
37
|
+
const previous = existing.find((entry) => entry.name === name);
|
|
38
|
+
if (!isDropped && previous?.comment === comment)
|
|
39
|
+
continue;
|
|
40
|
+
if (!functionAdded) {
|
|
41
|
+
queries.push(`CREATE OR REPLACE FUNCTION ${functionIdent}()
|
|
42
|
+
RETURNS trigger LANGUAGE plpgsql AS ${pg_promise_1.as.text(trigger.query)};`);
|
|
43
|
+
functionAdded = true;
|
|
44
|
+
}
|
|
45
|
+
queries.push(`DROP TRIGGER IF EXISTS ${triggerIdent} ON ${tableIdent};`);
|
|
46
|
+
queries.push(definition);
|
|
47
|
+
queries.push(`COMMENT ON TRIGGER ${triggerIdent} ON ${tableIdent} IS ${pg_promise_1.as.text(comment)};`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (!isDropped) {
|
|
51
|
+
for (const trigger of existing) {
|
|
52
|
+
if (trigger.comment?.startsWith(MANAGED_TRIGGER_PREFIX) &&
|
|
53
|
+
!desired.has(trigger.name)) {
|
|
54
|
+
queries.push(`DROP TRIGGER ${asName(trigger.name)} ON ${tableIdent};`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return queries;
|
|
59
|
+
};
|
|
60
|
+
exports.getTableTriggerQueries = getTableTriggerQueries;
|
|
61
|
+
//# sourceMappingURL=getTableTriggerQueries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTableTriggerQueries.js","sourceRoot":"","sources":["../../lib/TableConfig/getTableTriggerQueries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTableTriggerQueries.spec.d.ts","sourceRoot":"","sources":["../../lib/TableConfig/getTableTriggerQueries.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
7
|
+
const node_test_1 = __importDefault(require("node:test"));
|
|
8
|
+
const prostgles_types_1 = require("prostgles-types");
|
|
9
|
+
const getTableTriggerQueries_1 = require("./getTableTriggerQueries");
|
|
10
|
+
void (0, node_test_1.default)("trigger configuration quotes names and bodies and preserves unmanaged triggers", async () => {
|
|
11
|
+
const db = {
|
|
12
|
+
any: () => Promise.resolve([
|
|
13
|
+
{ name: "manual", comment: null },
|
|
14
|
+
{ name: "old_insert", comment: "prostgles.tableConfig:old" },
|
|
15
|
+
]),
|
|
16
|
+
};
|
|
17
|
+
const queries = await (0, getTableTriggerQueries_1.getTableTriggerQueries)(db, "Odd ' table", {
|
|
18
|
+
triggers: {
|
|
19
|
+
audit: {
|
|
20
|
+
type: "after",
|
|
21
|
+
actions: ["insert"],
|
|
22
|
+
forEach: "row",
|
|
23
|
+
query: "BEGIN RAISE NOTICE '$$'; RETURN NULL; END;",
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
}, prostgles_types_1.asName);
|
|
27
|
+
strict_1.default.ok(queries.some((query) => query.includes('ON "Odd \' table"')));
|
|
28
|
+
strict_1.default.ok(queries.some((query) => query.includes("AS 'BEGIN RAISE NOTICE ''$$''; RETURN NULL; END;';")));
|
|
29
|
+
strict_1.default.ok(queries.some((query) => query.includes('DROP TRIGGER "old_insert"')));
|
|
30
|
+
strict_1.default.ok(!queries.some((query) => query.includes('DROP TRIGGER "manual"')));
|
|
31
|
+
});
|
|
32
|
+
void (0, node_test_1.default)("unchanged triggers do not produce DDL; changed bodies replace them", async () => {
|
|
33
|
+
const trigger = {
|
|
34
|
+
type: "after",
|
|
35
|
+
actions: ["update"],
|
|
36
|
+
forEach: "row",
|
|
37
|
+
query: "BEGIN RETURN NULL; END;",
|
|
38
|
+
};
|
|
39
|
+
const config = {
|
|
40
|
+
triggers: { audit: { ...trigger, actions: [...trigger.actions] } },
|
|
41
|
+
};
|
|
42
|
+
const first = await (0, getTableTriggerQueries_1.getTableTriggerQueries)({ any: () => Promise.resolve([]) }, "records", config, prostgles_types_1.asName);
|
|
43
|
+
const commentQuery = first.find((query) => query.startsWith("COMMENT ON"));
|
|
44
|
+
const comment = commentQuery.split(" IS '")[1].slice(0, -2);
|
|
45
|
+
const db = {
|
|
46
|
+
any: () => Promise.resolve([{ name: "audit_update", comment }]),
|
|
47
|
+
};
|
|
48
|
+
strict_1.default.deepEqual(await (0, getTableTriggerQueries_1.getTableTriggerQueries)(db, "records", config, prostgles_types_1.asName), []);
|
|
49
|
+
config.triggers.audit.query =
|
|
50
|
+
"BEGIN RAISE NOTICE 'changed'; RETURN NULL; END;";
|
|
51
|
+
strict_1.default.ok((await (0, getTableTriggerQueries_1.getTableTriggerQueries)(db, "records", config, prostgles_types_1.asName)).some((query) => query.startsWith("CREATE OR REPLACE FUNCTION")));
|
|
52
|
+
strict_1.default.deepEqual(await (0, getTableTriggerQueries_1.getTableTriggerQueries)(db, "records", {}, prostgles_types_1.asName), [
|
|
53
|
+
'DROP TRIGGER "audit_update" ON "records";',
|
|
54
|
+
]);
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=getTableTriggerQueries.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTableTriggerQueries.spec.js","sourceRoot":"","sources":["../../lib/TableConfig/getTableTriggerQueries.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initTableConfig.d.ts","sourceRoot":"","sources":["../../lib/TableConfig/initTableConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initTableConfig.d.ts","sourceRoot":"","sources":["../../lib/TableConfig/initTableConfig.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,eAAO,MAAM,eAAe,GAAmB,MAAM,iBAAiB,uBAiRrE,CAAC"}
|
|
@@ -7,6 +7,7 @@ const fetchTableConstraints_1 = require("./fetchTableConstraints");
|
|
|
7
7
|
const getConstraintDefinitionQueries_1 = require("./getConstraintDefinitionQueries");
|
|
8
8
|
const getFutureTableSchema_1 = require("./getFutureTableSchema");
|
|
9
9
|
const getTableColumnQueries_1 = require("./getTableColumnQueries");
|
|
10
|
+
const getTableTriggerQueries_1 = require("./getTableTriggerQueries");
|
|
10
11
|
const getIndexesQueries_1 = require("./indexes/getIndexesQueries");
|
|
11
12
|
const runMigrations_1 = require("./runMigrations");
|
|
12
13
|
const initTableConfig = async function () {
|
|
@@ -191,63 +192,7 @@ const initTableConfig = async function () {
|
|
|
191
192
|
}
|
|
192
193
|
const indexQueries = await (0, getIndexesQueries_1.getIndexesQueries)(this.db, tableName, tableConf);
|
|
193
194
|
queries.push(...indexQueries);
|
|
194
|
-
|
|
195
|
-
if (triggers) {
|
|
196
|
-
const isDropped = dropIfExists || dropIfExistsCascade;
|
|
197
|
-
const existingTriggers = await this.db.any(`
|
|
198
|
-
SELECT event_object_table
|
|
199
|
-
,trigger_name
|
|
200
|
-
FROM information_schema.triggers
|
|
201
|
-
WHERE event_object_table = \${tableName}
|
|
202
|
-
ORDER BY event_object_table
|
|
203
|
-
`, { tableName });
|
|
204
|
-
// const existingTriggerFuncs = await this.dbo.sql!(`
|
|
205
|
-
// SELECT p.oid,proname,prosrc,u.usename
|
|
206
|
-
// FROM pg_proc p
|
|
207
|
-
// JOIN pg_user u ON u.usesysid = p.proowner
|
|
208
|
-
// WHERE prorettype = 2279;
|
|
209
|
-
// `, {}, { returnType: "rows" }) as { proname: string }[];
|
|
210
|
-
Object.entries(triggers).forEach(([triggerFuncName, trigger]) => {
|
|
211
|
-
const funcNameParsed = asName(triggerFuncName);
|
|
212
|
-
let addedFunc = false;
|
|
213
|
-
const addFuncDef = () => {
|
|
214
|
-
if (addedFunc)
|
|
215
|
-
return;
|
|
216
|
-
addedFunc = true;
|
|
217
|
-
queries.push(`
|
|
218
|
-
CREATE OR REPLACE FUNCTION ${funcNameParsed}()
|
|
219
|
-
RETURNS trigger
|
|
220
|
-
LANGUAGE plpgsql
|
|
221
|
-
AS
|
|
222
|
-
$$
|
|
223
|
-
|
|
224
|
-
${trigger.query}
|
|
225
|
-
|
|
226
|
-
$$;
|
|
227
|
-
`);
|
|
228
|
-
};
|
|
229
|
-
trigger.actions.forEach((action) => {
|
|
230
|
-
const triggerActionName = triggerFuncName + "_" + action;
|
|
231
|
-
const triggerActionNameParsed = asName(triggerActionName);
|
|
232
|
-
if (isDropped) {
|
|
233
|
-
queries.push(`DROP TRIGGER IF EXISTS ${triggerActionNameParsed} ON ${tableName};`);
|
|
234
|
-
}
|
|
235
|
-
if (isDropped || !existingTriggers.some((t) => t.trigger_name === triggerActionName)) {
|
|
236
|
-
addFuncDef();
|
|
237
|
-
const newTableName = action !== "delete" ? "NEW TABLE AS new_table" : "";
|
|
238
|
-
const oldTableName = action !== "insert" ? "OLD TABLE AS old_table" : "";
|
|
239
|
-
const transitionTables = trigger.forEach === "row" ? "" : `REFERENCING ${newTableName} ${oldTableName}`;
|
|
240
|
-
queries.push(`
|
|
241
|
-
CREATE TRIGGER ${triggerActionNameParsed}
|
|
242
|
-
${trigger.type} ${action} ON ${tableName}
|
|
243
|
-
${transitionTables}
|
|
244
|
-
FOR EACH ${trigger.forEach}
|
|
245
|
-
EXECUTE PROCEDURE ${funcNameParsed}();
|
|
246
|
-
`);
|
|
247
|
-
}
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
}
|
|
195
|
+
queries.push(...(await (0, getTableTriggerQueries_1.getTableTriggerQueries)(this.db, tableName, tableConf, asName)));
|
|
251
196
|
}
|
|
252
197
|
if (queries.length) {
|
|
253
198
|
const q = makeQuery(queries);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initTableConfig.js","sourceRoot":"","sources":["../../lib/TableConfig/initTableConfig.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"initTableConfig.js","sourceRoot":"","sources":["../../lib/TableConfig/initTableConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { asName } from "prostgles-types";
|
|
4
|
+
import type { DB } from "../initProstgles";
|
|
5
|
+
import { getTableTriggerQueries } from "./getTableTriggerQueries";
|
|
6
|
+
|
|
7
|
+
void test("trigger configuration quotes names and bodies and preserves unmanaged triggers", async () => {
|
|
8
|
+
const db = {
|
|
9
|
+
any: () =>
|
|
10
|
+
Promise.resolve([
|
|
11
|
+
{ name: "manual", comment: null },
|
|
12
|
+
{ name: "old_insert", comment: "prostgles.tableConfig:old" },
|
|
13
|
+
]),
|
|
14
|
+
} as unknown as DB;
|
|
15
|
+
const queries = await getTableTriggerQueries(
|
|
16
|
+
db,
|
|
17
|
+
"Odd ' table",
|
|
18
|
+
{
|
|
19
|
+
triggers: {
|
|
20
|
+
audit: {
|
|
21
|
+
type: "after",
|
|
22
|
+
actions: ["insert"],
|
|
23
|
+
forEach: "row",
|
|
24
|
+
query: "BEGIN RAISE NOTICE '$$'; RETURN NULL; END;",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
asName,
|
|
29
|
+
);
|
|
30
|
+
assert.ok(queries.some((query) => query.includes('ON "Odd \' table"')));
|
|
31
|
+
assert.ok(
|
|
32
|
+
queries.some((query) =>
|
|
33
|
+
query.includes("AS 'BEGIN RAISE NOTICE ''$$''; RETURN NULL; END;';"),
|
|
34
|
+
),
|
|
35
|
+
);
|
|
36
|
+
assert.ok(
|
|
37
|
+
queries.some((query) => query.includes('DROP TRIGGER "old_insert"')),
|
|
38
|
+
);
|
|
39
|
+
assert.ok(!queries.some((query) => query.includes('DROP TRIGGER "manual"')));
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
void test("unchanged triggers do not produce DDL; changed bodies replace them", async () => {
|
|
43
|
+
const trigger = {
|
|
44
|
+
type: "after",
|
|
45
|
+
actions: ["update"],
|
|
46
|
+
forEach: "row",
|
|
47
|
+
query: "BEGIN RETURN NULL; END;" as string,
|
|
48
|
+
} as const;
|
|
49
|
+
const config = {
|
|
50
|
+
triggers: { audit: { ...trigger, actions: [...trigger.actions] } },
|
|
51
|
+
};
|
|
52
|
+
const first = await getTableTriggerQueries(
|
|
53
|
+
{ any: () => Promise.resolve([]) } as unknown as DB,
|
|
54
|
+
"records",
|
|
55
|
+
config,
|
|
56
|
+
asName,
|
|
57
|
+
);
|
|
58
|
+
const commentQuery = first.find((query) => query.startsWith("COMMENT ON"))!;
|
|
59
|
+
const comment = commentQuery.split(" IS '")[1]!.slice(0, -2);
|
|
60
|
+
const db = {
|
|
61
|
+
any: () => Promise.resolve([{ name: "audit_update", comment }]),
|
|
62
|
+
} as unknown as DB;
|
|
63
|
+
assert.deepEqual(
|
|
64
|
+
await getTableTriggerQueries(db, "records", config, asName),
|
|
65
|
+
[],
|
|
66
|
+
);
|
|
67
|
+
config.triggers.audit.query =
|
|
68
|
+
"BEGIN RAISE NOTICE 'changed'; RETURN NULL; END;";
|
|
69
|
+
assert.ok(
|
|
70
|
+
(await getTableTriggerQueries(db, "records", config, asName)).some(
|
|
71
|
+
(query) => query.startsWith("CREATE OR REPLACE FUNCTION"),
|
|
72
|
+
),
|
|
73
|
+
);
|
|
74
|
+
assert.deepEqual(await getTableTriggerQueries(db, "records", {}, asName), [
|
|
75
|
+
'DROP TRIGGER "audit_update" ON "records";',
|
|
76
|
+
]);
|
|
77
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { as } from "pg-promise";
|
|
2
|
+
import { md5 } from "prostgles-types/dist/md5";
|
|
3
|
+
import type { DB } from "../initProstgles";
|
|
4
|
+
import type { TableConfig } from "./TableConfigTypes";
|
|
5
|
+
|
|
6
|
+
const MANAGED_TRIGGER_PREFIX = "prostgles.tableConfig:";
|
|
7
|
+
|
|
8
|
+
/** Reconcile only triggers owned by tableConfig; preserve manually created triggers. */
|
|
9
|
+
export const getTableTriggerQueries = async (
|
|
10
|
+
db: DB,
|
|
11
|
+
tableName: string,
|
|
12
|
+
tableConfig: TableConfig[string],
|
|
13
|
+
asName: (name: string) => string,
|
|
14
|
+
): Promise<string[]> => {
|
|
15
|
+
const tableIdent = asName(tableName);
|
|
16
|
+
const existing = await db.any<{ name: string; comment: string | null }>(
|
|
17
|
+
`
|
|
18
|
+
SELECT t.tgname AS name, obj_description(t.oid, 'pg_trigger') AS comment
|
|
19
|
+
FROM pg_trigger t
|
|
20
|
+
WHERE t.tgrelid = to_regclass($1) AND NOT t.tgisinternal
|
|
21
|
+
`,
|
|
22
|
+
[tableIdent],
|
|
23
|
+
);
|
|
24
|
+
const queries: string[] = [];
|
|
25
|
+
const desired = new Set<string>();
|
|
26
|
+
const isDropped = tableConfig.dropIfExists || tableConfig.dropIfExistsCascade;
|
|
27
|
+
for (const [functionName, trigger] of Object.entries(
|
|
28
|
+
tableConfig.triggers ?? {},
|
|
29
|
+
)) {
|
|
30
|
+
const functionIdent = asName(functionName);
|
|
31
|
+
let functionAdded = false;
|
|
32
|
+
for (const action of trigger.actions) {
|
|
33
|
+
const name = `${functionName}_${action}`;
|
|
34
|
+
desired.add(name);
|
|
35
|
+
const triggerIdent = asName(name);
|
|
36
|
+
const transitionTables =
|
|
37
|
+
trigger.forEach === "row"
|
|
38
|
+
? ""
|
|
39
|
+
: [
|
|
40
|
+
"REFERENCING",
|
|
41
|
+
action !== "delete" ? "NEW TABLE AS new_table" : "",
|
|
42
|
+
action !== "insert" ? "OLD TABLE AS old_table" : "",
|
|
43
|
+
].join(" ");
|
|
44
|
+
const definition = `CREATE TRIGGER ${triggerIdent}
|
|
45
|
+
${trigger.type} ${action} ON ${tableIdent}
|
|
46
|
+
${transitionTables} FOR EACH ${trigger.forEach}
|
|
47
|
+
EXECUTE FUNCTION ${functionIdent}();`;
|
|
48
|
+
const comment = MANAGED_TRIGGER_PREFIX + md5(definition + trigger.query);
|
|
49
|
+
const previous = existing.find((entry) => entry.name === name);
|
|
50
|
+
if (!isDropped && previous?.comment === comment) continue;
|
|
51
|
+
if (!functionAdded) {
|
|
52
|
+
queries.push(`CREATE OR REPLACE FUNCTION ${functionIdent}()
|
|
53
|
+
RETURNS trigger LANGUAGE plpgsql AS ${as.text(trigger.query)};`);
|
|
54
|
+
functionAdded = true;
|
|
55
|
+
}
|
|
56
|
+
queries.push(`DROP TRIGGER IF EXISTS ${triggerIdent} ON ${tableIdent};`);
|
|
57
|
+
queries.push(definition);
|
|
58
|
+
queries.push(
|
|
59
|
+
`COMMENT ON TRIGGER ${triggerIdent} ON ${tableIdent} IS ${as.text(comment)};`,
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (!isDropped) {
|
|
64
|
+
for (const trigger of existing) {
|
|
65
|
+
if (
|
|
66
|
+
trigger.comment?.startsWith(MANAGED_TRIGGER_PREFIX) &&
|
|
67
|
+
!desired.has(trigger.name)
|
|
68
|
+
) {
|
|
69
|
+
queries.push(`DROP TRIGGER ${asName(trigger.name)} ON ${tableIdent};`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return queries;
|
|
74
|
+
};
|
|
@@ -9,6 +9,7 @@ import { fetchTableConstraints } from "./fetchTableConstraints";
|
|
|
9
9
|
import { getConstraintDefinitionQueries } from "./getConstraintDefinitionQueries";
|
|
10
10
|
import { getFutureTableSchema } from "./getFutureTableSchema";
|
|
11
11
|
import { getTableColumnQueries } from "./getTableColumnQueries";
|
|
12
|
+
import { getTableTriggerQueries } from "./getTableTriggerQueries";
|
|
12
13
|
import { getIndexesQueries } from "./indexes/getIndexesQueries";
|
|
13
14
|
import { runMigrations } from "./runMigrations";
|
|
14
15
|
import type { TableConfigurator } from "./TableConfigurator";
|
|
@@ -234,73 +235,7 @@ export const initTableConfig = async function (this: TableConfigurator) {
|
|
|
234
235
|
const indexQueries = await getIndexesQueries(this.db, tableName, tableConf);
|
|
235
236
|
queries.push(...indexQueries);
|
|
236
237
|
|
|
237
|
-
|
|
238
|
-
if (triggers) {
|
|
239
|
-
const isDropped = dropIfExists || dropIfExistsCascade;
|
|
240
|
-
|
|
241
|
-
const existingTriggers = await this.db.any<{ trigger_name: string }>(
|
|
242
|
-
`
|
|
243
|
-
SELECT event_object_table
|
|
244
|
-
,trigger_name
|
|
245
|
-
FROM information_schema.triggers
|
|
246
|
-
WHERE event_object_table = \${tableName}
|
|
247
|
-
ORDER BY event_object_table
|
|
248
|
-
`,
|
|
249
|
-
{ tableName },
|
|
250
|
-
);
|
|
251
|
-
|
|
252
|
-
// const existingTriggerFuncs = await this.dbo.sql!(`
|
|
253
|
-
// SELECT p.oid,proname,prosrc,u.usename
|
|
254
|
-
// FROM pg_proc p
|
|
255
|
-
// JOIN pg_user u ON u.usesysid = p.proowner
|
|
256
|
-
// WHERE prorettype = 2279;
|
|
257
|
-
// `, {}, { returnType: "rows" }) as { proname: string }[];
|
|
258
|
-
|
|
259
|
-
Object.entries(triggers).forEach(([triggerFuncName, trigger]) => {
|
|
260
|
-
const funcNameParsed = asName(triggerFuncName);
|
|
261
|
-
|
|
262
|
-
let addedFunc = false;
|
|
263
|
-
const addFuncDef = () => {
|
|
264
|
-
if (addedFunc) return;
|
|
265
|
-
addedFunc = true;
|
|
266
|
-
queries.push(`
|
|
267
|
-
CREATE OR REPLACE FUNCTION ${funcNameParsed}()
|
|
268
|
-
RETURNS trigger
|
|
269
|
-
LANGUAGE plpgsql
|
|
270
|
-
AS
|
|
271
|
-
$$
|
|
272
|
-
|
|
273
|
-
${trigger.query}
|
|
274
|
-
|
|
275
|
-
$$;
|
|
276
|
-
`);
|
|
277
|
-
};
|
|
278
|
-
|
|
279
|
-
trigger.actions.forEach((action) => {
|
|
280
|
-
const triggerActionName = triggerFuncName + "_" + action;
|
|
281
|
-
|
|
282
|
-
const triggerActionNameParsed = asName(triggerActionName);
|
|
283
|
-
if (isDropped) {
|
|
284
|
-
queries.push(`DROP TRIGGER IF EXISTS ${triggerActionNameParsed} ON ${tableName};`);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
if (isDropped || !existingTriggers.some((t) => t.trigger_name === triggerActionName)) {
|
|
288
|
-
addFuncDef();
|
|
289
|
-
const newTableName = action !== "delete" ? "NEW TABLE AS new_table" : "";
|
|
290
|
-
const oldTableName = action !== "insert" ? "OLD TABLE AS old_table" : "";
|
|
291
|
-
const transitionTables =
|
|
292
|
-
trigger.forEach === "row" ? "" : `REFERENCING ${newTableName} ${oldTableName}`;
|
|
293
|
-
queries.push(`
|
|
294
|
-
CREATE TRIGGER ${triggerActionNameParsed}
|
|
295
|
-
${trigger.type} ${action} ON ${tableName}
|
|
296
|
-
${transitionTables}
|
|
297
|
-
FOR EACH ${trigger.forEach}
|
|
298
|
-
EXECUTE PROCEDURE ${funcNameParsed}();
|
|
299
|
-
`);
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
});
|
|
303
|
-
}
|
|
238
|
+
queries.push(...(await getTableTriggerQueries(this.db, tableName, tableConf, asName)));
|
|
304
239
|
}
|
|
305
240
|
|
|
306
241
|
if (queries.length) {
|