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
package/README.md
CHANGED
|
@@ -141,35 +141,6 @@ prostgles({
|
|
|
141
141
|
});
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
-
## Audit history
|
|
145
|
-
|
|
146
|
-
Set `audit` to record committed inserts, updates and deletes:
|
|
147
|
-
|
|
148
|
-
```typescript
|
|
149
|
-
prostgles({
|
|
150
|
-
dbConnection: process.env.DATABASE_URL!,
|
|
151
|
-
audit: {
|
|
152
|
-
tableName: "audit_events",
|
|
153
|
-
tables: { posts: { excludeColumns: ["secret"] } },
|
|
154
|
-
},
|
|
155
|
-
onReady: () => {},
|
|
156
|
-
});
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
The SQL file and tableConfig schema are initialized before audit triggers are
|
|
160
|
-
installed. Application queries wait for setup; `onMount` and `onReady` writes are
|
|
161
|
-
audited. Bootstrap SQL itself is not audited on first initialization.
|
|
162
|
-
|
|
163
|
-
The audit table is managed entirely by `audit` and cannot also appear in
|
|
164
|
-
`tableConfig`. It rejects updates, deletes and truncation; publishing it exposes
|
|
165
|
-
select only. Audited source tables also reject truncation.
|
|
166
|
-
|
|
167
|
-
Omit `tables` to include all eligible tables in `schemaFilter`, or use an
|
|
168
|
-
allowlist (`1` or options) or exclusion list (`0`). Do not mix the two.
|
|
169
|
-
Tables without primary keys need `idColumns`. Views, partitioned tables,
|
|
170
|
-
partitions and hypertables are unsupported. Changes affecting only excluded
|
|
171
|
-
columns do not create history rows.
|
|
172
|
-
|
|
173
144
|
## License
|
|
174
145
|
|
|
175
146
|
[MIT](LICENSE)
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
+
import type { TableRowFromColumnDefinitions } from "../TableConfig/TableRowFromColumnDefinitions";
|
|
1
2
|
export declare const AUDIT_TABLE_COLUMN_DEFINITIONS: {
|
|
2
3
|
readonly id: "BIGSERIAL PRIMARY KEY";
|
|
3
4
|
readonly created_at: "TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp()";
|
|
4
5
|
readonly schema_name: "TEXT NOT NULL";
|
|
5
6
|
readonly table_name: "TEXT NOT NULL";
|
|
6
7
|
readonly entity_type: "TEXT NOT NULL";
|
|
7
|
-
readonly operation:
|
|
8
|
+
readonly operation: {
|
|
9
|
+
readonly enum: readonly ["INSERT", "UPDATE", "DELETE"];
|
|
10
|
+
};
|
|
8
11
|
readonly old_id: "JSONB";
|
|
9
12
|
readonly new_id: "JSONB";
|
|
10
13
|
readonly old_row: "JSONB";
|
|
11
14
|
readonly new_row: "JSONB";
|
|
12
15
|
readonly actor: "JSONB";
|
|
13
16
|
};
|
|
14
|
-
export type AuditTableRow =
|
|
15
|
-
[K in keyof typeof AUDIT_TABLE_COLUMN_DEFINITIONS]: K extends "operation" ? "INSERT" | "UPDATE" | "DELETE" : (typeof AUDIT_TABLE_COLUMN_DEFINITIONS)[K] extends "JSONB" ? Record<string, unknown> | null : string;
|
|
16
|
-
};
|
|
17
|
+
export type AuditTableRow = TableRowFromColumnDefinitions<typeof AUDIT_TABLE_COLUMN_DEFINITIONS>;
|
|
17
18
|
export declare const AUDIT_TABLE_COLUMNS: (keyof AuditTableRow)[];
|
|
18
19
|
//# sourceMappingURL=AuditTable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuditTable.d.ts","sourceRoot":"","sources":["../../lib/Audit/AuditTable.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"AuditTable.d.ts","sourceRoot":"","sources":["../../lib/Audit/AuditTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAElG,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;CAYjC,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,6BAA6B,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACjG,eAAO,MAAM,mBAAmB,EAE3B,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC"}
|
package/dist/Audit/AuditTable.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.AUDIT_TABLE_COLUMN_DEFINITIONS = {
|
|
|
7
7
|
schema_name: "TEXT NOT NULL",
|
|
8
8
|
table_name: "TEXT NOT NULL",
|
|
9
9
|
entity_type: "TEXT NOT NULL",
|
|
10
|
-
operation:
|
|
10
|
+
operation: { enum: ["INSERT", "UPDATE", "DELETE"] },
|
|
11
11
|
old_id: "JSONB",
|
|
12
12
|
new_id: "JSONB",
|
|
13
13
|
old_row: "JSONB",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuditTable.js","sourceRoot":"","sources":["../../lib/Audit/AuditTable.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AuditTable.js","sourceRoot":"","sources":["../../lib/Audit/AuditTable.ts"],"names":[],"mappings":";;;AAEa,QAAA,8BAA8B,GAAG;IAC5C,EAAE,EAAE,uBAAuB;IAC3B,UAAU,EAAE,gDAAgD;IAC5D,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,eAAe;IAC3B,WAAW,EAAE,eAAe;IAC5B,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;IACnD,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,OAAO;CACN,CAAC;AAGE,QAAA,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAC5C,sCAA8B,CACJ,CAAC"}
|
|
@@ -22,4 +22,9 @@ export type SchemaConfigAudit<S = void> = {
|
|
|
22
22
|
/** Omitted/empty means all eligible tables in schemaFilter. Cannot mix enabled and disabled entries. */
|
|
23
23
|
tables?: SchemaConfigAuditIncludedTables<S> | SchemaConfigAuditExcludedTables<S>;
|
|
24
24
|
};
|
|
25
|
+
/** Validated audit targets with all column and entity defaults resolved. */
|
|
26
|
+
export type ResolvedAuditConfig = {
|
|
27
|
+
tableName: string;
|
|
28
|
+
tables: Record<string, Required<SchemaConfigAuditTableOptions<void, string>>>;
|
|
29
|
+
};
|
|
25
30
|
//# sourceMappingURL=AuditTypes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuditTypes.d.ts","sourceRoot":"","sources":["../../lib/Audit/AuditTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GACrD,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7B,MAAM,MAAM,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,IAAI;IAC1E,CAAC;CACF,SAAS,CAAC,IAAI,CAAC,GACZ,MAAM,GACN,CAAC,SAAS,MAAM,CAAC,GACf,CAAC,CAAC,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE,GAC/B,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACxB,KAAK,GACP,KAAK,CAAC;AAEZ,MAAM,MAAM,6BAA6B,CACvC,CAAC,EACD,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,IAChC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,SAAS,CAAC,EAAE,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACpD,cAAc,CAAC,EAAE,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;CAC1D,CAAC;AACF,MAAM,MAAM,+BAA+B,CAAC,CAAC,IAAI;KAC9C,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1E,CAAC;AACF,MAAM,MAAM,+BAA+B,CAAC,CAAC,IAAI;KAC9C,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,IAAI,IAAI;IACxC,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,MAAM,CAAC,EACL,+BAA+B,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC,CAAC,CAAC;CAC3E,CAAC"}
|
|
1
|
+
{"version":3,"file":"AuditTypes.d.ts","sourceRoot":"","sources":["../../lib/Audit/AuditTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GACrD,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7B,MAAM,MAAM,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,IAAI;IAC1E,CAAC;CACF,SAAS,CAAC,IAAI,CAAC,GACZ,MAAM,GACN,CAAC,SAAS,MAAM,CAAC,GACf,CAAC,CAAC,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE,GAC/B,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACxB,KAAK,GACP,KAAK,CAAC;AAEZ,MAAM,MAAM,6BAA6B,CACvC,CAAC,EACD,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,IAChC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,SAAS,CAAC,EAAE,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACpD,cAAc,CAAC,EAAE,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;CAC1D,CAAC;AACF,MAAM,MAAM,+BAA+B,CAAC,CAAC,IAAI;KAC9C,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC;CAC1E,CAAC;AACF,MAAM,MAAM,+BAA+B,CAAC,CAAC,IAAI;KAC9C,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,IAAI,IAAI;IACxC,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,MAAM,CAAC,EACL,+BAA+B,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC,CAAC,CAAC;CAC3E,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAC/E,CAAC"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import type { Prostgles } from "../Prostgles";
|
|
2
2
|
import type { TableConfig, TableDefinition } from "../TableConfig/TableConfigTypes";
|
|
3
|
-
export type ParsedAuditConfig = {
|
|
4
|
-
/** Includes previously configured history tables, whose protection is retained. */
|
|
5
|
-
auditTableNames: string[];
|
|
6
|
-
tableConfigs: TableConfig;
|
|
7
|
-
};
|
|
8
3
|
export declare function getAuditProtection(tableName: string, actions: NonNullable<TableDefinition["triggers"]>[string]["actions"]): NonNullable<TableDefinition["triggers"]>;
|
|
9
4
|
/** Adds audit definitions to the same config used for file tables and application tables. */
|
|
10
|
-
export declare
|
|
5
|
+
export declare const getAuditTableConfig: (prgl: Prostgles, tableConfig: TableConfig | undefined) => TableConfig | undefined;
|
|
11
6
|
export declare function isAuditTable(prgl: Prostgles, tableName: string): boolean;
|
|
12
7
|
export declare const getAuditWriterName: (auditTable: string, sourceTable: string) => string;
|
|
13
8
|
//# sourceMappingURL=getAuditTableConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuditTableConfig.d.ts","sourceRoot":"","sources":["../../lib/Audit/getAuditTableConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"getAuditTableConfig.d.ts","sourceRoot":"","sources":["../../lib/Audit/getAuditTableConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AASpF,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GACnE,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAY1C;AAED,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB,GAC9B,MAAM,SAAS,EACf,aAAa,WAAW,GAAG,SAAS,KACnC,WAAW,GAAG,SAgBhB,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAExE;AAED,eAAO,MAAM,kBAAkB,GAAI,YAAY,MAAM,EAAE,aAAa,MAAM,WACJ,CAAC"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAuditWriterName = void 0;
|
|
3
|
+
exports.getAuditWriterName = exports.getAuditTableConfig = void 0;
|
|
4
4
|
exports.getAuditProtection = getAuditProtection;
|
|
5
|
-
exports.getAuditTableConfig = getAuditTableConfig;
|
|
6
5
|
exports.isAuditTable = isAuditTable;
|
|
7
6
|
const md5_1 = require("prostgles-types/dist/md5");
|
|
8
7
|
const AuditTable_1 = require("./AuditTable");
|
|
9
8
|
const managedTriggerNames_1 = require("../TableConfig/managedTriggerNames");
|
|
10
9
|
function getAuditProtection(tableName, actions) {
|
|
11
10
|
return {
|
|
12
|
-
[(actions.includes("update")
|
|
13
|
-
|
|
11
|
+
[(actions.includes("update") ?
|
|
12
|
+
managedTriggerNames_1.AUDIT_HISTORY_PROTECTION_PREFIX
|
|
14
13
|
: managedTriggerNames_1.AUDIT_TRUNCATE_PROTECTION_PREFIX) + (0, md5_1.md5)(tableName)]: {
|
|
15
14
|
type: "before",
|
|
16
15
|
actions,
|
|
@@ -20,34 +19,27 @@ function getAuditProtection(tableName, actions) {
|
|
|
20
19
|
};
|
|
21
20
|
}
|
|
22
21
|
/** Adds audit definitions to the same config used for file tables and application tables. */
|
|
23
|
-
|
|
22
|
+
const getAuditTableConfig = (prgl, tableConfig) => {
|
|
24
23
|
const { audit } = prgl.opts;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
result = {
|
|
34
|
-
[tableName]: {
|
|
35
|
-
columns: AuditTable_1.AUDIT_TABLE_COLUMN_DEFINITIONS,
|
|
36
|
-
triggers: getAuditProtection(tableName, ["update", "delete", "truncate"]),
|
|
37
|
-
},
|
|
38
|
-
...result,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
for (const [name, config] of Object.entries(prgl.parsedAuditConfig?.tableConfigs ?? {})) {
|
|
42
|
-
result[name] = {
|
|
43
|
-
...result[name],
|
|
44
|
-
triggers: { ...result[name]?.triggers, ...config.triggers },
|
|
45
|
-
};
|
|
24
|
+
if (!audit)
|
|
25
|
+
return tableConfig;
|
|
26
|
+
const { tableName } = audit;
|
|
27
|
+
if (!tableName)
|
|
28
|
+
throw new Error("audit.tableName is required");
|
|
29
|
+
if (tableConfig?.[tableName]) {
|
|
30
|
+
throw new Error("The audit table cannot also be defined in tableConfig");
|
|
46
31
|
}
|
|
47
|
-
return
|
|
48
|
-
|
|
32
|
+
return {
|
|
33
|
+
[tableName]: {
|
|
34
|
+
columns: AuditTable_1.AUDIT_TABLE_COLUMN_DEFINITIONS,
|
|
35
|
+
triggers: getAuditProtection(tableName, ["update", "delete", "truncate"]),
|
|
36
|
+
},
|
|
37
|
+
...tableConfig,
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
exports.getAuditTableConfig = getAuditTableConfig;
|
|
49
41
|
function isAuditTable(prgl, tableName) {
|
|
50
|
-
return prgl.
|
|
42
|
+
return prgl.opts.audit?.tableName === tableName;
|
|
51
43
|
}
|
|
52
44
|
const getAuditWriterName = (auditTable, sourceTable) => managedTriggerNames_1.AUDIT_WRITER_PREFIX + (0, md5_1.md5)(JSON.stringify([auditTable, sourceTable]));
|
|
53
45
|
exports.getAuditWriterName = getAuditWriterName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuditTableConfig.js","sourceRoot":"","sources":["../../lib/Audit/getAuditTableConfig.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"getAuditTableConfig.js","sourceRoot":"","sources":["../../lib/Audit/getAuditTableConfig.ts"],"names":[],"mappings":";;;AAWA,gDAeC;AAwBD,oCAEC;AApDD,kDAA+C;AAI/C,6CAA8D;AAC9D,4EAI4C;AAE5C,SAAgB,kBAAkB,CAChC,SAAiB,EACjB,OAAoE;IAEpE,OAAO;QACL,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5B,qDAA+B;YACjC,CAAC,CAAC,sDAAgC,CAAC,GAAG,IAAA,SAAG,EAAC,SAAS,CAAC,CAAC,EAAE;YACrD,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,OAAO,EAAE,WAAW;YACpB,KAAK,EACH,gHAAgH;SACnH;KACF,CAAC;AACJ,CAAC;AAED,6FAA6F;AACtF,MAAM,mBAAmB,GAAG,CACjC,IAAe,EACf,WAAoC,EACX,EAAE;IAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;IAC5B,IAAI,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC;IAE/B,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC/D,IAAI,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO;QACL,CAAC,SAAS,CAAC,EAAE;YACX,OAAO,EAAE,2CAA8B;YACvC,QAAQ,EAAE,kBAAkB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC1E;QACD,GAAG,WAAW;KACf,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,mBAAmB,uBAmB9B;AAEF,SAAgB,YAAY,CAAC,IAAe,EAAE,SAAiB;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC;AAClD,CAAC;AAEM,MAAM,kBAAkB,GAAG,CAAC,UAAkB,EAAE,WAAmB,EAAE,EAAE,CAC5E,yCAAmB,GAAG,IAAA,SAAG,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAD1D,QAAA,kBAAkB,sBACwC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAuditTriggerConfig.d.ts","sourceRoot":"","sources":["../../lib/Audit/getAuditTriggerConfig.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,eAAO,MAAM,qBAAqB,GAAI,OAAO,mBAAmB,KAAG,WAsClE,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAuditTriggerConfig = void 0;
|
|
4
|
+
const pg_promise_1 = require("pg-promise");
|
|
5
|
+
const prostgles_types_1 = require("prostgles-types");
|
|
6
|
+
const getAuditTableConfig_1 = require("./getAuditTableConfig");
|
|
7
|
+
const getAuditTriggerConfig = (audit) => {
|
|
8
|
+
const result = {};
|
|
9
|
+
for (const [name, options] of Object.entries(audit.tables)) {
|
|
10
|
+
const { entityType, idColumns: ids, excludeColumns: excluded } = options;
|
|
11
|
+
const functionName = (0, getAuditTableConfig_1.getAuditWriterName)(audit.tableName, name);
|
|
12
|
+
result[name] = {
|
|
13
|
+
triggers: {
|
|
14
|
+
...(0, getAuditTableConfig_1.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) => pg_promise_1.as.text(c)).join(", ")}]::text[];
|
|
22
|
+
excluded text[] := ARRAY[${excluded.map((c) => pg_promise_1.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 ${(0, prostgles_types_1.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, ${pg_promise_1.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
|
+
};
|
|
46
|
+
exports.getAuditTriggerConfig = getAuditTriggerConfig;
|
|
47
|
+
//# sourceMappingURL=getAuditTriggerConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAuditTriggerConfig.js","sourceRoot":"","sources":["../../lib/Audit/getAuditTriggerConfig.ts"],"names":[],"mappings":";;;AAAA,2CAAgC;AAChC,qDAAyC;AAGzC,+DAA+E;AAExE,MAAM,qBAAqB,GAAG,CAAC,KAA0B,EAAe,EAAE;IAC/E,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACzE,MAAM,YAAY,GAAG,IAAA,wCAAkB,EAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,GAAG;YACb,QAAQ,EAAE;gBACR,GAAG,IAAA,wCAAkB,EAAC,KAAK,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC;gBACpD,CAAC,YAAY,CAAC,EAAE;oBACd,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;oBACvC,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;;kCAEiB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;uCAChC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;0BAavD,IAAA,wBAAM,EAAC,KAAK,CAAC,SAAS,CAAC;wDACO,eAAE,CAAC,IAAI,CAAC,UAAU,CAAC;;;eAG5D;iBACN;aACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAtCW,QAAA,qBAAqB,yBAsChC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Prostgles } from "../Prostgles";
|
|
2
|
-
import {
|
|
3
|
-
/** Resolve column defaults against the completed schema
|
|
4
|
-
export declare
|
|
2
|
+
import type { ResolvedAuditConfig } from "./AuditTypes";
|
|
3
|
+
/** Resolve audit targets and column defaults against the completed schema. */
|
|
4
|
+
export declare const parseAuditConfig: (prgl: Prostgles) => ResolvedAuditConfig | undefined;
|
|
5
5
|
//# sourceMappingURL=parseAuditConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseAuditConfig.d.ts","sourceRoot":"","sources":["../../lib/Audit/parseAuditConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parseAuditConfig.d.ts","sourceRoot":"","sources":["../../lib/Audit/parseAuditConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,GAAI,MAAM,SAAS,KAAG,mBAAmB,GAAG,SAgExE,CAAC"}
|
|
@@ -1,123 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseAuditConfig =
|
|
4
|
-
const pg_promise_1 = require("pg-promise");
|
|
3
|
+
exports.parseAuditConfig = void 0;
|
|
5
4
|
const prostgles_types_1 = require("prostgles-types");
|
|
6
|
-
const
|
|
7
|
-
/** Resolve column defaults against the completed schema
|
|
8
|
-
|
|
5
|
+
const utils_1 = require("../utils/utils");
|
|
6
|
+
/** Resolve audit targets and column defaults against the completed schema. */
|
|
7
|
+
const parseAuditConfig = (prgl) => {
|
|
9
8
|
const { audit } = prgl.opts;
|
|
10
|
-
const tables = prgl.dboBuilder.tables;
|
|
11
|
-
const auditTableNames = [
|
|
12
|
-
...new Set([
|
|
13
|
-
...(prgl.parsedAuditConfig?.auditTableNames ?? []),
|
|
14
|
-
...(audit ? [audit.tableName] : []),
|
|
15
|
-
]),
|
|
16
|
-
];
|
|
17
|
-
const result = {
|
|
18
|
-
auditTableNames,
|
|
19
|
-
tableConfigs: {},
|
|
20
|
-
};
|
|
21
|
-
for (const name of auditTableNames) {
|
|
22
|
-
if (!tables.some((t) => t.name === name)) {
|
|
23
|
-
throw new Error(`Audit table name must exactly match a schema table name: ${name}`);
|
|
24
|
-
}
|
|
25
|
-
result.tableConfigs[name] = {
|
|
26
|
-
triggers: (0, getAuditTableConfig_1.getAuditProtection)(name, ["update", "delete", "truncate"]),
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
9
|
if (!audit)
|
|
30
|
-
return
|
|
31
|
-
const
|
|
32
|
-
if (
|
|
33
|
-
(
|
|
34
|
-
typeof tableOptions !== "object" ||
|
|
35
|
-
Array.isArray(tableOptions))) {
|
|
36
|
-
throw new Error("audit.tables must be a table map");
|
|
10
|
+
return undefined;
|
|
11
|
+
const tables = prgl.dboBuilder.tables;
|
|
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}`);
|
|
37
14
|
}
|
|
38
|
-
const
|
|
15
|
+
const result = {};
|
|
16
|
+
const entries = (0, prostgles_types_1.getEntries)(audit.tables ?? {}).filter(([, value]) => value !== undefined);
|
|
39
17
|
const exclusion = entries.some(([, value]) => value === 0);
|
|
40
|
-
if (exclusion && entries.some(([, value]) => value !== 0))
|
|
18
|
+
if (exclusion && entries.some(([, value]) => value !== 0)) {
|
|
41
19
|
throw new Error("audit.tables cannot mix enabled and disabled entries");
|
|
20
|
+
}
|
|
42
21
|
for (const [name, value] of entries) {
|
|
43
|
-
if (!tables.some((t) => t.name === name))
|
|
22
|
+
if (!tables.some((t) => t.name === name)) {
|
|
44
23
|
throw new Error(`Unknown audit table: ${name}`);
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
(!value || typeof value !== "object" || Array.isArray(value)))
|
|
24
|
+
}
|
|
25
|
+
if (value !== 0 && value !== 1 && !(0, prostgles_types_1.isObject)(value)) {
|
|
48
26
|
throw new Error(`Invalid audit options for ${name}`);
|
|
27
|
+
}
|
|
49
28
|
}
|
|
50
|
-
const relations = await prgl.dbForSchema.any("SELECT oid, relkind, relispartition FROM pg_class WHERE oid = ANY($1::oid[])", [tables.map((t) => t.oid)]);
|
|
51
29
|
for (const table of tables) {
|
|
52
30
|
const entry = entries.find(([name]) => name === table.name);
|
|
53
31
|
if (entries.length && (exclusion ? entry?.[1] === 0 : !entry))
|
|
54
32
|
continue;
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
const eligible = !isHistory &&
|
|
58
|
-
table.schema !== "prostgles" &&
|
|
59
|
-
!table.is_view &&
|
|
60
|
-
!table.isHyperTable &&
|
|
61
|
-
relation &&
|
|
62
|
-
relation.relkind === "r" &&
|
|
63
|
-
!relation.relispartition;
|
|
33
|
+
const isHistory = table.name === audit.tableName;
|
|
34
|
+
const eligible = !isHistory && !table.is_view && !table.isHyperTable;
|
|
64
35
|
if (!eligible) {
|
|
65
|
-
if (entry && entry[1] !== 0)
|
|
66
|
-
throw new Error(`Unsupported audit target: ${table.name}
|
|
36
|
+
if (entry && entry[1] !== 0) {
|
|
37
|
+
throw new Error(`Unsupported audit target: ${table.name}`);
|
|
38
|
+
}
|
|
67
39
|
continue;
|
|
68
40
|
}
|
|
69
41
|
const options = typeof entry?.[1] === "object" ? entry[1] : {};
|
|
70
|
-
|
|
71
|
-
throw new Error(`Unknown audit option for ${table.name}`);
|
|
72
|
-
const ids = options.idColumns ??
|
|
73
|
-
table.columns.filter((c) => c.is_pkey).map((c) => c.name);
|
|
42
|
+
const ids = options.idColumns ?? table.columns.filter((c) => c.is_pkey).map((c) => c.name);
|
|
74
43
|
const excluded = options.excludeColumns ?? [];
|
|
75
|
-
if (!
|
|
44
|
+
if (!(0, utils_1.isArray)(ids) || !ids.length) {
|
|
76
45
|
throw new Error(`audit.idColumns is required for ${table.name} without a primary key`);
|
|
46
|
+
}
|
|
77
47
|
for (const list of [ids, excluded]) {
|
|
78
|
-
if (
|
|
79
|
-
|
|
80
|
-
list.some((c) => !table.columns.some((col) => col.name === c)))
|
|
48
|
+
if (new Set(list).size !== list.length ||
|
|
49
|
+
list.some((c) => !table.columns.some((col) => col.name === c))) {
|
|
81
50
|
throw new Error(`Invalid audit columns for ${table.name}`);
|
|
51
|
+
}
|
|
82
52
|
}
|
|
83
|
-
if (ids.some((c) => excluded.includes(c)))
|
|
53
|
+
if (ids.some((c) => excluded.includes(c))) {
|
|
84
54
|
throw new Error(`Audit identity columns cannot be excluded: ${table.name}`);
|
|
85
|
-
|
|
86
|
-
|
|
55
|
+
}
|
|
56
|
+
if (options.entityType !== undefined && !options.entityType) {
|
|
87
57
|
throw new Error(`Invalid audit entityType for ${table.name}`);
|
|
88
|
-
|
|
89
|
-
result
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
type: "after",
|
|
94
|
-
actions: ["insert", "update", "delete"],
|
|
95
|
-
forEach: "row",
|
|
96
|
-
query: `DECLARE
|
|
97
|
-
before_row jsonb; after_row jsonb; before_id jsonb; after_id jsonb;
|
|
98
|
-
ids text[] := ARRAY[${ids.map((c) => pg_promise_1.as.text(c)).join(", ")}]::text[];
|
|
99
|
-
excluded text[] := ARRAY[${excluded.map((c) => pg_promise_1.as.text(c)).join(", ")}]::text[];
|
|
100
|
-
BEGIN
|
|
101
|
-
IF TG_OP <> 'INSERT' THEN
|
|
102
|
-
before_row := to_jsonb(OLD);
|
|
103
|
-
SELECT jsonb_object_agg(k, before_row -> k) INTO before_id FROM unnest(ids) k;
|
|
104
|
-
before_row := before_row - excluded;
|
|
105
|
-
END IF;
|
|
106
|
-
IF TG_OP <> 'DELETE' THEN
|
|
107
|
-
after_row := to_jsonb(NEW);
|
|
108
|
-
SELECT jsonb_object_agg(k, after_row -> k) INTO after_id FROM unnest(ids) k;
|
|
109
|
-
after_row := after_row - excluded;
|
|
110
|
-
END IF;
|
|
111
|
-
IF TG_OP = 'UPDATE' AND before_row IS NOT DISTINCT FROM after_row THEN RETURN NULL; END IF;
|
|
112
|
-
INSERT INTO ${(0, prostgles_types_1.asName)(audit.tableName)} (schema_name, table_name, entity_type, operation, old_id, new_id, old_row, new_row, actor)
|
|
113
|
-
VALUES (TG_TABLE_SCHEMA, TG_TABLE_NAME, ${pg_promise_1.as.text(options.entityType ?? table.name)}, TG_OP, before_id, after_id, before_row, after_row,
|
|
114
|
-
nullif(current_setting('prostgles.user', true), '')::jsonb);
|
|
115
|
-
RETURN NULL;
|
|
116
|
-
END;`,
|
|
117
|
-
},
|
|
118
|
-
},
|
|
58
|
+
}
|
|
59
|
+
result[table.name] = {
|
|
60
|
+
entityType: options.entityType ?? table.name,
|
|
61
|
+
idColumns: [...ids],
|
|
62
|
+
excludeColumns: [...excluded],
|
|
119
63
|
};
|
|
120
64
|
}
|
|
121
|
-
return result;
|
|
122
|
-
}
|
|
65
|
+
return { tableName: audit.tableName, tables: result };
|
|
66
|
+
};
|
|
67
|
+
exports.parseAuditConfig = parseAuditConfig;
|
|
123
68
|
//# sourceMappingURL=parseAuditConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseAuditConfig.js","sourceRoot":"","sources":["../../lib/Audit/parseAuditConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parseAuditConfig.js","sourceRoot":"","sources":["../../lib/Audit/parseAuditConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,48 @@
|
|
|
1
1
|
import type { AnyObject } from "prostgles-types";
|
|
2
2
|
import type { FileTableConfig } from "../../ProstglesTypes";
|
|
3
|
-
import type { FileTableRow } from "../../StorageClient/getFileTableConfig";
|
|
4
3
|
import type { TableHandler } from "./TableHandler";
|
|
5
4
|
import { type UploadFileArgs } from "./uploadFile";
|
|
6
5
|
type Args = Pick<UploadFileArgs, "localParams" | "data" | "original_name" | "original_last_modified"> & {
|
|
7
6
|
filter: AnyObject;
|
|
8
7
|
};
|
|
9
8
|
export declare const updateFile: (tableHandler: TableHandler, config: FileTableConfig, { filter, data, original_name, original_last_modified, localParams }: Args) => Promise<{
|
|
10
|
-
newData: Omit<Omit<
|
|
9
|
+
newData: Omit<Omit<import("../../TableConfig/TableRowFromColumnDefinitions").TableRowFromColumnDefinitions<{
|
|
10
|
+
readonly id: "UUID PRIMARY KEY DEFAULT gen_random_uuid()";
|
|
11
|
+
readonly extension: "TEXT NOT NULL DEFAULT ''";
|
|
12
|
+
readonly content_type: "TEXT NOT NULL DEFAULT ''";
|
|
13
|
+
readonly content_length: "BIGINT NOT NULL DEFAULT 0";
|
|
14
|
+
readonly etag: "TEXT NOT NULL DEFAULT ''";
|
|
15
|
+
readonly original_name: "TEXT NOT NULL";
|
|
16
|
+
readonly original_last_modified: "TIMESTAMPTZ";
|
|
17
|
+
readonly description: "TEXT";
|
|
18
|
+
readonly url: "TEXT NOT NULL DEFAULT ''";
|
|
19
|
+
readonly cloud_url: "TEXT";
|
|
20
|
+
readonly signed_url: "TEXT";
|
|
21
|
+
readonly signed_url_expires: "BIGINT";
|
|
22
|
+
readonly added: "TIMESTAMP NOT NULL DEFAULT NOW()";
|
|
23
|
+
readonly updated: "TIMESTAMP NOT NULL DEFAULT NOW()";
|
|
24
|
+
readonly deleted: "TIMESTAMPTZ";
|
|
25
|
+
readonly deleted_from_storage: "TIMESTAMPTZ";
|
|
26
|
+
readonly data: "BYTEA NOT NULL CHECK (data = decode('01', 'hex'))";
|
|
27
|
+
}>, "added"> & Partial<Pick<import("../../TableConfig/TableRowFromColumnDefinitions").TableRowFromColumnDefinitions<{
|
|
28
|
+
readonly id: "UUID PRIMARY KEY DEFAULT gen_random_uuid()";
|
|
29
|
+
readonly extension: "TEXT NOT NULL DEFAULT ''";
|
|
30
|
+
readonly content_type: "TEXT NOT NULL DEFAULT ''";
|
|
31
|
+
readonly content_length: "BIGINT NOT NULL DEFAULT 0";
|
|
32
|
+
readonly etag: "TEXT NOT NULL DEFAULT ''";
|
|
33
|
+
readonly original_name: "TEXT NOT NULL";
|
|
34
|
+
readonly original_last_modified: "TIMESTAMPTZ";
|
|
35
|
+
readonly description: "TEXT";
|
|
36
|
+
readonly url: "TEXT NOT NULL DEFAULT ''";
|
|
37
|
+
readonly cloud_url: "TEXT";
|
|
38
|
+
readonly signed_url: "TEXT";
|
|
39
|
+
readonly signed_url_expires: "BIGINT";
|
|
40
|
+
readonly added: "TIMESTAMP NOT NULL DEFAULT NOW()";
|
|
41
|
+
readonly updated: "TIMESTAMP NOT NULL DEFAULT NOW()";
|
|
42
|
+
readonly deleted: "TIMESTAMPTZ";
|
|
43
|
+
readonly deleted_from_storage: "TIMESTAMPTZ";
|
|
44
|
+
readonly data: "BYTEA NOT NULL CHECK (data = decode('01', 'hex'))";
|
|
45
|
+
}>, "added">>, "id">;
|
|
11
46
|
}>;
|
|
12
47
|
export {};
|
|
13
48
|
//# sourceMappingURL=updateFile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateFile.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/updateFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"updateFile.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/updateFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE/D,KAAK,IAAI,GAAG,IAAI,CACd,cAAc,EACd,aAAa,GAAG,MAAM,GAAG,eAAe,GAAG,wBAAwB,CACpE,GAAG;IACF,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AACF,eAAO,MAAM,UAAU,GACrB,cAAc,YAAY,EAC1B,QAAQ,eAAe,EACvB,sEAAsE,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC3E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInfo.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,EACb,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"getInfo.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,wBAAsB,OAAO,CAC3B,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,EACb,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,KAAK,CAAC,CAuBhB"}
|
|
@@ -18,7 +18,7 @@ async function getInfo(lang, _param2, _param3, tableRules, localParams) {
|
|
|
18
18
|
name: this.name,
|
|
19
19
|
...tableInfo,
|
|
20
20
|
columns: await getColumns_1.getRawColumns.call(this, lang, undefined, tableRules, localParams),
|
|
21
|
-
}, this.config, localParams?.isRemoteRequest?.clientInfo);
|
|
21
|
+
}, this.config, localParams?.isRemoteRequest?.clientInfo, this.dboBuilder.prostgles.resolvedAuditConfig);
|
|
22
22
|
const { columns, name, ...rest } = modifiedTableSchema;
|
|
23
23
|
return rest;
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getInfo.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getInfo.ts"],"names":[],"mappings":";;AAOA,
|
|
1
|
+
{"version":3,"file":"getInfo.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getInfo.ts"],"names":[],"mappings":";;AAOA,0BA8BC;AAlCD,6CAA0C;AAC1C,8CAA8C;AAGvC,KAAK,UAAU,OAAO,CAE3B,IAAa,EACb,OAAa,EACb,OAAa,EACb,UAA4B,EAC5B,WAAyB;IAEzB,MAAM,SAAS,GAAG,uBAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,IAAI,CAAC,IAAI,CAAC;QACd,OAAO,EAAE,SAAS;QAClB,WAAW;QACX,IAAI,EAAE,EAAE,IAAI,EAAE;QACd,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC7E,IAAI,CAAC,kBAAkB;QAAE,OAAO,SAAS,CAAC;IAE1C,MAAM,mBAAmB,GAAG,MAAM,kBAAkB,CAClD;QACE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,SAAS;QACZ,OAAO,EAAE,MAAM,0BAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC;KAClF,EACD,IAAI,CAAC,MAAM,EACX,WAAW,EAAE,eAAe,EAAE,UAAU,EACxC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,mBAAmB,CAC9C,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,mBAAmB,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getColumns.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/getColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,eAAO,MAAM,cAAc,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,YAAuC,CAAC;AAErF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,EAC9C,OAAO,CAAC,EAAE,SAAS,EACnB,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,mBAAmB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"getColumns.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/getColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,eAAO,MAAM,cAAc,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,YAAuC,CAAC;AAErF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,EAC9C,OAAO,CAAC,EAAE,SAAS,EACnB,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAwChC;AAED,sEAAsE;AACtE,wBAAsB,aAAa,CACjC,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,EAC9C,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA6FhC"}
|
|
@@ -16,7 +16,7 @@ async function getColumns(lang, params, _param3, tableRules, localParams) {
|
|
|
16
16
|
name: this.name,
|
|
17
17
|
...getRawInfo_1.getRawInfo.call(this, lang, tableRules, localParams),
|
|
18
18
|
columns: rawColumns,
|
|
19
|
-
}, this.config, localParams?.isRemoteRequest?.clientInfo);
|
|
19
|
+
}, this.config, localParams?.isRemoteRequest?.clientInfo, this.dboBuilder.prostgles.resolvedAuditConfig);
|
|
20
20
|
const columns = modifiedTableSchema?.columns ?? rawColumns;
|
|
21
21
|
await this._log({
|
|
22
22
|
command: "getColumns",
|