prostgles-server 4.1.93 → 4.1.94

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 (103) hide show
  1. package/.github/workflows/main.yml +1 -1
  2. package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts +1 -1
  3. package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
  4. package/dist/DboBuilder/TableHandler/TableHandler.d.ts +53 -0
  5. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -0
  6. package/dist/DboBuilder/TableHandler/TableHandler.js +202 -0
  7. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -0
  8. package/dist/DboBuilder/TableHandler/insert.d.ts +6 -0
  9. package/dist/DboBuilder/TableHandler/insert.d.ts.map +1 -0
  10. package/dist/DboBuilder/TableHandler/insert.js +122 -0
  11. package/dist/DboBuilder/TableHandler/insert.js.map +1 -0
  12. package/dist/DboBuilder/TableHandler/insertTest.d.ts +17 -0
  13. package/dist/DboBuilder/TableHandler/insertTest.d.ts.map +1 -0
  14. package/dist/DboBuilder/TableHandler/insertTest.js +73 -0
  15. package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -0
  16. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts +24 -0
  17. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -0
  18. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +97 -0
  19. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -0
  20. package/dist/DboBuilder/TableHandler/update.d.ts +6 -0
  21. package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -0
  22. package/dist/DboBuilder/TableHandler/update.js +133 -0
  23. package/dist/DboBuilder/TableHandler/update.js.map +1 -0
  24. package/dist/DboBuilder/TableHandler/updateBatch.d.ts +6 -0
  25. package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -0
  26. package/dist/DboBuilder/TableHandler/updateBatch.js +31 -0
  27. package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -0
  28. package/dist/DboBuilder/ViewHandler/ColSet.d.ts +4 -4
  29. package/dist/DboBuilder/ViewHandler/ColSet.d.ts.map +1 -1
  30. package/dist/DboBuilder/ViewHandler/ColSet.js +18 -10
  31. package/dist/DboBuilder/ViewHandler/ColSet.js.map +1 -1
  32. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +15 -9
  33. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  34. package/dist/DboBuilder/ViewHandler/ViewHandler.js +16 -14
  35. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  36. package/dist/DboBuilder/delete.d.ts +1 -1
  37. package/dist/DboBuilder/delete.d.ts.map +1 -1
  38. package/dist/DboBuilder/delete.js +5 -9
  39. package/dist/DboBuilder/delete.js.map +1 -1
  40. package/dist/DboBuilder/find.d.ts +1 -1
  41. package/dist/DboBuilder/find.d.ts.map +1 -1
  42. package/dist/DboBuilder/find.js +2 -2
  43. package/dist/DboBuilder/find.js.map +1 -1
  44. package/dist/DboBuilder/getColumns.d.ts +1 -1
  45. package/dist/DboBuilder/getColumns.d.ts.map +1 -1
  46. package/dist/DboBuilder/insertDataParse.d.ts +1 -1
  47. package/dist/DboBuilder/insertDataParse.d.ts.map +1 -1
  48. package/dist/DboBuilder/insertDataParse.js +5 -5
  49. package/dist/DboBuilder/insertDataParse.js.map +1 -1
  50. package/dist/DboBuilder/parseUpdateRules.d.ts +1 -1
  51. package/dist/DboBuilder/parseUpdateRules.d.ts.map +1 -1
  52. package/dist/DboBuilder/parseUpdateRules.js +2 -2
  53. package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
  54. package/dist/DboBuilder/subscribe.d.ts.map +1 -1
  55. package/dist/DboBuilder/subscribe.js +1 -2
  56. package/dist/DboBuilder/subscribe.js.map +1 -1
  57. package/dist/DboBuilder/uploadFile.d.ts +3 -3
  58. package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
  59. package/dist/DboBuilder/uploadFile.js +1 -1
  60. package/dist/DboBuilder/uploadFile.js.map +1 -1
  61. package/dist/DboBuilder.d.ts +5 -5
  62. package/dist/DboBuilder.d.ts.map +1 -1
  63. package/dist/DboBuilder.js +13 -16
  64. package/dist/DboBuilder.js.map +1 -1
  65. package/dist/Logging.d.ts +1 -1
  66. package/dist/Logging.d.ts.map +1 -1
  67. package/dist/PublishParser.d.ts +26 -11
  68. package/dist/PublishParser.d.ts.map +1 -1
  69. package/dist/PublishParser.js +24 -10
  70. package/dist/PublishParser.js.map +1 -1
  71. package/dist/SyncReplication.d.ts.map +1 -1
  72. package/dist/SyncReplication.js.map +1 -1
  73. package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +1 -1
  74. package/lib/DboBuilder/{TableHandler.ts → TableHandler/TableHandler.ts} +27 -49
  75. package/lib/DboBuilder/TableHandler/insert.ts +142 -0
  76. package/lib/DboBuilder/TableHandler/insertTest.ts +79 -0
  77. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +125 -0
  78. package/lib/DboBuilder/{update.ts → TableHandler/update.ts} +36 -59
  79. package/lib/DboBuilder/TableHandler/updateBatch.ts +39 -0
  80. package/lib/DboBuilder/ViewHandler/ColSet.ts +23 -15
  81. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +34 -26
  82. package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +1 -1
  83. package/lib/DboBuilder/delete.ts +5 -10
  84. package/lib/DboBuilder/find.ts +3 -3
  85. package/lib/DboBuilder/getColumns.ts +1 -1
  86. package/lib/DboBuilder/insertDataParse.ts +7 -8
  87. package/lib/DboBuilder/parseUpdateRules.ts +7 -7
  88. package/lib/DboBuilder/subscribe.ts +1 -2
  89. package/lib/DboBuilder/uploadFile.ts +5 -5
  90. package/lib/DboBuilder.ts +31 -34
  91. package/lib/FileManager/initFileManager.ts +1 -1
  92. package/lib/Logging.ts +1 -1
  93. package/lib/PublishParser.ts +48 -24
  94. package/lib/SyncReplication.ts +3 -2
  95. package/package.json +4 -4
  96. package/tests/client/PID.txt +1 -1
  97. package/tests/client_only_queries.ts +3 -0
  98. package/tests/isomorphic_queries.ts +16 -19
  99. package/tests/server/DBoGenerated.d.ts +0 -56
  100. package/tests/server/index.ts +6 -5
  101. package/tests/server/package-lock.json +7 -7
  102. package/tsconfig.json +0 -7
  103. package/lib/DboBuilder/insert.ts +0 -205
