prostgles-server 4.2.604 → 4.2.606

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 (29) hide show
  1. package/dist/DboBuilder/ViewHandler/getInfo.d.ts.map +1 -1
  2. package/dist/DboBuilder/ViewHandler/getInfo.js +5 -46
  3. package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
  4. package/dist/DboBuilder/ViewHandler/getRawInfo.d.ts +7 -0
  5. package/dist/DboBuilder/ViewHandler/getRawInfo.d.ts.map +1 -0
  6. package/dist/DboBuilder/ViewHandler/getRawInfo.js +51 -0
  7. package/dist/DboBuilder/ViewHandler/getRawInfo.js.map +1 -0
  8. package/dist/DboBuilder/getColumns.d.ts +5 -0
  9. package/dist/DboBuilder/getColumns.d.ts.map +1 -1
  10. package/dist/DboBuilder/getColumns.js +80 -74
  11. package/dist/DboBuilder/getColumns.js.map +1 -1
  12. package/dist/TableConfig/getTableTriggerQueries.d.ts +5 -0
  13. package/dist/TableConfig/getTableTriggerQueries.d.ts.map +1 -0
  14. package/dist/TableConfig/getTableTriggerQueries.js +61 -0
  15. package/dist/TableConfig/getTableTriggerQueries.js.map +1 -0
  16. package/dist/TableConfig/getTableTriggerQueries.spec.d.ts +2 -0
  17. package/dist/TableConfig/getTableTriggerQueries.spec.d.ts.map +1 -0
  18. package/dist/TableConfig/getTableTriggerQueries.spec.js +56 -0
  19. package/dist/TableConfig/getTableTriggerQueries.spec.js.map +1 -0
  20. package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
  21. package/dist/TableConfig/initTableConfig.js +2 -57
  22. package/dist/TableConfig/initTableConfig.js.map +1 -1
  23. package/lib/DboBuilder/ViewHandler/getInfo.ts +5 -58
  24. package/lib/DboBuilder/ViewHandler/getRawInfo.ts +65 -0
  25. package/lib/DboBuilder/getColumns.ts +105 -92
  26. package/lib/TableConfig/getTableTriggerQueries.spec.ts +77 -0
  27. package/lib/TableConfig/getTableTriggerQueries.ts +74 -0
  28. package/lib/TableConfig/initTableConfig.ts +2 -67
  29. package/package.json +1 -1
