prostgles-server 4.2.607 → 4.2.609
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/README.md +0 -29
- package/dist/Audit/AuditTable.d.ts +5 -4
- package/dist/Audit/AuditTable.d.ts.map +1 -1
- package/dist/Audit/AuditTable.js +1 -1
- package/dist/Audit/AuditTable.js.map +1 -1
- package/dist/Audit/AuditTypes.d.ts +5 -0
- package/dist/Audit/AuditTypes.d.ts.map +1 -1
- package/dist/Audit/getAuditTableConfig.d.ts +1 -6
- package/dist/Audit/getAuditTableConfig.d.ts.map +1 -1
- package/dist/Audit/getAuditTableConfig.js +21 -29
- package/dist/Audit/getAuditTableConfig.js.map +1 -1
- package/dist/Audit/getAuditTriggerConfig.d.ts +4 -0
- package/dist/Audit/getAuditTriggerConfig.d.ts.map +1 -0
- package/dist/Audit/getAuditTriggerConfig.js +47 -0
- package/dist/Audit/getAuditTriggerConfig.js.map +1 -0
- package/dist/Audit/parseAuditConfig.d.ts +3 -3
- package/dist/Audit/parseAuditConfig.d.ts.map +1 -1
- package/dist/Audit/parseAuditConfig.js +38 -93
- package/dist/Audit/parseAuditConfig.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateFile.d.ts +37 -2
- package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.js +1 -1
- package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
- package/dist/DboBuilder/getColumns.d.ts.map +1 -1
- package/dist/DboBuilder/getColumns.js +1 -1
- package/dist/DboBuilder/getColumns.js.map +1 -1
- package/dist/DboBuilder/schema/getTablesForSchemaPostgresSQL.d.ts +2 -2
- package/dist/Prostgles.d.ts +1 -2
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js +19 -3
- package/dist/Prostgles.js.map +1 -1
- package/dist/ProstglesTypes.d.ts +2 -2
- package/dist/ProstglesTypes.d.ts.map +1 -1
- package/dist/StorageClient/getFileTableConfig.d.ts +2 -4
- package/dist/StorageClient/getFileTableConfig.d.ts.map +1 -1
- package/dist/StorageClient/getFileTableConfig.js.map +1 -1
- package/dist/TableConfig/TableConfigTypes.d.ts +1 -1
- package/dist/TableConfig/TableConfigTypes.d.ts.map +1 -1
- package/dist/TableConfig/TableRowFromColumnDefinitions.d.ts +12 -0
- package/dist/TableConfig/TableRowFromColumnDefinitions.d.ts.map +1 -0
- package/dist/TableConfig/TableRowFromColumnDefinitions.js +3 -0
- package/dist/TableConfig/TableRowFromColumnDefinitions.js.map +1 -0
- package/dist/TableConfig/getTableTriggerQueries.d.ts +2 -2
- package/dist/TableConfig/getTableTriggerQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableTriggerQueries.js +8 -14
- package/dist/TableConfig/getTableTriggerQueries.js.map +1 -1
- package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
- package/dist/TableConfig/initTableConfig.js +0 -4
- package/dist/TableConfig/initTableConfig.js.map +1 -1
- package/dist/TableConfig/managedTriggerNames.d.ts.map +1 -1
- package/dist/TableConfig/managedTriggerNames.js +0 -1
- package/dist/TableConfig/managedTriggerNames.js.map +1 -1
- package/dist/TableConfig/syncTableTriggers.d.ts.map +1 -1
- package/dist/TableConfig/syncTableTriggers.js +10 -20
- package/dist/TableConfig/syncTableTriggers.js.map +1 -1
- package/dist/WebsocketAPI/getClientSchema.d.ts.map +1 -1
- package/dist/WebsocketAPI/getClientSchema.js +2 -1
- package/dist/WebsocketAPI/getClientSchema.js.map +1 -1
- package/dist/initProstgles.d.ts.map +1 -1
- package/dist/initProstgles.js +3 -0
- package/dist/initProstgles.js.map +1 -1
- package/lib/Audit/AuditTable.ts +4 -9
- package/lib/Audit/AuditTypes.ts +6 -0
- package/lib/Audit/getAuditTableConfig.ts +21 -41
- package/lib/Audit/getAuditTriggerConfig.ts +45 -0
- package/lib/Audit/parseAuditConfig.ts +44 -131
- package/lib/DboBuilder/ViewHandler/getInfo.ts +1 -0
- package/lib/DboBuilder/getColumns.ts +1 -0
- package/lib/Prostgles.ts +20 -4
- package/lib/ProstglesTypes.ts +2 -1
- package/lib/StorageClient/getFileTableConfig.ts +2 -13
- package/lib/TableConfig/TableConfigTypes.ts +1 -1
- package/lib/TableConfig/TableRowFromColumnDefinitions.ts +19 -0
- package/lib/TableConfig/getTableTriggerQueries.ts +16 -31
- package/lib/TableConfig/initTableConfig.ts +0 -3
- package/lib/TableConfig/managedTriggerNames.ts +0 -1
- package/lib/TableConfig/syncTableTriggers.ts +19 -33
- package/lib/WebsocketAPI/getClientSchema.ts +7 -1
- package/lib/initProstgles.ts +2 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getClientSchema.d.ts","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,gCAAgC,CAAC;AAGrF,wBAAsB,eAAe,CACnC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,eAAe,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"getClientSchema.d.ts","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,gCAAgC,CAAC;AAGrF,wBAAsB,eAAe,CACnC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,eAAe,GAAG,SAAS,yBAmHnC"}
|
|
@@ -33,8 +33,9 @@ async function getClientSchema(clientReq, scope) {
|
|
|
33
33
|
const { tables: rawTables = [] } = fullSchema ?? {};
|
|
34
34
|
const { tableSchemaErrors = {} } = fullSchema ?? {};
|
|
35
35
|
const { modifyClientSchema } = this.opts;
|
|
36
|
+
const resolvedAuditConfig = modifyClientSchema ? this.resolvedAuditConfig : undefined;
|
|
36
37
|
const tables = modifyClientSchema ?
|
|
37
|
-
await Promise.all(rawTables.map(async (t) => modifyClientSchema(t, this.dboBuilder.dboMap.get(t.name)?.config, userData)))
|
|
38
|
+
await Promise.all(rawTables.map(async (t) => modifyClientSchema(t, this.dboBuilder.dboMap.get(t.name)?.config, userData, resolvedAuditConfig)))
|
|
38
39
|
: rawTables;
|
|
39
40
|
const joinTables2 = [];
|
|
40
41
|
if (this.opts.joins) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getClientSchema.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientSchema.ts"],"names":[],"mappings":";;AAOA,
|
|
1
|
+
{"version":3,"file":"getClientSchema.js","sourceRoot":"","sources":["../../lib/WebsocketAPI/getClientSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initProstgles.d.ts","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"initProstgles.d.ts","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"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"}
|
package/dist/initProstgles.js
CHANGED
|
@@ -97,6 +97,9 @@ const initProstgles = async function (onReady, reason) {
|
|
|
97
97
|
finally {
|
|
98
98
|
this.preparingTableConfig = false;
|
|
99
99
|
}
|
|
100
|
+
await (0, syncTableTriggers_1.syncTableTriggers)(this);
|
|
101
|
+
if (this.opts.audit)
|
|
102
|
+
await this.rebuildDBO();
|
|
100
103
|
});
|
|
101
104
|
await this.tableConfigurator?.setTableOnMounts();
|
|
102
105
|
// onMount may create additional targets; validate joins against the completed schema.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initProstgles.js","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"initProstgles.js","sourceRoot":"","sources":["../lib/initProstgles.ts"],"names":[],"mappings":"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"}
|
package/lib/Audit/AuditTable.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import type { TableRowFromColumnDefinitions } from "../TableConfig/TableRowFromColumnDefinitions";
|
|
2
|
+
|
|
1
3
|
export const AUDIT_TABLE_COLUMN_DEFINITIONS = {
|
|
2
4
|
id: "BIGSERIAL PRIMARY KEY",
|
|
3
5
|
created_at: "TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp()",
|
|
4
6
|
schema_name: "TEXT NOT NULL",
|
|
5
7
|
table_name: "TEXT NOT NULL",
|
|
6
8
|
entity_type: "TEXT NOT NULL",
|
|
7
|
-
operation:
|
|
8
|
-
"TEXT NOT NULL CHECK (operation IN ('INSERT', 'UPDATE', 'DELETE'))",
|
|
9
|
+
operation: { enum: ["INSERT", "UPDATE", "DELETE"] },
|
|
9
10
|
old_id: "JSONB",
|
|
10
11
|
new_id: "JSONB",
|
|
11
12
|
old_row: "JSONB",
|
|
@@ -13,13 +14,7 @@ export const AUDIT_TABLE_COLUMN_DEFINITIONS = {
|
|
|
13
14
|
actor: "JSONB",
|
|
14
15
|
} as const;
|
|
15
16
|
|
|
16
|
-
export type AuditTableRow =
|
|
17
|
-
[K in keyof typeof AUDIT_TABLE_COLUMN_DEFINITIONS]: K extends "operation"
|
|
18
|
-
? "INSERT" | "UPDATE" | "DELETE"
|
|
19
|
-
: (typeof AUDIT_TABLE_COLUMN_DEFINITIONS)[K] extends "JSONB"
|
|
20
|
-
? Record<string, unknown> | null
|
|
21
|
-
: string;
|
|
22
|
-
};
|
|
17
|
+
export type AuditTableRow = TableRowFromColumnDefinitions<typeof AUDIT_TABLE_COLUMN_DEFINITIONS>;
|
|
23
18
|
export const AUDIT_TABLE_COLUMNS = Object.keys(
|
|
24
19
|
AUDIT_TABLE_COLUMN_DEFINITIONS,
|
|
25
20
|
) as (keyof AuditTableRow)[];
|
package/lib/Audit/AuditTypes.ts
CHANGED
|
@@ -33,3 +33,9 @@ export type SchemaConfigAudit<S = void> = {
|
|
|
33
33
|
tables?:
|
|
34
34
|
SchemaConfigAuditIncludedTables<S> | SchemaConfigAuditExcludedTables<S>;
|
|
35
35
|
};
|
|
36
|
+
|
|
37
|
+
/** Validated audit targets with all column and entity defaults resolved. */
|
|
38
|
+
export type ResolvedAuditConfig = {
|
|
39
|
+
tableName: string;
|
|
40
|
+
tables: Record<string, Required<SchemaConfigAuditTableOptions<void, string>>>;
|
|
41
|
+
};
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { md5 } from "prostgles-types/dist/md5";
|
|
2
2
|
import type { Prostgles } from "../Prostgles";
|
|
3
|
-
import type {
|
|
4
|
-
TableConfig,
|
|
5
|
-
TableDefinition,
|
|
6
|
-
} from "../TableConfig/TableConfigTypes";
|
|
3
|
+
import type { TableConfig, TableDefinition } from "../TableConfig/TableConfigTypes";
|
|
7
4
|
|
|
8
5
|
import { AUDIT_TABLE_COLUMN_DEFINITIONS } from "./AuditTable";
|
|
9
6
|
import {
|
|
@@ -12,20 +9,14 @@ import {
|
|
|
12
9
|
AUDIT_WRITER_PREFIX,
|
|
13
10
|
} from "../TableConfig/managedTriggerNames";
|
|
14
11
|
|
|
15
|
-
export type ParsedAuditConfig = {
|
|
16
|
-
/** Includes previously configured history tables, whose protection is retained. */
|
|
17
|
-
auditTableNames: string[];
|
|
18
|
-
tableConfigs: TableConfig;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
12
|
export function getAuditProtection(
|
|
22
13
|
tableName: string,
|
|
23
14
|
actions: NonNullable<TableDefinition["triggers"]>[string]["actions"],
|
|
24
15
|
): NonNullable<TableDefinition["triggers"]> {
|
|
25
16
|
return {
|
|
26
|
-
[(actions.includes("update")
|
|
27
|
-
|
|
28
|
-
|
|
17
|
+
[(actions.includes("update") ?
|
|
18
|
+
AUDIT_HISTORY_PROTECTION_PREFIX
|
|
19
|
+
: AUDIT_TRUNCATE_PROTECTION_PREFIX) + md5(tableName)]: {
|
|
29
20
|
type: "before",
|
|
30
21
|
actions,
|
|
31
22
|
forEach: "statement",
|
|
@@ -36,40 +27,29 @@ export function getAuditProtection(
|
|
|
36
27
|
}
|
|
37
28
|
|
|
38
29
|
/** Adds audit definitions to the same config used for file tables and application tables. */
|
|
39
|
-
export
|
|
30
|
+
export const getAuditTableConfig = (
|
|
40
31
|
prgl: Prostgles,
|
|
41
32
|
tableConfig: TableConfig | undefined,
|
|
42
|
-
): TableConfig | undefined {
|
|
33
|
+
): TableConfig | undefined => {
|
|
43
34
|
const { audit } = prgl.opts;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
throw new Error("The audit table cannot also be defined in tableConfig");
|
|
51
|
-
}
|
|
52
|
-
result = {
|
|
53
|
-
[tableName]: {
|
|
54
|
-
columns: AUDIT_TABLE_COLUMN_DEFINITIONS,
|
|
55
|
-
triggers: getAuditProtection(tableName, ["update", "delete", "truncate"]),
|
|
56
|
-
},
|
|
57
|
-
...result,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
for (const [name, config] of Object.entries(
|
|
61
|
-
prgl.parsedAuditConfig?.tableConfigs ?? {},
|
|
62
|
-
)) {
|
|
63
|
-
result[name] = {
|
|
64
|
-
...result[name],
|
|
65
|
-
triggers: { ...result[name]?.triggers, ...config.triggers },
|
|
66
|
-
};
|
|
35
|
+
if (!audit) return tableConfig;
|
|
36
|
+
|
|
37
|
+
const { tableName } = audit;
|
|
38
|
+
if (!tableName) throw new Error("audit.tableName is required");
|
|
39
|
+
if (tableConfig?.[tableName]) {
|
|
40
|
+
throw new Error("The audit table cannot also be defined in tableConfig");
|
|
67
41
|
}
|
|
68
|
-
return
|
|
69
|
-
|
|
42
|
+
return {
|
|
43
|
+
[tableName]: {
|
|
44
|
+
columns: AUDIT_TABLE_COLUMN_DEFINITIONS,
|
|
45
|
+
triggers: getAuditProtection(tableName, ["update", "delete", "truncate"]),
|
|
46
|
+
},
|
|
47
|
+
...tableConfig,
|
|
48
|
+
};
|
|
49
|
+
};
|
|
70
50
|
|
|
71
51
|
export function isAuditTable(prgl: Prostgles, tableName: string): boolean {
|
|
72
|
-
return prgl.
|
|
52
|
+
return prgl.opts.audit?.tableName === tableName;
|
|
73
53
|
}
|
|
74
54
|
|
|
75
55
|
export const getAuditWriterName = (auditTable: string, sourceTable: string) =>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { as } from "pg-promise";
|
|
2
|
+
import { asName } from "prostgles-types";
|
|
3
|
+
import type { TableConfig } from "../TableConfig/TableConfigTypes";
|
|
4
|
+
import type { ResolvedAuditConfig } from "./AuditTypes";
|
|
5
|
+
import { getAuditProtection, getAuditWriterName } from "./getAuditTableConfig";
|
|
6
|
+
|
|
7
|
+
export const getAuditTriggerConfig = (audit: ResolvedAuditConfig): TableConfig => {
|
|
8
|
+
const result: TableConfig = {};
|
|
9
|
+
for (const [name, options] of Object.entries(audit.tables)) {
|
|
10
|
+
const { entityType, idColumns: ids, excludeColumns: excluded } = options;
|
|
11
|
+
const functionName = getAuditWriterName(audit.tableName, name);
|
|
12
|
+
result[name] = {
|
|
13
|
+
triggers: {
|
|
14
|
+
...getAuditProtection(audit.tableName, ["truncate"]),
|
|
15
|
+
[functionName]: {
|
|
16
|
+
type: "after",
|
|
17
|
+
actions: ["insert", "update", "delete"],
|
|
18
|
+
forEach: "row",
|
|
19
|
+
query: `DECLARE
|
|
20
|
+
before_row jsonb; after_row jsonb; before_id jsonb; after_id jsonb;
|
|
21
|
+
ids text[] := ARRAY[${ids.map((c) => as.text(c)).join(", ")}]::text[];
|
|
22
|
+
excluded text[] := ARRAY[${excluded.map((c) => as.text(c)).join(", ")}]::text[];
|
|
23
|
+
BEGIN
|
|
24
|
+
IF TG_OP <> 'INSERT' THEN
|
|
25
|
+
before_row := to_jsonb(OLD);
|
|
26
|
+
SELECT jsonb_object_agg(k, before_row -> k) INTO before_id FROM unnest(ids) k;
|
|
27
|
+
before_row := before_row - excluded;
|
|
28
|
+
END IF;
|
|
29
|
+
IF TG_OP <> 'DELETE' THEN
|
|
30
|
+
after_row := to_jsonb(NEW);
|
|
31
|
+
SELECT jsonb_object_agg(k, after_row -> k) INTO after_id FROM unnest(ids) k;
|
|
32
|
+
after_row := after_row - excluded;
|
|
33
|
+
END IF;
|
|
34
|
+
IF TG_OP = 'UPDATE' AND before_row IS NOT DISTINCT FROM after_row THEN RETURN NULL; END IF;
|
|
35
|
+
INSERT INTO ${asName(audit.tableName)} (schema_name, table_name, entity_type, operation, old_id, new_id, old_row, new_row, actor)
|
|
36
|
+
VALUES (TG_TABLE_SCHEMA, TG_TABLE_NAME, ${as.text(entityType)}, TG_OP, before_id, after_id, before_row, after_row,
|
|
37
|
+
nullif(current_setting('prostgles.user', true), '')::jsonb);
|
|
38
|
+
RETURN NULL;
|
|
39
|
+
END;`,
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
@@ -1,158 +1,71 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { asName } from "prostgles-types";
|
|
1
|
+
import { getEntries, isObject } from "prostgles-types";
|
|
3
2
|
import type { Prostgles } from "../Prostgles";
|
|
4
|
-
import type {
|
|
5
|
-
import {
|
|
6
|
-
getAuditProtection,
|
|
7
|
-
getAuditWriterName,
|
|
8
|
-
type ParsedAuditConfig,
|
|
9
|
-
} from "./getAuditTableConfig";
|
|
3
|
+
import type { ResolvedAuditConfig } from "./AuditTypes";
|
|
4
|
+
import { isArray } from "../utils/utils";
|
|
10
5
|
|
|
11
|
-
/** Resolve column defaults against the completed schema
|
|
12
|
-
export
|
|
13
|
-
prgl: Prostgles,
|
|
14
|
-
): Promise<ParsedAuditConfig> {
|
|
6
|
+
/** Resolve audit targets and column defaults against the completed schema. */
|
|
7
|
+
export const parseAuditConfig = (prgl: Prostgles): ResolvedAuditConfig | undefined => {
|
|
15
8
|
const { audit } = prgl.opts;
|
|
9
|
+
if (!audit) return undefined;
|
|
10
|
+
|
|
16
11
|
const tables = prgl.dboBuilder.tables;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
...(prgl.parsedAuditConfig?.auditTableNames ?? []),
|
|
20
|
-
...(audit ? [audit.tableName] : []),
|
|
21
|
-
]),
|
|
22
|
-
];
|
|
23
|
-
const result: ParsedAuditConfig = {
|
|
24
|
-
auditTableNames,
|
|
25
|
-
tableConfigs: {},
|
|
26
|
-
};
|
|
27
|
-
for (const name of auditTableNames) {
|
|
28
|
-
if (!tables.some((t) => t.name === name)) {
|
|
29
|
-
throw new Error(
|
|
30
|
-
`Audit table name must exactly match a schema table name: ${name}`,
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
result.tableConfigs[name] = {
|
|
34
|
-
triggers: getAuditProtection(name, ["update", "delete", "truncate"]),
|
|
35
|
-
};
|
|
12
|
+
if (!tables.some((t) => t.name === audit.tableName)) {
|
|
13
|
+
throw new Error(`Audit table name must exactly match a schema table name: ${audit.tableName}`);
|
|
36
14
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
tableOptions !== undefined &&
|
|
41
|
-
(!tableOptions ||
|
|
42
|
-
typeof tableOptions !== "object" ||
|
|
43
|
-
Array.isArray(tableOptions))
|
|
44
|
-
) {
|
|
45
|
-
throw new Error("audit.tables must be a table map");
|
|
46
|
-
}
|
|
47
|
-
const entries = Object.entries(audit.tables ?? {}).filter(
|
|
48
|
-
([, value]) => value !== undefined,
|
|
49
|
-
);
|
|
15
|
+
const result: ResolvedAuditConfig["tables"] = {};
|
|
16
|
+
|
|
17
|
+
const entries = getEntries(audit.tables ?? {}).filter(([, value]) => value !== undefined);
|
|
50
18
|
const exclusion = entries.some(([, value]) => value === 0);
|
|
51
|
-
if (exclusion && entries.some(([, value]) => value !== 0))
|
|
19
|
+
if (exclusion && entries.some(([, value]) => value !== 0)) {
|
|
52
20
|
throw new Error("audit.tables cannot mix enabled and disabled entries");
|
|
21
|
+
}
|
|
53
22
|
for (const [name, value] of entries) {
|
|
54
|
-
if (!tables.some((t) => t.name === name))
|
|
23
|
+
if (!tables.some((t) => t.name === name)) {
|
|
55
24
|
throw new Error(`Unknown audit table: ${name}`);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
value !== 1 &&
|
|
59
|
-
(!value || typeof value !== "object" || Array.isArray(value))
|
|
60
|
-
)
|
|
25
|
+
}
|
|
26
|
+
if (value !== 0 && value !== 1 && !isObject(value)) {
|
|
61
27
|
throw new Error(`Invalid audit options for ${name}`);
|
|
28
|
+
}
|
|
62
29
|
}
|
|
63
|
-
|
|
64
|
-
oid: number;
|
|
65
|
-
relkind: string;
|
|
66
|
-
relispartition: boolean;
|
|
67
|
-
}>(
|
|
68
|
-
"SELECT oid, relkind, relispartition FROM pg_class WHERE oid = ANY($1::oid[])",
|
|
69
|
-
[tables.map((t) => t.oid)],
|
|
70
|
-
);
|
|
30
|
+
|
|
71
31
|
for (const table of tables) {
|
|
72
32
|
const entry = entries.find(([name]) => name === table.name);
|
|
73
33
|
if (entries.length && (exclusion ? entry?.[1] === 0 : !entry)) continue;
|
|
74
|
-
|
|
75
|
-
const isHistory =
|
|
76
|
-
const eligible =
|
|
77
|
-
!isHistory &&
|
|
78
|
-
table.schema !== "prostgles" &&
|
|
79
|
-
!table.is_view &&
|
|
80
|
-
!table.isHyperTable &&
|
|
81
|
-
relation &&
|
|
82
|
-
relation.relkind === "r" &&
|
|
83
|
-
!relation.relispartition;
|
|
34
|
+
|
|
35
|
+
const isHistory = table.name === audit.tableName;
|
|
36
|
+
const eligible = !isHistory && !table.is_view && !table.isHyperTable;
|
|
84
37
|
if (!eligible) {
|
|
85
|
-
if (entry && entry[1] !== 0)
|
|
86
|
-
throw new Error(
|
|
87
|
-
|
|
88
|
-
);
|
|
38
|
+
if (entry && entry[1] !== 0) {
|
|
39
|
+
throw new Error(`Unsupported audit target: ${table.name}`);
|
|
40
|
+
}
|
|
89
41
|
continue;
|
|
90
42
|
}
|
|
91
|
-
const options
|
|
92
|
-
|
|
93
|
-
if (
|
|
94
|
-
Object.keys(options).some(
|
|
95
|
-
(k) => !["entityType", "idColumns", "excludeColumns"].includes(k),
|
|
96
|
-
)
|
|
97
|
-
)
|
|
98
|
-
throw new Error(`Unknown audit option for ${table.name}`);
|
|
99
|
-
const ids =
|
|
100
|
-
options.idColumns ??
|
|
101
|
-
table.columns.filter((c) => c.is_pkey).map((c) => c.name);
|
|
43
|
+
const options = typeof entry?.[1] === "object" ? entry[1] : {};
|
|
44
|
+
const ids = options.idColumns ?? table.columns.filter((c) => c.is_pkey).map((c) => c.name);
|
|
102
45
|
const excluded = options.excludeColumns ?? [];
|
|
103
|
-
if (!
|
|
104
|
-
throw new Error(
|
|
105
|
-
|
|
106
|
-
|
|
46
|
+
if (!isArray(ids) || !ids.length) {
|
|
47
|
+
throw new Error(`audit.idColumns is required for ${table.name} without a primary key`);
|
|
48
|
+
}
|
|
49
|
+
|
|
107
50
|
for (const list of [ids, excluded]) {
|
|
108
51
|
if (
|
|
109
|
-
!Array.isArray(list) ||
|
|
110
52
|
new Set(list).size !== list.length ||
|
|
111
53
|
list.some((c) => !table.columns.some((col) => col.name === c))
|
|
112
|
-
)
|
|
54
|
+
) {
|
|
113
55
|
throw new Error(`Invalid audit columns for ${table.name}`);
|
|
56
|
+
}
|
|
114
57
|
}
|
|
115
|
-
if (ids.some((c) => excluded.includes(c)))
|
|
116
|
-
throw new Error(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
if (
|
|
120
|
-
options.entityType !== undefined &&
|
|
121
|
-
(typeof options.entityType !== "string" || !options.entityType)
|
|
122
|
-
)
|
|
58
|
+
if (ids.some((c) => excluded.includes(c))) {
|
|
59
|
+
throw new Error(`Audit identity columns cannot be excluded: ${table.name}`);
|
|
60
|
+
}
|
|
61
|
+
if (options.entityType !== undefined && !options.entityType) {
|
|
123
62
|
throw new Error(`Invalid audit entityType for ${table.name}`);
|
|
124
|
-
|
|
125
|
-
result
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
type: "after",
|
|
130
|
-
actions: ["insert", "update", "delete"],
|
|
131
|
-
forEach: "row",
|
|
132
|
-
query: `DECLARE
|
|
133
|
-
before_row jsonb; after_row jsonb; before_id jsonb; after_id jsonb;
|
|
134
|
-
ids text[] := ARRAY[${ids.map((c) => as.text(c)).join(", ")}]::text[];
|
|
135
|
-
excluded text[] := ARRAY[${excluded.map((c) => as.text(c)).join(", ")}]::text[];
|
|
136
|
-
BEGIN
|
|
137
|
-
IF TG_OP <> 'INSERT' THEN
|
|
138
|
-
before_row := to_jsonb(OLD);
|
|
139
|
-
SELECT jsonb_object_agg(k, before_row -> k) INTO before_id FROM unnest(ids) k;
|
|
140
|
-
before_row := before_row - excluded;
|
|
141
|
-
END IF;
|
|
142
|
-
IF TG_OP <> 'DELETE' THEN
|
|
143
|
-
after_row := to_jsonb(NEW);
|
|
144
|
-
SELECT jsonb_object_agg(k, after_row -> k) INTO after_id FROM unnest(ids) k;
|
|
145
|
-
after_row := after_row - excluded;
|
|
146
|
-
END IF;
|
|
147
|
-
IF TG_OP = 'UPDATE' AND before_row IS NOT DISTINCT FROM after_row THEN RETURN NULL; END IF;
|
|
148
|
-
INSERT INTO ${asName(audit.tableName)} (schema_name, table_name, entity_type, operation, old_id, new_id, old_row, new_row, actor)
|
|
149
|
-
VALUES (TG_TABLE_SCHEMA, TG_TABLE_NAME, ${as.text(options.entityType ?? table.name)}, TG_OP, before_id, after_id, before_row, after_row,
|
|
150
|
-
nullif(current_setting('prostgles.user', true), '')::jsonb);
|
|
151
|
-
RETURN NULL;
|
|
152
|
-
END;`,
|
|
153
|
-
},
|
|
154
|
-
},
|
|
63
|
+
}
|
|
64
|
+
result[table.name] = {
|
|
65
|
+
entityType: options.entityType ?? table.name,
|
|
66
|
+
idColumns: [...ids],
|
|
67
|
+
excludeColumns: [...excluded],
|
|
155
68
|
};
|
|
156
69
|
}
|
|
157
|
-
return result;
|
|
158
|
-
}
|
|
70
|
+
return { tableName: audit.tableName, tables: result };
|
|
71
|
+
};
|
package/lib/Prostgles.ts
CHANGED
|
@@ -63,7 +63,9 @@ import type { getAdminClient } from "./DboBuilder/runSql/getAdminClient";
|
|
|
63
63
|
import type { TableHandler } from "./DboBuilder/TableHandler/TableHandler";
|
|
64
64
|
import { getFileTableConfig } from "./StorageClient/getFileTableConfig";
|
|
65
65
|
import { dirname } from "path";
|
|
66
|
-
import { getAuditTableConfig
|
|
66
|
+
import { getAuditTableConfig } from "./Audit/getAuditTableConfig";
|
|
67
|
+
import { parseAuditConfig } from "./Audit/parseAuditConfig";
|
|
68
|
+
import { getAuditTriggerConfig } from "./Audit/getAuditTriggerConfig";
|
|
67
69
|
import { syncTableTriggers } from "./TableConfig/syncTableTriggers";
|
|
68
70
|
import { isManagedTriggerName } from "./TableConfig/managedTriggerNames";
|
|
69
71
|
|
|
@@ -118,7 +120,6 @@ export class Prostgles {
|
|
|
118
120
|
void this.schemaReady.catch(() => {});
|
|
119
121
|
return this.schemaReady;
|
|
120
122
|
};
|
|
121
|
-
parsedAuditConfig?: ParsedAuditConfig;
|
|
122
123
|
preparingTableConfig = false;
|
|
123
124
|
|
|
124
125
|
dbEventsManager?: DBEventsManager;
|
|
@@ -128,6 +129,11 @@ export class Prostgles {
|
|
|
128
129
|
|
|
129
130
|
tableConfigurator?: TableConfigurator;
|
|
130
131
|
|
|
132
|
+
get resolvedAuditConfig() {
|
|
133
|
+
if (!this._dboBuilder || this.preparingTableConfig) return undefined;
|
|
134
|
+
return parseAuditConfig(this);
|
|
135
|
+
}
|
|
136
|
+
|
|
131
137
|
get mergedTableConfig() {
|
|
132
138
|
for (const [tableName, table] of Object.entries(this.opts.tableConfig ?? {})) {
|
|
133
139
|
for (const name of Object.keys(table.triggers ?? {})) {
|
|
@@ -137,7 +143,17 @@ export class Prostgles {
|
|
|
137
143
|
}
|
|
138
144
|
}
|
|
139
145
|
const config = getFileTableConfig(this);
|
|
140
|
-
|
|
146
|
+
const tableConfig = getAuditTableConfig(this, config.tableConfig);
|
|
147
|
+
const audit = this.resolvedAuditConfig;
|
|
148
|
+
if (tableConfig && audit) {
|
|
149
|
+
for (const [name, auditConfig] of Object.entries(getAuditTriggerConfig(audit))) {
|
|
150
|
+
tableConfig[name] = {
|
|
151
|
+
...tableConfig[name],
|
|
152
|
+
triggers: { ...tableConfig[name]?.triggers, ...auditConfig.triggers },
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return { ...config, tableConfig };
|
|
141
157
|
}
|
|
142
158
|
|
|
143
159
|
isMedia(tableName: string) {
|
|
@@ -312,7 +328,7 @@ export class Prostgles {
|
|
|
312
328
|
await this.cleanupContext();
|
|
313
329
|
await this.runSchemaQueries(async () => {
|
|
314
330
|
await this.rebuildDBO();
|
|
315
|
-
if (this.opts.audit
|
|
331
|
+
if (this.opts.audit) {
|
|
316
332
|
await syncTableTriggers(this);
|
|
317
333
|
await this.rebuildDBO();
|
|
318
334
|
}
|
package/lib/ProstglesTypes.ts
CHANGED
|
@@ -14,7 +14,7 @@ import type { StorageClient } from "./StorageClient/StorageClientTypes";
|
|
|
14
14
|
import type { PGConstraint } from "./TableConfig/fetchTableConstraints";
|
|
15
15
|
import type { TableConfig } from "./TableConfig/TableConfigTypes";
|
|
16
16
|
import type { TableHooks } from "./TableHooks/TableHooks";
|
|
17
|
-
import type { SchemaConfigAudit } from "./Audit/AuditTypes";
|
|
17
|
+
import type { ResolvedAuditConfig, SchemaConfigAudit } from "./Audit/AuditTypes";
|
|
18
18
|
|
|
19
19
|
import type { PRGLIOSocket } from "./DboBuilder/DboBuilder";
|
|
20
20
|
|
|
@@ -101,6 +101,7 @@ type ModifyClientSchema<SUser extends SessionUser = SessionUser> = (
|
|
|
101
101
|
table: DBSchemaTable,
|
|
102
102
|
tableConfig: TableConfig[string] | undefined,
|
|
103
103
|
userData: AuthResultWithSID<SUser> | undefined,
|
|
104
|
+
resolvedAuditConfig: ResolvedAuditConfig | undefined,
|
|
104
105
|
) => MaybePromise<DBSchemaTable>;
|
|
105
106
|
|
|
106
107
|
export type ProstglesInitOptions<
|
|
@@ -5,6 +5,7 @@ import { assertFileObjectValid, uploadFile } from "../DboBuilder/TableHandler/up
|
|
|
5
5
|
import type { Prostgles } from "../Prostgles";
|
|
6
6
|
import type { BeforeEachTsTrigger } from "../PublishParser/publishTypesAndUtils";
|
|
7
7
|
import type { TableConfig } from "../TableConfig/TableConfigTypes";
|
|
8
|
+
import type { TableRowFromColumnDefinitions } from "../TableConfig/TableRowFromColumnDefinitions";
|
|
8
9
|
import type { TableHooks } from "../TableHooks/TableHooks";
|
|
9
10
|
import { setupFileServeHandler } from "./setupFileServeHandler";
|
|
10
11
|
|
|
@@ -28,19 +29,7 @@ const FILE_TABLE_COLUMN_DEFINITIONS = {
|
|
|
28
29
|
data: `BYTEA NOT NULL CHECK (data = decode('01', 'hex'))`, // Used as a placeholder to ensure insert types are correct. Actual data is uploaded to storageClient and not stored in the DB
|
|
29
30
|
} as const;
|
|
30
31
|
|
|
31
|
-
type
|
|
32
|
-
|
|
33
|
-
export type FileTableRow = {
|
|
34
|
-
[K in keyof FileTableColumnDefinitions as K]: FileTableColumnDefinitions[K] extends (
|
|
35
|
-
`BYTEA NOT NULL${string}`
|
|
36
|
-
) ?
|
|
37
|
-
Buffer
|
|
38
|
-
: FileTableColumnDefinitions[K] extends (
|
|
39
|
-
`${string} NOT NULL${string}` | `${string}PRIMARY KEY${string}`
|
|
40
|
-
) ?
|
|
41
|
-
string
|
|
42
|
-
: string | null;
|
|
43
|
-
};
|
|
32
|
+
export type FileTableRow = TableRowFromColumnDefinitions<typeof FILE_TABLE_COLUMN_DEFINITIONS>;
|
|
44
33
|
|
|
45
34
|
export const getFileTableConfig = (
|
|
46
35
|
prg: Prostgles,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Row types for the column definitions used by managed tables. */
|
|
2
|
+
export type TableRowFromColumnDefinitions<
|
|
3
|
+
T extends Record<
|
|
4
|
+
string,
|
|
5
|
+
string | { enum: readonly (string | number)[]; nullable?: boolean }
|
|
6
|
+
>,
|
|
7
|
+
> = {
|
|
8
|
+
[K in keyof T]: T[K] extends { enum: readonly (infer V)[] }
|
|
9
|
+
? V | (T[K] extends { nullable: true } ? null : never)
|
|
10
|
+
: | (T[K] extends `BYTEA${string}`
|
|
11
|
+
? Buffer
|
|
12
|
+
: T[K] extends `JSONB${string}`
|
|
13
|
+
? Record<string, unknown>
|
|
14
|
+
: string)
|
|
15
|
+
| (T[K] extends
|
|
16
|
+
`${string} NOT NULL${string}` | `${string}PRIMARY KEY${string}`
|
|
17
|
+
? never
|
|
18
|
+
: null);
|
|
19
|
+
};
|