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.
Files changed (81) hide show
  1. package/README.md +0 -29
  2. package/dist/Audit/AuditTable.d.ts +5 -4
  3. package/dist/Audit/AuditTable.d.ts.map +1 -1
  4. package/dist/Audit/AuditTable.js +1 -1
  5. package/dist/Audit/AuditTable.js.map +1 -1
  6. package/dist/Audit/AuditTypes.d.ts +5 -0
  7. package/dist/Audit/AuditTypes.d.ts.map +1 -1
  8. package/dist/Audit/getAuditTableConfig.d.ts +1 -6
  9. package/dist/Audit/getAuditTableConfig.d.ts.map +1 -1
  10. package/dist/Audit/getAuditTableConfig.js +21 -29
  11. package/dist/Audit/getAuditTableConfig.js.map +1 -1
  12. package/dist/Audit/getAuditTriggerConfig.d.ts +4 -0
  13. package/dist/Audit/getAuditTriggerConfig.d.ts.map +1 -0
  14. package/dist/Audit/getAuditTriggerConfig.js +47 -0
  15. package/dist/Audit/getAuditTriggerConfig.js.map +1 -0
  16. package/dist/Audit/parseAuditConfig.d.ts +3 -3
  17. package/dist/Audit/parseAuditConfig.d.ts.map +1 -1
  18. package/dist/Audit/parseAuditConfig.js +38 -93
  19. package/dist/Audit/parseAuditConfig.js.map +1 -1
  20. package/dist/DboBuilder/TableHandler/updateFile.d.ts +37 -2
  21. package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
  22. package/dist/DboBuilder/ViewHandler/getInfo.d.ts.map +1 -1
  23. package/dist/DboBuilder/ViewHandler/getInfo.js +1 -1
  24. package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
  25. package/dist/DboBuilder/getColumns.d.ts.map +1 -1
  26. package/dist/DboBuilder/getColumns.js +1 -1
  27. package/dist/DboBuilder/getColumns.js.map +1 -1
  28. package/dist/DboBuilder/schema/getTablesForSchemaPostgresSQL.d.ts +2 -2
  29. package/dist/Prostgles.d.ts +1 -2
  30. package/dist/Prostgles.d.ts.map +1 -1
  31. package/dist/Prostgles.js +19 -3
  32. package/dist/Prostgles.js.map +1 -1
  33. package/dist/ProstglesTypes.d.ts +2 -2
  34. package/dist/ProstglesTypes.d.ts.map +1 -1
  35. package/dist/StorageClient/getFileTableConfig.d.ts +2 -4
  36. package/dist/StorageClient/getFileTableConfig.d.ts.map +1 -1
  37. package/dist/StorageClient/getFileTableConfig.js.map +1 -1
  38. package/dist/TableConfig/TableConfigTypes.d.ts +1 -1
  39. package/dist/TableConfig/TableConfigTypes.d.ts.map +1 -1
  40. package/dist/TableConfig/TableRowFromColumnDefinitions.d.ts +12 -0
  41. package/dist/TableConfig/TableRowFromColumnDefinitions.d.ts.map +1 -0
  42. package/dist/TableConfig/TableRowFromColumnDefinitions.js +3 -0
  43. package/dist/TableConfig/TableRowFromColumnDefinitions.js.map +1 -0
  44. package/dist/TableConfig/getTableTriggerQueries.d.ts +2 -2
  45. package/dist/TableConfig/getTableTriggerQueries.d.ts.map +1 -1
  46. package/dist/TableConfig/getTableTriggerQueries.js +8 -14
  47. package/dist/TableConfig/getTableTriggerQueries.js.map +1 -1
  48. package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
  49. package/dist/TableConfig/initTableConfig.js +0 -4
  50. package/dist/TableConfig/initTableConfig.js.map +1 -1
  51. package/dist/TableConfig/managedTriggerNames.d.ts.map +1 -1
  52. package/dist/TableConfig/managedTriggerNames.js +0 -1
  53. package/dist/TableConfig/managedTriggerNames.js.map +1 -1
  54. package/dist/TableConfig/syncTableTriggers.d.ts.map +1 -1
  55. package/dist/TableConfig/syncTableTriggers.js +10 -20
  56. package/dist/TableConfig/syncTableTriggers.js.map +1 -1
  57. package/dist/WebsocketAPI/getClientSchema.d.ts.map +1 -1
  58. package/dist/WebsocketAPI/getClientSchema.js +2 -1
  59. package/dist/WebsocketAPI/getClientSchema.js.map +1 -1
  60. package/dist/initProstgles.d.ts.map +1 -1
  61. package/dist/initProstgles.js +3 -0
  62. package/dist/initProstgles.js.map +1 -1
  63. package/lib/Audit/AuditTable.ts +4 -9
  64. package/lib/Audit/AuditTypes.ts +6 -0
  65. package/lib/Audit/getAuditTableConfig.ts +21 -41
  66. package/lib/Audit/getAuditTriggerConfig.ts +45 -0
  67. package/lib/Audit/parseAuditConfig.ts +44 -131
  68. package/lib/DboBuilder/ViewHandler/getInfo.ts +1 -0
  69. package/lib/DboBuilder/getColumns.ts +1 -0
  70. package/lib/Prostgles.ts +20 -4
  71. package/lib/ProstglesTypes.ts +2 -1
  72. package/lib/StorageClient/getFileTableConfig.ts +2 -13
  73. package/lib/TableConfig/TableConfigTypes.ts +1 -1
  74. package/lib/TableConfig/TableRowFromColumnDefinitions.ts +19 -0
  75. package/lib/TableConfig/getTableTriggerQueries.ts +16 -31
  76. package/lib/TableConfig/initTableConfig.ts +0 -3
  77. package/lib/TableConfig/managedTriggerNames.ts +0 -1
  78. package/lib/TableConfig/syncTableTriggers.ts +19 -33
  79. package/lib/WebsocketAPI/getClientSchema.ts +7 -1
  80. package/lib/initProstgles.ts +2 -0
  81. 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: "TEXT NOT NULL CHECK (operation IN ('INSERT', 'UPDATE', 'DELETE'))";
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,eAAO,MAAM,8BAA8B;;;;;;;;;;;;CAajC,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,MAAM,OAAO,8BAA8B,GAAG,CAAC,SAAS,WAAW,GACrE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAC9B,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,GACxD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAC9B,MAAM;CACb,CAAC;AACF,eAAO,MAAM,mBAAmB,EAE3B,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC"}
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"}
@@ -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: "TEXT NOT NULL CHECK (operation IN ('INSERT', 'UPDATE', 'DELETE'))",
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":";;;AAAa,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,EACP,mEAAmE;IACrE,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,OAAO;CACN,CAAC;AASE,QAAA,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAC5C,sCAA8B,CACJ,CAAC"}
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 function getAuditTableConfig(prgl: Prostgles, tableConfig: TableConfig | undefined): TableConfig | undefined;
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,EACV,WAAW,EACX,eAAe,EAChB,MAAM,iCAAiC,CAAC;AASzC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mFAAmF;IACnF,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,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,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,WAAW,GAAG,SAAS,CA2BzB;AAED,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
+ {"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
- ? managedTriggerNames_1.AUDIT_HISTORY_PROTECTION_PREFIX
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
- function getAuditTableConfig(prgl, tableConfig) {
22
+ const getAuditTableConfig = (prgl, tableConfig) => {
24
23
  const { audit } = prgl.opts;
25
- let result = { ...tableConfig };
26
- if (audit) {
27
- const { tableName } = audit;
28
- if (typeof tableName !== "string" || !tableName)
29
- throw new Error("audit.tableName is required");
30
- if (tableConfig?.[tableName]) {
31
- throw new Error("The audit table cannot also be defined in tableConfig");
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 Object.keys(result).length ? result : undefined;
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.parsedAuditConfig?.auditTableNames.includes(tableName) ?? false;
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":";;;AAoBA,gDAeC;AAGD,kDA8BC;AAED,oCAEC;AAxED,kDAA+C;AAO/C,6CAA8D;AAC9D,4EAI4C;AAQ5C,SAAgB,kBAAkB,CAChC,SAAiB,EACjB,OAAoE;IAEpE,OAAO;QACL,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1B,CAAC,CAAC,qDAA+B;YACjC,CAAC,CAAC,sDAAgC,CAAC,GAAG,IAAA,SAAG,EAAC,SAAS,CAAC,CAAC,EAAE;YACvD,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,OAAO,EAAE,WAAW;YACpB,KAAK,EACH,gHAAgH;SACnH;KACF,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,SAAgB,mBAAmB,CACjC,IAAe,EACf,WAAoC;IAEpC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;IAC5B,IAAI,MAAM,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;IAChC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAC5B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS;YAC7C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,IAAI,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,GAAG;YACP,CAAC,SAAS,CAAC,EAAE;gBACX,OAAO,EAAE,2CAA8B;gBACvC,QAAQ,EAAE,kBAAkB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;aAC1E;YACD,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CACzC,IAAI,CAAC,iBAAiB,EAAE,YAAY,IAAI,EAAE,CAC3C,EAAE,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,GAAG;YACb,GAAG,MAAM,CAAC,IAAI,CAAC;YACf,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE;SAC5D,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAgB,YAAY,CAAC,IAAe,EAAE,SAAiB;IAC7D,OAAO,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;AAC9E,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"}
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,4 @@
1
+ import type { TableConfig } from "../TableConfig/TableConfigTypes";
2
+ import type { ResolvedAuditConfig } from "./AuditTypes";
3
+ export declare const getAuditTriggerConfig: (audit: ResolvedAuditConfig) => TableConfig;
4
+ //# sourceMappingURL=getAuditTriggerConfig.d.ts.map
@@ -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 { type ParsedAuditConfig } from "./getAuditTableConfig";
3
- /** Resolve column defaults against the completed schema; generate tableConfig entries only. */
4
- export declare function parseAuditConfig(prgl: Prostgles): Promise<ParsedAuditConfig>;
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":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,+FAA+F;AAC/F,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,iBAAiB,CAAC,CAgJ5B"}
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 = 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 getAuditTableConfig_1 = require("./getAuditTableConfig");
7
- /** Resolve column defaults against the completed schema; generate tableConfig entries only. */
8
- async function parseAuditConfig(prgl) {
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 result;
31
- const tableOptions = audit.tables;
32
- if (tableOptions !== undefined &&
33
- (!tableOptions ||
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 entries = Object.entries(audit.tables ?? {}).filter(([, value]) => value !== undefined);
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
- if (value !== 0 &&
46
- value !== 1 &&
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 relation = relations.find((r) => r.oid === table.oid);
56
- const isHistory = auditTableNames.includes(table.name);
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}. Select ordinary, non-partitioned tables.`);
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
- if (Object.keys(options).some((k) => !["entityType", "idColumns", "excludeColumns"].includes(k)))
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 (!Array.isArray(ids) || !ids.length)
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 (!Array.isArray(list) ||
79
- new Set(list).size !== list.length ||
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
- if (options.entityType !== undefined &&
86
- (typeof options.entityType !== "string" || !options.entityType))
55
+ }
56
+ if (options.entityType !== undefined && !options.entityType) {
87
57
  throw new Error(`Invalid audit entityType for ${table.name}`);
88
- const functionName = (0, getAuditTableConfig_1.getAuditWriterName)(audit.tableName, table.name);
89
- result.tableConfigs[table.name] = {
90
- triggers: {
91
- ...(0, getAuditTableConfig_1.getAuditProtection)(audit.tableName, ["truncate"]),
92
- [functionName]: {
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":"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"}
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<FileTableRow, "added"> & Partial<Pick<FileTableRow, "added">>, "id">;
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;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAC3E,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
+ {"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,CAsBhB"}
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,0BA6BC;AAjCD,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,CACzC,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,mBAAmB,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC"}
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,CAuChC;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"}
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",