@@ -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;AACjD,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,CA6EhB"}
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,64 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getInfo = getInfo;
4
+ const getRawInfo_1 = require("./getRawInfo");
5
+ const getColumns_1 = require("../getColumns");
4
6
  async function getInfo(lang, _param2, _param3, tableRules, localParams) {
5
- const validatedTableRules = this.getValidatedRules(tableRules, localParams);
6
- const fileTableName = this.dboBuilder.prostgles.opts.fileTable?.tableName;
7
+ const tableInfo = getRawInfo_1.getRawInfo.call(this, lang, tableRules, localParams);
7
8
  await this._log({
8
9
  command: "getInfo",
9
10
  localParams,
10
11
  data: { lang },
11
12
  duration: 0,
12
13
  });
13
- const allowedFieldsToSelect = this.parseFieldFilter(tableRules?.select?.fields);
14
- const { requiredNestedInserts, allowedNestedInserts } = tableRules?.insert ?? {};
15
- const label = this.dboBuilder.prostgles.tableConfigurator?.getTableLabel({
16
- tableName: this.name,
17
- lang,
18
- });
19
- const tableInfo = {
20
- oid: this.tableOrViewInfo.oid,
21
- comment: this.tableOrViewInfo.comment,
22
- qualifiedNameParts: this.tableOrViewInfo.qualifiedNameParts,
23
- label,
24
- isFileTable: !this.is_media ? undefined : ({
25
- allowedNestedInserts,
26
- }),
27
- isView: this.isView,
28
- hasFiles: Boolean(!this.is_media &&
29
- fileTableName &&
30
- this.columns.some((c) => c.references?.some((r) => r.ftable === fileTableName))),
31
- fileTableName,
32
- dynamicRules: {
33
- update: Boolean(tableRules?.update?.dynamicFields?.length),
34
- },
35
- /**
36
- * Only show column groups that are fully allowed to be selected by the user
37
- */
38
- uniqueColumnGroups: this.tableOrViewInfo.uniqueColumnGroups?.filter((g) => !localParams || g.every((c) => allowedFieldsToSelect.includes(c))),
39
- publishInfo: {
40
- select: validatedTableRules.select && {
41
- disabledMethods: validatedTableRules.select.disableMethods,
42
- syncConfig: this.dboBuilder.prostgles.tableConfigurator?.getTableSyncConfig(this.name),
43
- },
44
- insert: validatedTableRules.insert && {
45
- requiredNestedInserts,
46
- allowedNestedInserts: allowedNestedInserts?.map((t) => t.table),
47
- },
48
- update: validatedTableRules.update && {
49
- disabledMethods: tableRules?.update?.disableMethods,
50
- },
51
- delete: validatedTableRules.delete && {},
52
- },
53
- };
54
14
  const modifyClientSchema = this.dboBuilder.prostgles.opts.modifyClientSchema;
55
- if (!modifyClientSchema) {
15
+ if (!modifyClientSchema)
56
16
  return tableInfo;
57
- }
58
17
  const modifiedTableSchema = await modifyClientSchema({
59
18
  name: this.name,
60
19
  ...tableInfo,
61
- columns: [],
20
+ columns: await getColumns_1.getRawColumns.call(this, lang, undefined, tableRules, localParams),
62
21
  }, this.config, localParams?.isRemoteRequest?.clientInfo);
63
22
  const { columns, name, ...rest } = modifiedTableSchema;
64
23
  return rest;
@@ -1 +1 @@
1
- {"version":3,"file":"getInfo.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getInfo.ts"],"names":[],"mappings":";;AAKA,0BAoFC;AApFM,KAAK,UAAU,OAAO,CAE3B,IAAa,EACb,OAAa,EACb,OAAa,EACb,UAA4B,EAC5B,WAAyB;IAEzB,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAE5E,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;IAE1E,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,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChF,MAAM,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,GAAG,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC;IACjF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC;QACvE,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,IAAI;KACL,CAAC,CAAC;IACH,MAAM,SAAS,GAAU;QACvB,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG;QAC7B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO;QACrC,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB;QAC3D,KAAK;QACL,WAAW,EACT,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAC3B;YACE,oBAAoB;SACrB,CACF;QACH,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,OAAO,CACf,CAAC,IAAI,CAAC,QAAQ;YACd,aAAa;YACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAChF;QACD,aAAa;QACb,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;SAC3D;QACD;;WAEG;QACH,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,MAAM,CACjE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACzE;QACD,WAAW,EAAE;YACX,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI;gBACpC,eAAe,EAAE,mBAAmB,CAAC,MAAM,CAAC,cAAc;gBAC1D,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;aACvF;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI;gBACpC,qBAAqB;gBACrB,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aAChE;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI;gBACpC,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;aACpD;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI,EAAE;SACzC;KACF,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAC7E,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,kBAAkB,CAClD;QACE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,SAAS;QACZ,OAAO,EAAE,EAAE;KACZ,EACD,IAAI,CAAC,MAAM,EACX,WAAW,EAAE,eAAe,EAAE,UAAU,CACzC,CAAC;IAEF,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,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"}
@@ -0,0 +1,7 @@
1
+ import { type TableInfo as TInfo } from "prostgles-types/dist";
2
+ import type { ParsedTableRule } from "../../PublishParser/PublishParser";
3
+ import type { LocalParams } from "../DboBuilder";
4
+ import type { ViewHandler } from "./ViewHandler";
5
+ /** Table metadata before client schema customisation. */
6
+ export declare function getRawInfo(this: ViewHandler, lang?: string, tableRules?: ParsedTableRule, localParams?: LocalParams): TInfo;
7
+ //# sourceMappingURL=getRawInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRawInfo.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getRawInfo.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;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,yDAAyD;AACzD,wBAAgB,UAAU,CACxB,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,eAAe,EAC5B,WAAW,CAAC,EAAE,WAAW,GACxB,KAAK,CAqDP"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRawInfo = getRawInfo;
4
+ /** Table metadata before client schema customisation. */
5
+ function getRawInfo(lang, tableRules, localParams) {
6
+ const validatedTableRules = this.getValidatedRules(tableRules, localParams);
7
+ const fileTableName = this.dboBuilder.prostgles.opts.fileTable?.tableName;
8
+ const allowedFieldsToSelect = this.parseFieldFilter(tableRules?.select?.fields);
9
+ const { requiredNestedInserts, allowedNestedInserts } = tableRules?.insert ?? {};
10
+ const label = this.dboBuilder.prostgles.tableConfigurator?.getTableLabel({
11
+ tableName: this.name,
12
+ lang,
13
+ });
14
+ const tableInfo = {
15
+ oid: this.tableOrViewInfo.oid,
16
+ comment: this.tableOrViewInfo.comment,
17
+ qualifiedNameParts: this.tableOrViewInfo.qualifiedNameParts,
18
+ label,
19
+ isFileTable: !this.is_media ? undefined : ({
20
+ allowedNestedInserts,
21
+ }),
22
+ isView: this.isView,
23
+ hasFiles: Boolean(!this.is_media &&
24
+ fileTableName &&
25
+ this.columns.some((c) => c.references?.some((r) => r.ftable === fileTableName))),
26
+ fileTableName,
27
+ dynamicRules: {
28
+ update: Boolean(tableRules?.update?.dynamicFields?.length),
29
+ },
30
+ /**
31
+ * Only show column groups that are fully allowed to be selected by the user
32
+ */
33
+ uniqueColumnGroups: this.tableOrViewInfo.uniqueColumnGroups?.filter((g) => !localParams || g.every((c) => allowedFieldsToSelect.includes(c))),
34
+ publishInfo: {
35
+ select: validatedTableRules.select && {
36
+ disabledMethods: validatedTableRules.select.disableMethods,
37
+ syncConfig: this.dboBuilder.prostgles.tableConfigurator?.getTableSyncConfig(this.name),
38
+ },
39
+ insert: validatedTableRules.insert && {
40
+ requiredNestedInserts,
41
+ allowedNestedInserts: allowedNestedInserts?.map((t) => t.table),
42
+ },
43
+ update: validatedTableRules.update && {
44
+ disabledMethods: tableRules?.update?.disableMethods,
45
+ },
46
+ delete: validatedTableRules.delete && {},
47
+ },
48
+ };
49
+ return tableInfo;
50
+ }
51
+ //# sourceMappingURL=getRawInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRawInfo.js","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/getRawInfo.ts"],"names":[],"mappings":";;AAMA,gCA0DC;AA3DD,yDAAyD;AACzD,SAAgB,UAAU,CAExB,IAAa,EACb,UAA4B,EAC5B,WAAyB;IAEzB,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;IAC1E,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChF,MAAM,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,GAAG,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC;IACjF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC;QACvE,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,IAAI;KACL,CAAC,CAAC;IACH,MAAM,SAAS,GAAU;QACvB,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG;QAC7B,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,OAAO;QACrC,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB;QAC3D,KAAK;QACL,WAAW,EACT,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAC3B;YACE,oBAAoB;SACrB,CACF;QACH,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,OAAO,CACf,CAAC,IAAI,CAAC,QAAQ;YACd,aAAa;YACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAChF;QACD,aAAa;QACb,YAAY,EAAE;YACZ,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;SAC3D;QACD;;WAEG;QACH,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,MAAM,CACjE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACzE;QACD,WAAW,EAAE;YACX,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI;gBACpC,eAAe,EAAE,mBAAmB,CAAC,MAAM,CAAC,cAAc;gBAC1D,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;aACvF;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI;gBACpC,qBAAqB;gBACrB,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aAChE;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI;gBACpC,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;aACpD;YACD,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI,EAAE;SACzC;KACF,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -8,4 +8,9 @@ export declare function getColumns(this: ViewHandler, lang?: string, params?: {
8
8
  rule: "update";