@@ -26,7 +26,7 @@ jobs:
26
26
  env:
27
27
  POSTGRES_USER: api
28
28
  POSTGRES_PASSWORD: api
29
- POSTGRES_DB: postgres
29
+ POSTGRES_DB: prostgles_server_tests
30
30
  ports:
31
31
  # will assign a random free host port
32
32
  - 5432/tcp
@@ -1,4 +1,4 @@
1
- import { TableHandler } from "../TableHandler";
1
+ import { TableHandler } from "../TableHandler/TableHandler";
2
2
  import { TableRule } from "../../PublishParser";
3
3
  import { Filter, LocalParams } from "../../DboBuilder";
4
4
  import { RawJoinPath } from "prostgles-types";
@@ -1 +1 @@
1
- {"version":3,"file":"getNewQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getNewQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAiG,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE7I,OAAO,EAAE,QAAQ,EAAmC,MAAM,gBAAgB,CAAC;AA0D3E,wBAAsB,WAAW,CAC/B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA2C,EACvD,aAAa,kBAAO,EACpB,UAAU,EAAE,SAAS,GAAG,SAAS,EACjC,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,OAAO,CAAC,QAAQ,CAAC,CAwJnB"}
1
+ {"version":3,"file":"getNewQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getNewQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAiG,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE7I,OAAO,EAAE,QAAQ,EAAmC,MAAM,gBAAgB,CAAC;AA0D3E,wBAAsB,WAAW,CAC/B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA2C,EACvD,aAAa,kBAAO,EACpB,UAAU,EAAE,SAAS,GAAG,SAAS,EACjC,WAAW,EAAE,WAAW,GAAG,SAAS,GACnC,OAAO,CAAC,QAAQ,CAAC,CAwJnB"}
@@ -0,0 +1,53 @@
1
+ import pgPromise from "pg-promise";
2
+ import { AnyObject, DeleteParams, FieldFilter, InsertParams, Select, UpdateParams } from "prostgles-types";
3
+ import { DboBuilder, Filter, LocalParams, TableHandlers, TableSchema } from "../../DboBuilder";
4
+ import { DB } from "../../Prostgles";
5
+ import { TableRule } from "../../PublishParser";
6
+ import { SelectItem } from "../QueryBuilder/QueryBuilder";
7
+ import { JoinPaths, ViewHandler } from "../ViewHandler/ViewHandler";
8
+ type ValidatedParams = {
9
+ row: AnyObject;
10
+ forcedData?: AnyObject;
11
+ allowedFields?: FieldFilter;
12
+ tableRules?: TableRule;
13
+ fixIssues: boolean;
14
+ };
15
+ export declare class TableHandler extends ViewHandler {
16
+ constructor(db: DB, tableOrViewInfo: TableSchema, dboBuilder: DboBuilder, tx?: {
17
+ t: pgPromise.ITask<{}>;
18
+ dbTX: TableHandlers;
19
+ }, joinPaths?: JoinPaths);
20
+ getFinalDBtx: (localParams: LocalParams | undefined) => TableHandlers | undefined;
21
+ getFinalDbo: (localParams: LocalParams | undefined) => TableHandlers;
22
+ parseUpdateRules: (filter: Filter, newData: AnyObject, params?: UpdateParams | undefined, tableRules?: TableRule | undefined, localParams?: LocalParams | undefined) => Promise<{
23
+ fields: string[];
24
+ validateRow?: import("../../PublishParser").ValidateRow | undefined;
25
+ finalUpdateFilter: AnyObject;
26
+ forcedData?: AnyObject | undefined;
27
+ forcedFilter?: AnyObject | undefined;
28
+ returningFields: FieldFilter;
29
+ filterFields?: FieldFilter | undefined;
30
+ }>;
31
+ update: (filter: Filter, _newData: AnyObject, params?: UpdateParams | undefined, tableRules?: TableRule | undefined, localParams?: LocalParams | undefined) => Promise<void | AnyObject>;
32
+ updateBatch: (updates: [Filter, AnyObject][], params?: UpdateParams | undefined, tableRules?: TableRule | undefined, localParams?: LocalParams | undefined) => Promise<any>;
33
+ validateNewData({ row, forcedData, allowedFields, tableRules, fixIssues }: ValidatedParams): {
34
+ data: AnyObject;
35
+ allowedCols: string[];
36
+ };
37
+ insert(rowOrRows: (AnyObject | AnyObject[]), param2?: InsertParams, param3_unused?: undefined, tableRules?: TableRule, _localParams?: LocalParams): Promise<any | any[] | boolean>;
38
+ prepareReturning: (returning: Select | undefined, allowedFields: string[]) => Promise<SelectItem[]>;
39
+ makeReturnQuery(items?: SelectItem[]): string;
40
+ delete(filter?: Filter, params?: DeleteParams, param3_unused?: undefined, table_rules?: TableRule, localParams?: LocalParams): Promise<any>;
41
+ remove(filter: Filter, params?: UpdateParams, param3_unused?: undefined, tableRules?: TableRule, localParams?: LocalParams): Promise<any>;
42
+ upsert(filter: Filter, newData: AnyObject, params?: UpdateParams, table_rules?: TableRule, localParams?: LocalParams): Promise<any>;
43
+ sync(filter: Filter, params: {
44
+ select?: FieldFilter;
45
+ }, param3_unused: undefined, table_rules: TableRule, localParams: LocalParams): Promise<{
46
+ channelName: string | undefined;
47
+ id_fields: string[];
48
+ synced_field: string;
49
+ }>;
50
+ }
51
+ export declare const getSelectItemQuery: (items: SelectItem[]) => string;
52
+ export {};
53
+ //# sourceMappingURL=TableHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableHandler.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/TableHandler.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAU,YAAY,EAAE,WAAW,EAAW,YAAY,EAAY,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACtI,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAc,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAY,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,EAAE,UAAU,EAAqB,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAMpE,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,SAAS,CAAC;IACf,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAA;AAED,qBAAa,YAAa,SAAQ,WAAW;gBAE/B,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE;QAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,aAAa,CAAA;KAAC,EAAE,SAAS,CAAC,EAAE,SAAS;IASnJ,YAAY,gBAAiB,WAAW,GAAG,SAAS,+BAEnD;IACD,WAAW,gBAAiB,WAAW,GAAG,SAAS,mBAElD;IAGD,gBAAgB;;;;;;;;OAA+B;IAE/C,MAAM,mLAAqB;IAC3B,WAAW,iKAA0B;IAErC,eAAe,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAiB,EAAE,EAAE,eAAe;;;;IA2B5F,MAAM,CACV,SAAS,EAAE,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,EAC3D,aAAa,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,WAAW,GAC5E,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAIjC,gBAAgB,cAAqB,MAAM,GAAG,SAAS,iBAAiB,MAAM,EAAE,KAAG,QAAQ,UAAU,EAAE,CAAC,CAkBvG;IAED,eAAe,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE;IAK9B,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAIjJ,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW;IAIpH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IA4BnI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW;;;;;CAmGxI;AAED,eAAO,MAAM,kBAAkB,UAAW,UAAU,EAAE,WAAuE,CAAA"}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSelectItemQuery = exports.TableHandler = void 0;
4
+ const prostgles_types_1 = require("prostgles-types");
5
+ const DboBuilder_1 = require("../../DboBuilder");
6
+ const delete_1 = require("../delete");
7
+ const parseUpdateRules_1 = require("../parseUpdateRules");
8
+ const Functions_1 = require("../QueryBuilder/Functions");
9
+ const QueryBuilder_1 = require("../QueryBuilder/QueryBuilder");
10
+ const ViewHandler_1 = require("../ViewHandler/ViewHandler");
11
+ const insert_1 = require("./insert");
12
+ const update_1 = require("./update");
13
+ const updateBatch_1 = require("./updateBatch");
14
+ class TableHandler extends ViewHandler_1.ViewHandler {
15
+ constructor(db, tableOrViewInfo, dboBuilder, tx, joinPaths) {
16
+ super(db, tableOrViewInfo, dboBuilder, tx, joinPaths);
17
+ this.remove = this.delete;
18
+ this.is_view = false;
19
+ this.is_media = dboBuilder.prostgles.isMedia(this.name);
20
+ }
21
+ getFinalDBtx = (localParams) => {
22
+ return localParams?.tx?.dbTX ?? this.tx?.dbTX;
23
+ };
24
+ getFinalDbo = (localParams) => {
25
+ return this.getFinalDBtx(localParams) ?? this.dboBuilder.dbo;
26
+ };
27
+ parseUpdateRules = parseUpdateRules_1.parseUpdateRules.bind(this);
28
+ update = update_1.update.bind(this);
29
+ updateBatch = updateBatch_1.updateBatch.bind(this);
30
+ validateNewData({ row, forcedData, allowedFields, tableRules, fixIssues = false }) {
31
+ const synced_field = (tableRules ?? {})?.sync?.synced_field;
32
+ /* Update synced_field if sync is on and missing */
33
+ if (synced_field && !row[synced_field]) {
34
+ row[synced_field] = Date.now();
35
+ }
36
+ const data = this.prepareFieldValues(row, forcedData, allowedFields, fixIssues);
37
+ const dataKeys = (0, prostgles_types_1.getKeys)(data);
38
+ dataKeys.map(col => {
39
+ this.dboBuilder.prostgles?.tableConfigurator?.checkColVal({ table: this.name, col, value: data[col] });
40
+ const colConfig = this.dboBuilder.prostgles?.tableConfigurator?.getColumnConfig(this.name, col);
41
+ if (colConfig && (0, prostgles_types_1.isObject)(colConfig) && "isText" in colConfig && data[col]) {
42
+ if (colConfig.lowerCased) {
43
+ data[col] = data[col].toString().toLowerCase();
44
+ }
45
+ if (colConfig.trimmed) {
46
+ data[col] = data[col].toString().trim();
47
+ }
48
+ }
49
+ });
50
+ return { data, allowedCols: this.columns.filter(c => dataKeys.includes(c.name)).map(c => c.name) };
51
+ }
52
+ async insert(rowOrRows, param2, param3_unused, tableRules, _localParams) {
53
+ return insert_1.insert.bind(this)(rowOrRows, param2, param3_unused, tableRules, _localParams);
54
+ }
55
+ prepareReturning = async (returning, allowedFields) => {
56
+ const result = [];
57
+ if (returning) {
58
+ const sBuilder = new QueryBuilder_1.SelectItemBuilder({
59
+ allFields: this.column_names.slice(0),
60
+ allowedFields,
61
+ allowedOrderByFields: allowedFields,
62
+ computedFields: Functions_1.COMPUTED_FIELDS,
63
+ functions: Functions_1.FUNCTIONS.filter(f => f.type === "function" && f.singleColArg),
64
+ isView: this.is_view,
65
+ columns: this.columns,
66
+ });
67
+ await sBuilder.parseUserSelect(returning);
68
+ return sBuilder.select;
69
+ }
70
+ return result;
71
+ };
72
+ makeReturnQuery(items) {
73
+ if (items?.length)
74
+ return " RETURNING " + (0, exports.getSelectItemQuery)(items);
75
+ return "";
76
+ }
77
+ async delete(filter, params, param3_unused, table_rules, localParams) {
78
+ return delete_1._delete.bind(this)(filter, params, param3_unused, table_rules, localParams);
79
+ }
80
+ remove(filter, params, param3_unused, tableRules, localParams) {
81
+ return this.delete(filter, params, param3_unused, tableRules, localParams);
82
+ }
83
+ async upsert(filter, newData, params, table_rules, localParams) {
84
+ try {
85
+ await this._log({ command: "upsert", localParams, data: { filter, newData, params } });
86
+ const _upsert = async function (tblH) {
87
+ return tblH.find(filter, { select: "", limit: 1 }, undefined, table_rules, localParams)
88
+ .then(exists => {
89
+ if (exists && exists.length) {
90
+ return tblH.update(filter, newData, params, table_rules, localParams);
91
+ }
92
+ else {
93
+ return tblH.insert({ ...newData, ...filter }, params, undefined, table_rules, localParams);
94
+ }
95
+ });
96
+ };
97
+ /* Do it within a transaction to ensure consisency */
98
+ if (!this.tx) {
99
+ return this.dboBuilder.getTX(dbTX => _upsert(dbTX[this.name]));
100
+ }
101
+ else {
102
+ return _upsert(this);
103
+ }
104
+ }
105
+ catch (e) {
106
+ if (localParams && localParams.testRule)
107
+ throw e;
108
+ throw (0, DboBuilder_1.parseError)(e, `dbo.${this.name}.upsert()`);
109
+ }
110
+ }
111
+ /* External request. Cannot sync from server */
112
+ async sync(filter, params, param3_unused, table_rules, localParams) {
113
+ try {
114
+ await this._log({ command: "sync", localParams, data: { filter, params } });
115
+ if (!localParams)
116
+ throw "Sync not allowed within the server code";
117
+ const { socket } = localParams;
118
+ if (!socket)
119
+ throw "socket missing";
120
+ if (!table_rules || !table_rules.sync || !table_rules.select)
121
+ throw "sync or select table rules missing";
122
+ if (this.tx)
123
+ throw "Sync not allowed within transactions";
124
+ const ALLOWED_PARAMS = ["select"];
125
+ const invalidParams = Object.keys(params || {}).filter(k => !ALLOWED_PARAMS.includes(k));
126
+ if (invalidParams.length)
127
+ throw "Invalid or dissallowed params found: " + invalidParams.join(", ");
128
+ const { synced_field, allow_delete } = table_rules.sync;
129
+ if (!table_rules.sync.id_fields.length || !synced_field) {
130
+ const err = "INTERNAL ERROR: id_fields OR synced_field missing from publish";
131
+ console.error(err);
132
+ throw err;
133
+ }
134
+ const id_fields = this.parseFieldFilter(table_rules.sync.id_fields, false);
135
+ const syncFields = [...id_fields, synced_field];
136
+ const allowedSelect = this.parseFieldFilter(table_rules?.select.fields ?? false);
137
+ if (syncFields.find(f => !allowedSelect.includes(f))) {
138
+ throw `INTERNAL ERROR: sync field missing from publish.${this.name}.select.fields`;
139
+ }
140
+ const select = this.getAllowedSelectFields(params?.select ?? "*", allowedSelect, false);
141
+ if (!select.length)
142
+ throw "Empty select not allowed";
143
+ /* Add sync fields if missing */
144
+ syncFields.map(sf => {
145
+ if (!select.includes(sf))
146
+ select.push(sf);
147
+ });
148
+ /* Step 1: parse command and params */
149
+ return this.find(filter, { select, limit: 0 }, undefined, table_rules, localParams)
150
+ .then(async (_isValid) => {
151
+ const { filterFields, forcedFilter } = table_rules?.select || {};
152
+ const condition = (await this.prepareWhere({ filter, forcedFilter, filterFields, addKeywords: false, localParams, tableRule: table_rules })).where;
153
+ // let final_filter = getFindFilter(filter, table_rules);
154
+ const pubSubManager = await this.dboBuilder.getPubSubManager();
155
+ return pubSubManager.addSync({
156
+ table_info: this.tableOrViewInfo,
157
+ condition,
158
+ id_fields, synced_field,
159
+ allow_delete,
160
+ socket,
161
+ table_rules,
162
+ filter: { ...filter },
163
+ params: { select }
164
+ }).then(channelName => ({ channelName, id_fields, synced_field }));
165
+ });
166
+ }
167
+ catch (e) {
168
+ if (localParams && localParams.testRule)
169
+ throw e;
170
+ throw (0, DboBuilder_1.parseError)(e, `dbo.${this.name}.sync()`);
171
+ }
172
+ /*
173
+ REPLICATION
174
+
175
+ 1 Sync proccess (NO DELETES ALLOWED):
176
+
177
+ Client sends:
178
+ "sync-request"
179
+ { min_id, max_id, count, max_synced }
180
+
181
+ Server sends:
182
+ "sync-pull"
183
+ { from_synced }
184
+
185
+ Client sends:
186
+ "sync-push"
187
+ { data } -> WHERE synced >= from_synced
188
+
189
+ Server upserts:
190
+ WHERE not exists synced = synced AND id = id
191
+ UNTIL
192
+
193
+ Server sends
194
+ "sync-push"
195
+ { data } -> WHERE synced >= from_synced
196
+ */
197
+ }
198
+ }
199
+ exports.TableHandler = TableHandler;
200
+ const getSelectItemQuery = (items) => items.map(s => s.getQuery() + " AS " + (0, prostgles_types_1.asName)(s.alias)).join(", ");
201
+ exports.getSelectItemQuery = getSelectItemQuery;
202
+ //# sourceMappingURL=TableHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableHandler.js","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/TableHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { AnyObject, InsertParams } from "prostgles-types";
2
+ import { LocalParams } from "../../DboBuilder";
3
+ import { TableRule } from "../../PublishParser";
4
+ import { TableHandler } from "./TableHandler";
5
+ export declare function insert(this: TableHandler, rowOrRows?: AnyObject | AnyObject[], insertParams?: InsertParams, param3_unused?: undefined, tableRules?: TableRule, localParams?: LocalParams): Promise<any | any[] | boolean>;
6
+ //# sourceMappingURL=insert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/insert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,GAAE,SAAS,GAAG,SAAS,EAAO,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,CA+FnO"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.insert = void 0;
4
+ const prostgles_types_1 = require("prostgles-types");
5
+ const DboBuilder_1 = require("../../DboBuilder");
6
+ const insertDataParse_1 = require("../insertDataParse");
7
+ const insertTest_1 = require("./insertTest");
8
+ const runInsertUpdateQuery_1 = require("./runInsertUpdateQuery");
9
+ async function insert(rowOrRows = {}, insertParams, param3_unused, tableRules, localParams) {
10
+ const ACTION = "insert";
11
+ try {
12
+ await this._log({ command: "insert", localParams, data: { rowOrRows, param2: insertParams } });
13
+ const { fixIssues = false } = insertParams || {};
14
+ const { returnQuery = false } = localParams || {};
15
+ const finalDBtx = this.getFinalDBtx(localParams);
16
+ const rule = tableRules?.[ACTION];
17
+ const { postValidate, checkFilter, validate } = rule ?? {};
18
+ /** Post validate and checkFilter require a transaction dbo handler */
19
+ if (postValidate || checkFilter) {
20
+ if (!finalDBtx) {
21
+ return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.[ACTION]?.(rowOrRows, insertParams, param3_unused, tableRules, localParams));
22
+ }
23
+ }
24
+ const { testOnly, fields, forcedData, returningFields } = await insertTest_1.insertTest.bind(this)({ tableRules, localParams });
25
+ if (testOnly) {
26
+ return true;
27
+ }
28
+ const { conflict_query } = validateInsertParams(insertParams);
29
+ /**
30
+ * If media it will: upload file and continue insert
31
+ * If nested insert it will: make separate inserts and not continue main insert
32
+ */
33
+ const mediaOrNestedInsert = await insertDataParse_1.insertDataParse.bind(this)(rowOrRows, insertParams, param3_unused, tableRules, localParams);
34
+ const { data, insertResult } = mediaOrNestedInsert;
35
+ if ("insertResult" in mediaOrNestedInsert) {
36
+ return insertResult;
37
+ }
38
+ const getInsertQuery = async (_rows) => {
39
+ const validatedData = await Promise.all(_rows.map(async (_row) => {
40
+ const row = { ..._row };
41
+ if (!(0, prostgles_types_1.isObject)(row)) {
42
+ console.trace(row);
43
+ throw "\ninvalid insert data provided -> " + JSON.stringify(row);
44
+ }
45
+ const { data: validatedRow, allowedCols } = this.validateNewData({ row, forcedData, allowedFields: fields, tableRules, fixIssues });
46
+ return { validatedRow, allowedCols };
47
+ }));
48
+ const validatedRows = validatedData.map(d => d.validatedRow);
49
+ const allowedCols = Array.from(new Set(validatedData.flatMap(d => d.allowedCols)));
50
+ const dbTx = finalDBtx || this.dboBuilder.dbo;
51
+ const query = await this.colSet.getInsertQuery(validatedRows, allowedCols, dbTx, validate);
52
+ return query + conflict_query;
53
+ };
54
+ let query = "";
55
+ if (Array.isArray(data)) {
56
+ if (!data.length) {
57
+ throw "Empty insert. Provide data";
58
+ }
59
+ query = await getInsertQuery(data);
60
+ // if (returningQuery) queryType = "many";
61
+ }
62
+ else {
63
+ query = await getInsertQuery([data ?? {}]);
64
+ // if (returningQuery) queryType = "one";
65
+ }
66
+ const queryWithoutUserRLS = query;
67
+ const queryWithRLS = (0, DboBuilder_1.withUserRLS)(localParams, query);
68
+ if (returnQuery)
69
+ return queryWithRLS;
70
+ if (this.dboBuilder.prostgles.opts.DEBUG_MODE) {
71
+ console.log(this.tx?.t.ctx?.start, "insert in " + this.name, data);
72
+ }
73
+ return (0, runInsertUpdateQuery_1.runInsertUpdateQuery)({
74
+ rule, localParams,
75
+ queryWithoutUserRLS,
76
+ tableHandler: this,
77
+ returningFields,
78
+ data: rowOrRows,
79
+ fields,
80
+ params: insertParams,
81
+ type: "insert"
82
+ });
83
+ }
84
+ catch (e) {
85
+ if (localParams?.testRule)
86
+ throw e;
87
+ throw (0, DboBuilder_1.parseError)(e, `dbo.${this.name}.${ACTION}()`);
88
+ }
89
+ }
90
+ exports.insert = insert;
91
+ const validateInsertParams = (params) => {
92
+ const { onConflictDoNothing, returnType, returning } = params ?? {};
93
+ let conflict_query = "";
94
+ if (typeof onConflictDoNothing === "boolean" && onConflictDoNothing) {
95
+ conflict_query = " ON CONFLICT DO NOTHING ";
96
+ }
97
+ const allowedReturnTypes = ["row", "value", "values", "statement", undefined];
98
+ if (!allowedReturnTypes.includes(returnType)) {
99
+ throw `Invalid return type ${returnType}. Expecting one of: ${allowedReturnTypes}`;
100
+ }
101
+ if (returnType && returnType !== "statement" && !returning) {
102
+ throw `Must specify returning when using a non statement returnType: ${returnType}`;
103
+ }
104
+ if (params) {
105
+ const good_paramsObj = { returning: 1, returnType: 1, fixIssues: 1, onConflictDoNothing: 1 };
106
+ const good_params = Object.keys(good_paramsObj);
107
+ const bad_params = Object.keys(params).filter(k => !good_params.includes(k));
108
+ if (bad_params && bad_params.length)
109
+ throw "Invalid params: " + bad_params.join(", ") + " \n Expecting: " + good_params.join(", ");
110
+ }
111
+ return { conflict_query };
112
+ };
113
+ // const removeBuffers = (o: any) => {
114
+ // if(isPlainObject(o)){
115
+ // return JSON.stringify(getKeys(o).reduce((a, k) => {
116
+ // const value = o[k]
117
+ // return { ...a, [k]: Buffer.isBuffer(value)? `Buffer[${value.byteLength}][...REMOVED]` : value
118
+ // }
119
+ // }, {}));
120
+ // }
121
+ // }
122
+ //# sourceMappingURL=insert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/insert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { AnyObject, FieldFilter, FullFilter } from "prostgles-types";
2
+ import { LocalParams } from "../../DboBuilder";
3
+ import { TableRule } from "../../PublishParser";
4
+ import { TableHandler } from "./TableHandler";
5
+ type InsertTestArgs = {
6
+ tableRules: TableRule | undefined;
7
+ localParams: LocalParams | undefined;
8
+ };
9
+ export declare function insertTest(this: TableHandler, { localParams, tableRules }: InsertTestArgs): Promise<{
10
+ returningFields: FieldFilter | undefined;
11
+ fields: FieldFilter | undefined;
12
+ forcedData: AnyObject | undefined;
13
+ checkFilter: FullFilter<AnyObject, void> | undefined;
14
+ testOnly: boolean;
15
+ }>;
16
+ export {};
17
+ //# sourceMappingURL=insertTest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertTest.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/insertTest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAO,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;CACtC,CAAA;AACD,wBAAsB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,cAAc;;;;;;GAoE/F"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.insertTest = void 0;
4
+ const prostgles_types_1 = require("prostgles-types");
5
+ const DboBuilder_1 = require("../../DboBuilder");
6
+ const PubSubManager_1 = require("../../PubSubManager/PubSubManager");
7
+ async function insertTest({ localParams, tableRules }) {
8
+ const { testRule } = localParams || {};
9
+ const ACTION = "insert";
10
+ let returningFields;
11
+ let forcedData;
12
+ let fields;
13
+ let checkFilter;
14
+ let testOnly = false;
15
+ if (tableRules) {
16
+ if (!tableRules[ACTION])
17
+ throw `${ACTION} rules missing for ${this.name}`;
18
+ returningFields = tableRules[ACTION].returningFields;
19
+ forcedData = tableRules[ACTION].forcedData;
20
+ checkFilter = tableRules[ACTION].checkFilter;
21
+ fields = tableRules[ACTION].fields;
22
+ /* If no returning fields specified then take select fields as returning or the allowed insert fields */
23
+ if (!returningFields)
24
+ returningFields = tableRules?.select?.fields || tableRules?.insert.fields;
25
+ if (!fields)
26
+ throw ` invalid insert rule for ${this.name} -> fields missing `;
27
+ /* Safely test publish rules */
28
+ if (testRule) {
29
+ // if(this.is_media && tableRules.insert.preValidate) throw "Media table cannot have a preValidate. It already is used internally by prostgles for file upload";
30
+ await this.validateViewRules({ fields, returningFields, forcedFilter: forcedData, rule: "insert" });
31
+ if (checkFilter) {
32
+ try {
33
+ await this.find(checkFilter, { limit: 0 });
34
+ }
35
+ catch (e) {
36
+ throw `Invalid checkFilter provided for ${this.name}. Error: ${JSON.stringify(e)}`;
37
+ }
38
+ }
39
+ if (forcedData) {
40
+ const keys = Object.keys(forcedData);
41
+ if (keys.length) {
42
+ const dataCols = keys.filter(k => this.column_names.includes(k));
43
+ const nestedInsertCols = keys.filter(k => !this.column_names.includes(k) && this.dboBuilder.dbo[k]?.insert);
44
+ if (nestedInsertCols.length) {
45
+ throw `Nested insert not supported for forcedData rule: ${nestedInsertCols}`;
46
+ }
47
+ const badCols = keys.filter(k => !dataCols.includes(k) && !nestedInsertCols.includes(k));
48
+ if (badCols.length) {
49
+ throw `Invalid columns found in forced filter: ${badCols.join(", ")}`;
50
+ }
51
+ try {
52
+ const values = "(" + dataCols.map(k => (0, PubSubManager_1.asValue)(forcedData[k]) + "::" + this.columns.find(c => c.name === k).udt_name).join(", ") + ")", colNames = dataCols.map(k => (0, prostgles_types_1.asName)(k)).join(",");
53
+ const query = DboBuilder_1.pgp.as.format("EXPLAIN INSERT INTO " + this.escapedName + " (${colNames:raw}) SELECT * FROM ( VALUES ${values:raw} ) t WHERE FALSE;", { colNames, values });
54
+ await this.db.any(query);
55
+ }
56
+ catch (e) {
57
+ throw "\nissue with forcedData: \nVALUE: " + JSON.stringify(forcedData, null, 2) + "\nERROR: " + e;
58
+ }
59
+ }
60
+ }
61
+ testOnly = true;
62
+ }
63
+ }
64
+ return {
65
+ returningFields,
66
+ fields,
67
+ forcedData,
68
+ checkFilter,
69
+ testOnly
70
+ };
71
+ }
72
+ exports.insertTest = insertTest;
73
+ //# sourceMappingURL=insertTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertTest.js","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/insertTest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { AnyObject, FieldFilter, InsertParams, UpdateParams } from "prostgles-types";
2
+ import { LocalParams } from "../../DboBuilder";
3
+ import { InsertRule, UpdateRule } from "../../PublishParser";
4
+ import { TableHandler } from "./TableHandler";
5
+ type RunInsertUpdateQueryArgs = {
6
+ tableHandler: TableHandler;
7
+ queryWithoutUserRLS: string;
8
+ localParams: LocalParams | undefined;
9
+ fields: FieldFilter | undefined;
10
+ returningFields: FieldFilter | undefined;
11
+ } & ({
12
+ type: "insert";
13
+ params: InsertParams | undefined;
14
+ rule: InsertRule | undefined;
15
+ data: AnyObject | AnyObject[];
16
+ } | {
17
+ type: "update";
18
+ params: UpdateParams | undefined;
19
+ rule: UpdateRule | undefined;
20
+ data: undefined;
21
+ });
22
+ export declare const runInsertUpdateQuery: ({ tableHandler, queryWithoutUserRLS, rule, localParams, fields, returningFields, params, data, type }: RunInsertUpdateQueryArgs) => Promise<AnyObject | AnyObject[] | undefined>;
23
+ export {};
24
+ //# sourceMappingURL=runInsertUpdateQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runInsertUpdateQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAqC,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAElE,KAAK,wBAAwB,GAAG;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,eAAe,EAAE,WAAW,GAAG,SAAS,CAAC;CAC1C,GAAG,CAAC;IACH,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IAChC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;CAC/B,GAAG;IACF,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IAChC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC,CAAC;AAEH,eAAO,MAAM,oBAAoB,0GAAiH,wBAAwB,iDAoGzK,CAAA"}