9
9
  filter: AnyObject;
10
10
  }, _param3?: undefined, tableRules?: ParsedTableRule, localParams?: LocalParams): Promise<ValidatedColumnInfo[]>;
11
+ /** Permission-filtered columns before client schema customisation. */
12
+ export declare function getRawColumns(this: ViewHandler, lang?: string, params?: {
13
+ rule: "update";
14
+ filter: AnyObject;
15
+ }, tableRules?: ParsedTableRule, localParams?: LocalParams): Promise<ValidatedColumnInfo[]>;
11
16
  //# sourceMappingURL=getColumns.d.ts.map
@@ -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;AAE7D,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,CAiIhC"}
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"}
@@ -2,89 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isTableHandler = void 0;
4
4
  exports.getColumns = getColumns;
5
+ exports.getRawColumns = getRawColumns;
5
6
  const prostgles_types_1 = require("prostgles-types");
6
7
  const DboBuilder_1 = require("./DboBuilder");
8
+ const getRawInfo_1 = require("./ViewHandler/getRawInfo");
7
9
  const isTableHandler = (v) => "parseUpdateRules" in v;
8
10
  exports.isTableHandler = isTableHandler;
9
11
  async function getColumns(lang, params, _param3, tableRules, localParams) {
10
12
  const start = Date.now();
11
13
  try {
12
- const rules = this.getValidatedRules(tableRules, localParams);
13
- let dynamicUpdateFields = this.column_names;
14
- if (params && tableRules && (0, exports.isTableHandler)(this)) {
15
- if (!(0, prostgles_types_1.isObject)(params) ||
16
- !(0, prostgles_types_1.isObject)(params.filter) ||
17
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
18
- params.rule !== "update") {
19
- throw ("params must be { rule: 'update', filter: object } but received: " +
20
- JSON.stringify(params));
21
- }
22
- if (!tableRules.update) {
23
- dynamicUpdateFields = [];
24
- }
25
- else {
26
- const { filter } = params;
27
- const updateRules = await this.parseUpdateRules(filter, undefined, tableRules, localParams);
28
- dynamicUpdateFields = updateRules.fields;
29
- }
30
- }
31
- const rawColumns = this.columns
32
- .filter((c) => {
33
- const { insert, select, update } = rules;
34
- return [insert, select, update]
35
- .filter(prostgles_types_1.isDefined)
36
- .flatMap((rule) => rule.fields)
37
- .includes(c.name);
38
- })
39
- .map((_c) => {
40
- const c = { ..._c };
41
- const label = capitalizeFirstLetter(c.name, " ");
42
- const select = !!c.privileges.SELECT;
43
- const insert = !!c.privileges.INSERT;
44
- const _delete = !!this.tableOrViewInfo.privileges.delete;
45
- let update = !!c.privileges.UPDATE;
46
- const prostgles = this.dboBuilder.prostgles;
47
- const fileConfig = getFileColumnInfo({
48
- colName: c.name,
49
- tableHandler: this,
50
- });
51
- /** Do not allow updates to file table unless it's to delete fields */
52
- if (prostgles.opts.fileTable?.tableName === this.name) {
53
- update = false;
54
- }
55
- const nonOrderableUD_Types = [...prostgles_types_1._PG_geometric, "xml"];
56
- const result = {
57
- ...(0, prostgles_types_1.omitKeys)(c, ["privileges"]),
58
- label,
59
- tsDataType: (0, prostgles_types_1.postgresToTsType)(c.udt_name),
60
- insert: insert &&
61
- !!rules.insert?.fields.includes(c.name) &&
62
- tableRules?.insert?.forcedData?.[c.name] === undefined &&
63
- c.is_updatable,
64
- select: select && !!rules.select?.fields.includes(c.name),
65
- orderBy: select &&
66
- !!rules.select?.orderByFields.includes(c.name) &&
67
- !nonOrderableUD_Types.includes(c.udt_name),
68
- filter: !!rules.select?.filterFields.includes(c.name),
69
- update: update &&
70
- !!rules.update?.fields.includes(c.name) &&
71
- tableRules?.update?.forcedData?.[c.name] === undefined &&
72
- c.is_updatable &&
73
- dynamicUpdateFields.includes(c.name),
74
- delete: _delete && !!rules.delete?.filterFields.includes(c.name),
75
- ...(prostgles.tableConfigurator?.getColInfo({
76
- table: this.name,
77
- col: c.name,
78
- lang,
79
- }) || {}),
80
- ...(fileConfig && { file: fileConfig }),
81
- };
82
- return result;
83
- })
84
- .filter((c) => c.select || c.update || c.delete || c.insert);
14
+ const rawColumns = await getRawColumns.call(this, lang, params, tableRules, localParams);
85
15
  const modifiedTableSchema = await this.dboBuilder.prostgles.opts.modifyClientSchema?.({
86
16
  name: this.name,
87
- ...(await this.getInfo()),
17
+ ...getRawInfo_1.getRawInfo.call(this, lang, tableRules, localParams),
88
18
  columns: rawColumns,
89
19
  }, this.config, localParams?.isRemoteRequest?.clientInfo);
90
20
  const columns = modifiedTableSchema?.columns ?? rawColumns;
@@ -112,6 +42,82 @@ async function getColumns(lang, params, _param3, tableRules, localParams) {
112
42
  });
113
43
  }
114
44
  }
45
+ /** Permission-filtered columns before client schema customisation. */
46
+ async function getRawColumns(lang, params, tableRules, localParams) {
47
+ const rules = this.getValidatedRules(tableRules, localParams);
48
+ let dynamicUpdateFields = this.column_names;
49
+ if (params && tableRules && (0, exports.isTableHandler)(this)) {
50
+ if (!(0, prostgles_types_1.isObject)(params) ||
51
+ !(0, prostgles_types_1.isObject)(params.filter) ||
52
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
53
+ params.rule !== "update") {
54
+ throw ("params must be { rule: 'update', filter: object } but received: " + JSON.stringify(params));
55
+ }
56
+ if (!tableRules.update) {
57
+ dynamicUpdateFields = [];
58
+ }
59
+ else {
60
+ const { filter } = params;
61
+ const updateRules = await this.parseUpdateRules(filter, undefined, tableRules, localParams);
62
+ dynamicUpdateFields = updateRules.fields;
63
+ }
64
+ }
65
+ const rawColumns = this.columns
66
+ .filter((c) => {
67
+ const { insert, select, update } = rules;
68
+ return [insert, select, update]
69
+ .filter(prostgles_types_1.isDefined)
70
+ .flatMap((rule) => rule.fields)
71
+ .includes(c.name);
72
+ })
73
+ .map((_c) => {
74
+ const c = { ..._c };
75
+ const label = capitalizeFirstLetter(c.name, " ");
76
+ const select = !!c.privileges.SELECT;
77
+ const insert = !!c.privileges.INSERT;
78
+ const _delete = !!this.tableOrViewInfo.privileges.delete;
79
+ let update = !!c.privileges.UPDATE;
80
+ const prostgles = this.dboBuilder.prostgles;
81
+ const fileConfig = getFileColumnInfo({
82
+ colName: c.name,
83
+ tableHandler: this,
84
+ });
85
+ /** Do not allow updates to file table unless it's to delete fields */
86
+ if (prostgles.opts.fileTable?.tableName === this.name) {
87
+ update = false;
88
+ }
89
+ const nonOrderableUD_Types = [...prostgles_types_1._PG_geometric, "xml"];
90
+ const result = {
91
+ ...(0, prostgles_types_1.omitKeys)(c, ["privileges"]),
92
+ label,
93
+ tsDataType: (0, prostgles_types_1.postgresToTsType)(c.udt_name),
94
+ insert: insert &&
95
+ !!rules.insert?.fields.includes(c.name) &&
96
+ tableRules?.insert?.forcedData?.[c.name] === undefined &&
97
+ c.is_updatable,
98
+ select: select && !!rules.select?.fields.includes(c.name),
99
+ orderBy: select &&
100
+ !!rules.select?.orderByFields.includes(c.name) &&
101
+ !nonOrderableUD_Types.includes(c.udt_name),
102
+ filter: !!rules.select?.filterFields.includes(c.name),
103
+ update: update &&
104
+ !!rules.update?.fields.includes(c.name) &&
105
+ tableRules?.update?.forcedData?.[c.name] === undefined &&
106
+ c.is_updatable &&
107
+ dynamicUpdateFields.includes(c.name),
108
+ delete: _delete && !!rules.delete?.filterFields.includes(c.name),
109
+ ...(prostgles.tableConfigurator?.getColInfo({
110
+ table: this.name,
111
+ col: c.name,
112
+ lang,
113
+ }) || {}),
114
+ ...(fileConfig && { file: fileConfig }),
115
+ };
116
+ return result;
117
+ })
118
+ .filter((c) => c.select || c.update || c.delete || c.insert);
119
+ return rawColumns;
120
+ }
115
121
  const capitalizeFirstLetter = (string, nonAlphaNumericReplacement = " ") => {
116
122
  const str = string.replace(/[\W_]+/g, nonAlphaNumericReplacement);
117
123
  return str.charAt(0).toUpperCase() + str.slice(1);
@@ -1 +1 @@
1
- {"version":3,"file":"getColumns.js","sourceRoot":"","sources":["../../lib/DboBuilder/getColumns.ts"],"names":[],"mappings":";;;AAUA,gCAwIC;AAjJD,qDAAiG;AAGjG,6CAAqF;AAI9E,MAAM,cAAc,GAAG,CAAC,CAAM,EAAqB,EAAE,CAAC,kBAAkB,IAAI,CAAC,CAAC;AAAxE,QAAA,cAAc,kBAA0D;AAE9E,KAAK,UAAU,UAAU,CAE9B,IAAa,EACb,MAA8C,EAC9C,OAAmB,EACnB,UAA4B,EAC5B,WAAyB;IAEzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAE9D,IAAI,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC;QAE5C,IAAI,MAAM,IAAI,UAAU,IAAI,IAAA,sBAAc,EAAC,IAAI,CAAC,EAAE,CAAC;YACjD,IACE,CAAC,IAAA,0BAAQ,EAAC,MAAM,CAAC;gBACjB,CAAC,IAAA,0BAAQ,EAAC,MAAM,CAAC,MAAM,CAAC;gBACxB,uEAAuE;gBACvE,MAAM,CAAC,IAAI,KAAK,QAAQ,EACxB,CAAC;gBACD,MAAM,CACJ,kEAAkE;oBAClE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CACvB,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBACvB,mBAAmB,GAAG,EAAE,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;gBAC1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;gBAC5F,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAA0B,IAAI,CAAC,OAAO;aACnD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;YAEzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;iBAC5B,MAAM,CAAC,2BAAS,CAAC;iBACjB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;iBAC9B,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACV,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;YAEpB,MAAM,KAAK,GAAG,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;YACrC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;YACrC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC;YACzD,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;YAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC;gBACnC,OAAO,EAAE,CAAC,CAAC,IAAI;gBACf,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,sEAAsE;YACtE,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtD,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;YAED,MAAM,oBAAoB,GAAa,CAAC,GAAG,+BAAa,EAAE,KAAK,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAwB;gBAClC,GAAG,IAAA,0BAAQ,EAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;gBAC9B,KAAK;gBACL,UAAU,EAAE,IAAA,kCAAgB,EAAC,CAAC,CAAC,QAAQ,CAAC;gBACxC,MAAM,EACJ,MAAM;oBACN,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;oBACvC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS;oBACtD,CAAC,CAAC,YAAY;gBAChB,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBACzD,OAAO,EACL,MAAM;oBACN,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC9C,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC5C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrD,MAAM,EACJ,MAAM;oBACN,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;oBACvC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS;oBACtD,CAAC,CAAC,YAAY;oBACd,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtC,MAAM,EAAE,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChE,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,UAAU,CAAC;oBAC1C,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,GAAG,EAAE,CAAC,CAAC,IAAI;oBACX,IAAI;iBACL,CAAC,IAAI,EAAE,CAAC;gBACT,GAAG,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;aACxC,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,CACnF;YACE,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,EAAE,UAAU;SACpB,EACD,IAAI,CAAC,MAAM,EACX,WAAW,EAAE,eAAe,EAAE,UAAU,CACzC,CAAC;QAEF,MAAM,OAAO,GAAG,mBAAmB,EAAE,OAAO,IAAI,UAAU,CAAC;QAE3D,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,YAAY;YACrB,WAAW;YACX,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC7B,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,YAAY;YACrB,WAAW;YACX,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;YAC5B,KAAK,EAAE,IAAA,6BAAgB,EAAC,CAAC,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,IAAA,gDAAmC,EAAC,CAAC,EAAE;YAC3C,IAAI,EAAE,aAAa;YACnB,WAAW;YACX,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;SACrC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,0BAA0B,GAAG,GAAG,EAAE,EAAE;IACjF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;IAClE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,IAG1B,EAA2C,EAAE;IAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;IAC9E,IAAI,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACvC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC;IACpC,MAAM,WAAW,GAAG,eAAe,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,sBAAsB,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CACtD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,OAAO;QAClB,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,eAAe,CAAC,SAAS,CAAC,CAC1E,CAAC;IACF,MAAM,aAAa,GAAG,EAAE,eAAe,EAAE,GAAG,EAAW,CAAC;IACxD,IAAI,sBAAsB,EAAE,CAAC;QAC3B,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACnD,OAAO,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC;QAChE,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"getColumns.js","sourceRoot":"","sources":["../../lib/DboBuilder/getColumns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { DB } from "../initProstgles";
2
+ import type { TableConfig } from "./TableConfigTypes";
3
+ /** Reconcile only triggers owned by tableConfig; preserve manually created triggers. */
4
+ export declare const getTableTriggerQueries: (db: DB, tableName: string, tableConfig: TableConfig[string], asName: (name: string) => string) => Promise<string[]>;
5
+ //# sourceMappingURL=getTableTriggerQueries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTableTriggerQueries.d.ts","sourceRoot":"","sources":["../../lib/TableConfig/getTableTriggerQueries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,GACjC,IAAI,EAAE,EACN,WAAW,MAAM,EACjB,aAAa,WAAW,CAAC,MAAM,CAAC,EAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,KAC/B,OAAO,CAAC,MAAM,EAAE,CA4DlB,CAAC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTableTriggerQueries = void 0;
4
+ const pg_promise_1 = require("pg-promise");
5
+ const md5_1 = require("prostgles-types/dist/md5");
6
+ const MANAGED_TRIGGER_PREFIX = "prostgles.tableConfig:";
7
+ /** Reconcile only triggers owned by tableConfig; preserve manually created triggers. */
8
+ const getTableTriggerQueries = async (db, tableName, tableConfig, asName) => {
9
+ const tableIdent = asName(tableName);
10
+ const existing = await db.any(`
11
+ SELECT t.tgname AS name, obj_description(t.oid, 'pg_trigger') AS comment
12
+ FROM pg_trigger t
13
+ WHERE t.tgrelid = to_regclass($1) AND NOT t.tgisinternal
14
+ `, [tableIdent]);
15
+ const queries = [];
16
+ const desired = new Set();
17
+ const isDropped = tableConfig.dropIfExists || tableConfig.dropIfExistsCascade;
18
+ for (const [functionName, trigger] of Object.entries(tableConfig.triggers ?? {})) {
19
+ const functionIdent = asName(functionName);
20
+ let functionAdded = false;
21
+ for (const action of trigger.actions) {
22
+ const name = `${functionName}_${action}`;
23
+ desired.add(name);
24
+ const triggerIdent = asName(name);
25
+ const transitionTables = trigger.forEach === "row"
26
+ ? ""
27
+ : [
28
+ "REFERENCING",
29
+ action !== "delete" ? "NEW TABLE AS new_table" : "",
30
+ action !== "insert" ? "OLD TABLE AS old_table" : "",
31
+ ].join(" ");
32
+ const definition = `CREATE TRIGGER ${triggerIdent}
33
+ ${trigger.type} ${action} ON ${tableIdent}
34
+ ${transitionTables} FOR EACH ${trigger.forEach}
35
+ EXECUTE FUNCTION ${functionIdent}();`;
36
+ const comment = MANAGED_TRIGGER_PREFIX + (0, md5_1.md5)(definition + trigger.query);
37
+ const previous = existing.find((entry) => entry.name === name);
38
+ if (!isDropped && previous?.comment === comment)
39
+ continue;
40
+ if (!functionAdded) {
41
+ queries.push(`CREATE OR REPLACE FUNCTION ${functionIdent}()
42
+ RETURNS trigger LANGUAGE plpgsql AS ${pg_promise_1.as.text(trigger.query)};`);
43
+ functionAdded = true;
44
+ }
45
+ queries.push(`DROP TRIGGER IF EXISTS ${triggerIdent} ON ${tableIdent};`);
46
+ queries.push(definition);
47
+ queries.push(`COMMENT ON TRIGGER ${triggerIdent} ON ${tableIdent} IS ${pg_promise_1.as.text(comment)};`);
48
+ }
49
+ }
50
+ if (!isDropped) {
51
+ for (const trigger of existing) {
52
+ if (trigger.comment?.startsWith(MANAGED_TRIGGER_PREFIX) &&
53
+ !desired.has(trigger.name)) {
54
+ queries.push(`DROP TRIGGER ${asName(trigger.name)} ON ${tableIdent};`);
55
+ }
56
+ }
57
+ }
58
+ return queries;
59
+ };
60
+ exports.getTableTriggerQueries = getTableTriggerQueries;
61
+ //# sourceMappingURL=getTableTriggerQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTableTriggerQueries.js","sourceRoot":"","sources":["../../lib/TableConfig/getTableTriggerQueries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getTableTriggerQueries.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTableTriggerQueries.spec.d.ts","sourceRoot":"","sources":["../../lib/TableConfig/getTableTriggerQueries.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
+ const node_test_1 = __importDefault(require("node:test"));
8
+ const prostgles_types_1 = require("prostgles-types");
9
+ const getTableTriggerQueries_1 = require("./getTableTriggerQueries");
10
+ void (0, node_test_1.default)("trigger configuration quotes names and bodies and preserves unmanaged triggers", async () => {
11
+ const db = {
12
+ any: () => Promise.resolve([
13
+ { name: "manual", comment: null },
14
+ { name: "old_insert", comment: "prostgles.tableConfig:old" },
15
+ ]),
16
+ };
17
+ const queries = await (0, getTableTriggerQueries_1.getTableTriggerQueries)(db, "Odd ' table", {
18
+ triggers: {
19
+ audit: {
20
+ type: "after",
21
+ actions: ["insert"],
22
+ forEach: "row",
23
+ query: "BEGIN RAISE NOTICE '$$'; RETURN NULL; END;",
24
+ },
25
+ },
26
+ }, prostgles_types_1.asName);
27
+ strict_1.default.ok(queries.some((query) => query.includes('ON "Odd \' table"')));
28
+ strict_1.default.ok(queries.some((query) => query.includes("AS 'BEGIN RAISE NOTICE ''$$''; RETURN NULL; END;';")));
29
+ strict_1.default.ok(queries.some((query) => query.includes('DROP TRIGGER "old_insert"')));
30
+ strict_1.default.ok(!queries.some((query) => query.includes('DROP TRIGGER "manual"')));
31
+ });
32
+ void (0, node_test_1.default)("unchanged triggers do not produce DDL; changed bodies replace them", async () => {
33
+ const trigger = {
34
+ type: "after",
35
+ actions: ["update"],
36
+ forEach: "row",
37
+ query: "BEGIN RETURN NULL; END;",
38
+ };
39
+ const config = {
40
+ triggers: { audit: { ...trigger, actions: [...trigger.actions] } },
41
+ };
42
+ const first = await (0, getTableTriggerQueries_1.getTableTriggerQueries)({ any: () => Promise.resolve([]) }, "records", config, prostgles_types_1.asName);
43
+ const commentQuery = first.find((query) => query.startsWith("COMMENT ON"));
44
+ const comment = commentQuery.split(" IS '")[1].slice(0, -2);
45
+ const db = {
46
+ any: () => Promise.resolve([{ name: "audit_update", comment }]),
47
+ };
48
+ strict_1.default.deepEqual(await (0, getTableTriggerQueries_1.getTableTriggerQueries)(db, "records", config, prostgles_types_1.asName), []);
49
+ config.triggers.audit.query =
50
+ "BEGIN RAISE NOTICE 'changed'; RETURN NULL; END;";
51
+ strict_1.default.ok((await (0, getTableTriggerQueries_1.getTableTriggerQueries)(db, "records", config, prostgles_types_1.asName)).some((query) => query.startsWith("CREATE OR REPLACE FUNCTION")));
52
+ strict_1.default.deepEqual(await (0, getTableTriggerQueries_1.getTableTriggerQueries)(db, "records", {}, prostgles_types_1.asName), [
53
+ 'DROP TRIGGER "audit_update" ON "records";',
54
+ ]);
55
+ });
56
+ //# sourceMappingURL=getTableTriggerQueries.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTableTriggerQueries.spec.js","sourceRoot":"","sources":["../../lib/TableConfig/getTableTriggerQueries.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"initTableConfig.d.ts","sourceRoot":"","sources":["../../lib/TableConfig/initTableConfig.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,eAAO,MAAM,eAAe,GAAmB,MAAM,iBAAiB,uBAmVrE,CAAC"}
1
+ {"version":3,"file":"initTableConfig.d.ts","sourceRoot":"","sources":["../../lib/TableConfig/initTableConfig.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,eAAO,MAAM,eAAe,GAAmB,MAAM,iBAAiB,uBAiRrE,CAAC"}
@@ -7,6 +7,7 @@ const fetchTableConstraints_1 = require("./fetchTableConstraints");
7
7
  const getConstraintDefinitionQueries_1 = require("./getConstraintDefinitionQueries");
8
8
  const getFutureTableSchema_1 = require("./getFutureTableSchema");
9
9
  const getTableColumnQueries_1 = require("./getTableColumnQueries");
10
+ const getTableTriggerQueries_1 = require("./getTableTriggerQueries");
10
11
  const getIndexesQueries_1 = require("./indexes/getIndexesQueries");
11
12
  const runMigrations_1 = require("./runMigrations");
12
13
  const initTableConfig = async function () {
@@ -191,63 +192,7 @@ const initTableConfig = async function () {
191
192
  }
192
193
  const indexQueries = await (0, getIndexesQueries_1.getIndexesQueries)(this.db, tableName, tableConf);
193
194
  queries.push(...indexQueries);
194
- const { triggers, dropIfExists, dropIfExistsCascade } = tableConf;
195
- if (triggers) {
196
- const isDropped = dropIfExists || dropIfExistsCascade;
197
- const existingTriggers = await this.db.any(`
198
- SELECT event_object_table
199
- ,trigger_name
200
- FROM information_schema.triggers
201
- WHERE event_object_table = \${tableName}
202
- ORDER BY event_object_table
203
- `, { tableName });
204
- // const existingTriggerFuncs = await this.dbo.sql!(`
205
- // SELECT p.oid,proname,prosrc,u.usename
206
- // FROM pg_proc p
207
- // JOIN pg_user u ON u.usesysid = p.proowner
208
- // WHERE prorettype = 2279;
209
- // `, {}, { returnType: "rows" }) as { proname: string }[];
210
- Object.entries(triggers).forEach(([triggerFuncName, trigger]) => {
211
- const funcNameParsed = asName(triggerFuncName);
212
- let addedFunc = false;
213
- const addFuncDef = () => {
214
- if (addedFunc)
215
- return;
216
- addedFunc = true;
217
- queries.push(`
218
- CREATE OR REPLACE FUNCTION ${funcNameParsed}()
219
- RETURNS trigger
220
- LANGUAGE plpgsql
221
- AS
222
- $$
223
-
224
- ${trigger.query}
225
-
226
- $$;
227
- `);
228
- };
229
- trigger.actions.forEach((action) => {
230
- const triggerActionName = triggerFuncName + "_" + action;
231
- const triggerActionNameParsed = asName(triggerActionName);
232
- if (isDropped) {
233
- queries.push(`DROP TRIGGER IF EXISTS ${triggerActionNameParsed} ON ${tableName};`);
234
- }
235
- if (isDropped || !existingTriggers.some((t) => t.trigger_name === triggerActionName)) {
236
- addFuncDef();
237
- const newTableName = action !== "delete" ? "NEW TABLE AS new_table" : "";
238
- const oldTableName = action !== "insert" ? "OLD TABLE AS old_table" : "";
239
- const transitionTables = trigger.forEach === "row" ? "" : `REFERENCING ${newTableName} ${oldTableName}`;
240
- queries.push(`
241
- CREATE TRIGGER ${triggerActionNameParsed}
242
- ${trigger.type} ${action} ON ${tableName}
243
- ${transitionTables}
244
- FOR EACH ${trigger.forEach}
245
- EXECUTE PROCEDURE ${funcNameParsed}();
246
- `);
247
- }
248
- });
249
- });
250
- }
195
+ queries.push(...(await (0, getTableTriggerQueries_1.getTableTriggerQueries)(this.db, tableName, tableConf, asName)));
251
196
  }
252
197
  if (queries.length) {
253
198
  const q = makeQuery(queries);