prostgles-server 4.2.548 → 4.2.550

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 (92) hide show
  1. package/dist/DboBuilder/TableHandler/TableHandler.d.ts +18 -5
  2. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
  3. package/dist/DboBuilder/TableHandler/TableHandler.js +12 -6
  4. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
  5. package/dist/DboBuilder/TableHandler/delete.d.ts +1 -1
  6. package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
  7. package/dist/DboBuilder/TableHandler/delete.js +56 -13
  8. package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
  9. package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.d.ts +21 -0
  10. package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.d.ts.map +1 -0
  11. package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.js +69 -0
  12. package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.js.map +1 -0
  13. package/dist/DboBuilder/TableHandler/insert/insert.d.ts.map +1 -1
  14. package/dist/DboBuilder/TableHandler/insert/insert.js +21 -11
  15. package/dist/DboBuilder/TableHandler/insert/insert.js.map +1 -1
  16. package/dist/DboBuilder/TableHandler/insert/insertNestedRecords.d.ts.map +1 -1
  17. package/dist/DboBuilder/TableHandler/insert/insertNestedRecords.js +1 -2
  18. package/dist/DboBuilder/TableHandler/insert/insertNestedRecords.js.map +1 -1
  19. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
  20. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +2 -1
  21. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
  22. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
  23. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +24 -95
  24. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
  25. package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
  26. package/dist/DboBuilder/TableHandler/update.js +20 -12
  27. package/dist/DboBuilder/TableHandler/update.js.map +1 -1
  28. package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -1
  29. package/dist/DboBuilder/TableHandler/updateBatch.js +13 -1
  30. package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -1
  31. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +1 -1
  32. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  33. package/dist/DboBuilder/ViewHandler/ViewHandler.js +5 -5
  34. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  35. package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
  36. package/dist/DboBuilder/ViewHandler/count.js +20 -8
  37. package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
  38. package/dist/DboBuilder/ViewHandler/find.d.ts +0 -12
  39. package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
  40. package/dist/DboBuilder/ViewHandler/find.js +27 -75
  41. package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
  42. package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.d.ts +14 -0
  43. package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.d.ts.map +1 -0
  44. package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.js +32 -0
  45. package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.js.map +1 -0
  46. package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
  47. package/dist/DboBuilder/ViewHandler/size.js +23 -8
  48. package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
  49. package/dist/DboBuilder/dboBuilderUtils.d.ts +1 -1
  50. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  51. package/dist/DboBuilder/dboBuilderUtils.js +2 -2
  52. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  53. package/dist/DboBuilder/parseUpdateRules.js +1 -1
  54. package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
  55. package/dist/PubSubManager/addSub.d.ts.map +1 -1
  56. package/dist/PubSubManager/addSub.js +1 -4
  57. package/dist/PubSubManager/addSub.js.map +1 -1
  58. package/dist/PublishParser/publishTypesAndUtils.d.ts +34 -1
  59. package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
  60. package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
  61. package/dist/TableConfig/TableConfig.d.ts +3 -15
  62. package/dist/TableConfig/TableConfig.d.ts.map +1 -1
  63. package/dist/TableConfig/TableConfig.js.map +1 -1
  64. package/dist/TableConfig/getCreateSchemaQueries.d.ts +4 -28
  65. package/dist/TableConfig/getCreateSchemaQueries.d.ts.map +1 -1
  66. package/dist/TableConfig/getTableConfigSchemaQueries.d.ts +4 -28
  67. package/dist/TableConfig/getTableConfigSchemaQueries.d.ts.map +1 -1
  68. package/dist/utils/utils.d.ts +1 -0
  69. package/dist/utils/utils.d.ts.map +1 -1
  70. package/dist/utils/utils.js +3 -1
  71. package/dist/utils/utils.js.map +1 -1
  72. package/lib/DboBuilder/TableHandler/TableHandler.ts +21 -6
  73. package/lib/DboBuilder/TableHandler/delete.ts +83 -15
  74. package/lib/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.ts +88 -0
  75. package/lib/DboBuilder/TableHandler/insert/insert.ts +25 -11
  76. package/lib/DboBuilder/TableHandler/insert/insertNestedRecords.ts +1 -2
  77. package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +7 -5
  78. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +34 -110
  79. package/lib/DboBuilder/TableHandler/update.ts +21 -12
  80. package/lib/DboBuilder/TableHandler/updateBatch.ts +15 -2
  81. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +5 -5
  82. package/lib/DboBuilder/ViewHandler/count.ts +24 -9
  83. package/lib/DboBuilder/ViewHandler/find.ts +35 -96
  84. package/lib/DboBuilder/ViewHandler/getReturnTypeQuery.ts +50 -0
  85. package/lib/DboBuilder/ViewHandler/size.ts +26 -12
  86. package/lib/DboBuilder/dboBuilderUtils.ts +1 -1
  87. package/lib/DboBuilder/parseUpdateRules.ts +1 -1
  88. package/lib/PubSubManager/addSub.ts +1 -5
  89. package/lib/PublishParser/publishTypesAndUtils.ts +42 -1
  90. package/lib/TableConfig/TableConfig.ts +4 -18
  91. package/lib/utils/utils.ts +2 -0
  92. package/package.json +1 -1
@@ -7,6 +7,7 @@ import {
7
7
  withUserRLS,
8
8
  } from "../dboBuilderUtils";
9
9
  import type { ViewHandler } from "./ViewHandler";
10
+ import { getReturnTypeQuery } from "./getReturnTypeQuery";
10
11
  export async function size(
11
12
  this: ViewHandler,
12
13
  _filter?: Filter,
@@ -25,7 +26,7 @@ export async function size(
25
26
  table_rules,
26
27
  localParams,
27
28
  ).then(async (_allowed) => {
28
- const q: string = (await this.find(
29
+ const selectQueryWithoutRLS = (await this.find(
29
30
  filter,
30
31
  {
31
32
  ...selectParams,
@@ -34,18 +35,31 @@ export async function size(
34
35
  undefined,
35
36
  table_rules,
36
37
  { ...localParams, returnQuery: "noRLS", bypassLimit: true },
37
- )) as any;
38
- const query = withUserRLS(
38
+ )) as unknown as string;
39
+
40
+ const queryWithoutUserRLS = `
41
+ SELECT sum(pg_column_size((prgl_size_query.*))) as size
42
+ FROM (
43
+ ${selectQueryWithoutRLS}
44
+ ) prgl_size_query
45
+ `;
46
+ const queryWithRLS = withUserRLS(localParams, queryWithoutUserRLS);
47
+
48
+ const queryToReturn = await getReturnTypeQuery({
49
+ handler: this,
39
50
  localParams,
40
- `${withUserRLS(localParams, "")}
41
- SELECT sum(pg_column_size((prgl_size_query.*))) as size
42
- FROM (
43
- ${q}
44
- ) prgl_size_query
45
- `,
46
- );
51
+ queryWithoutRLS: queryWithoutUserRLS,
52
+ queryWithRLS,
53
+ returnType: selectParams?.returnType,
54
+ newQuery: undefined,
55
+ });
56
+ if (queryToReturn) {
57
+ return queryToReturn as unknown[];
58
+ }
47
59
 
48
- return (this.tx?.t || this.db).one(query).then(({ size }) => size || "0");
60
+ return (this.tx?.t || this.db)
61
+ .one<{ size: string | null }>(queryWithRLS)
62
+ .then(({ size }) => size || "0");
49
63
  });
50
64
  await this._log({
51
65
  command: "size",
@@ -53,7 +67,7 @@ export async function size(
53
67
  data: { filter, selectParams },
54
68
  duration: Date.now() - start,
55
69
  });
56
- return result;
70
+ return result as string;
57
71
  } catch (e) {
58
72
  await this._log({
59
73
  command: "size",
@@ -96,7 +96,7 @@ export function getSerializedClientErrorFromPGError(
96
96
  }
97
97
  return errObject;
98
98
  }
99
- export function getClientErrorFromPGError(
99
+ export function rejectWithPGClientError(
100
100
  rawError: any,
101
101
  args: GetSerializedClientErrorFromPGErrorArgs,
102
102
  ) {
@@ -171,7 +171,7 @@ export async function parseUpdateRules(
171
171
  rows: [data],
172
172
  allowedCols,
173
173
  dbTx: this.tx?.dbTX || this.dboBuilder.dbo,
174
- tx: localParams?.tx?.t || this.tx?.t || this.db,
174
+ tx: this.getTransaction(localParams)?.t || this.db,
175
175
  validationOptions: {
176
176
  validate: updateValidate,
177
177
  localParams,
@@ -87,12 +87,8 @@ export async function addSub(
87
87
 
88
88
  if (viewOptions) {
89
89
  for (const relatedTable of viewOptions.relatedTables) {
90
- const quoteIdentTableName =
91
- `"${relatedTable.tableName}"` !== relatedTable.tableNameEscaped ?
92
- relatedTable.tableNameEscaped
93
- : relatedTable.tableName;
94
90
  const relatedTrigger = {
95
- table_name: quoteIdentTableName,
91
+ table_name: relatedTable.tableName,
96
92
  condition: parseCondition(relatedTable.condition),
97
93
  tracked_columns: relatedTable.tracked_columns,
98
94
  } satisfies AddTriggerParams;
@@ -60,6 +60,10 @@ export type ValidateRowArgsCommon<R = AnyObject, DBX = DBHandlerServer> = {
60
60
  dbx: DBX;
61
61
  tx: pgPromise.ITask<{}> | DB;
62
62
  } & (
63
+ | {
64
+ command: "delete";
65
+ data: unknown;
66
+ }
63
67
  | {
64
68
  command: "insert";
65
69
  data: R;
@@ -70,21 +74,57 @@ export type ValidateRowArgsCommon<R = AnyObject, DBX = DBHandlerServer> = {
70
74
  }
71
75
  );
72
76
 
77
+ export type AfterEachTsTrigger<R, DBX> = {
78
+ commands: Partial<Record<"insert" | "update" | "delete", 1>>;
79
+ changedFields?: string[];
80
+ validate: (
81
+ params: ValidateRowArgsCommon<R, DBX> & {
82
+ localParams: undefined | LocalParams;
83
+ },
84
+ ) => Promise<void>;
85
+ };
86
+
73
87
  export type ValidateRowsArgsCommon<R = AnyObject, DBX = DBHandlerServer> = {
88
+ /**
89
+ * The rows that were inserted/updated/deleted
90
+ * For delete the rows are the ones that were deleted (before delete)
91
+ * For insert the rows are the ones that were inserted (after insert)
92
+ * For update the rows are the ones that were updated (after update)
93
+ */
74
94
  rows: R[];
75
95
  dbx: DBX;
76
96
  tx: pgPromise.ITask<{}> | DB;
77
97
  } & (
98
+ | {
99
+ command: "delete";
100
+ data: unknown;
101
+ }
78
102
  | {
79
103
  command: "insert";
104
+ /**
105
+ * The data that was used to insert the rows.
106
+ */
80
107
  data: R[];
81
108
  }
82
109
  | {
83
110
  command: "update";
111
+ /**
112
+ * The data that was used to update the rows.
113
+ */
84
114
  data: Partial<R>[];
85
115
  }
86
116
  );
87
117
 
118
+ export type AfterAllTsTrigger<R, DBX> = {
119
+ commands: Partial<Record<"insert" | "update" | "delete", 1>>;
120
+ changedFields?: string[];
121
+ validate: (
122
+ params: ValidateRowsArgsCommon<R, DBX> & {
123
+ localParams: undefined | LocalParams;
124
+ },
125
+ ) => Promise<void>;
126
+ };
127
+
88
128
  export type ValidateRowArgs<R = AnyObject, DBX = DBHandlerServer> = ValidateRowArgsCommon<
89
129
  R,
90
130
  DBX
@@ -187,7 +227,8 @@ export type InsertRule<
187
227
  preValidate?: S extends DBSchema ? ValidateRow<Cols, S> : ValidateRowBasic;
188
228
 
189
229
  /**
190
- * Validation logic to check/update data for each request. Happens after publish rule checks (for fields, forcedData/forcedFilter)
230
+ * Validation logic to check/update data for each request.
231
+ * Happens after publish rule checks (for fields, forcedData/forcedFilter) but before insert.
191
232
  */
192
233
  validate?: S extends DBSchema ? ValidateRow<Cols, S> : ValidateRowBasic;
193
234
 
@@ -14,6 +14,8 @@ import { uploadFile } from "../DboBuilder/uploadFile";
14
14
  import type { DBOFullyTyped } from "../DBSchemaBuilder/DBSchemaBuilder";
15
15
  import type { DB, DBHandlerServer, Prostgles } from "../Prostgles";
16
16
  import type {
17
+ AfterAllTsTrigger,
18
+ AfterEachTsTrigger,
17
19
  InsertRule,
18
20
  SyncConfig,
19
21
  ValidateRowArgsCommon,
@@ -66,24 +68,8 @@ type BaseTableDefinition<R = AnyObject, DBX = DBHandlerServer> = {
66
68
  getPreInsertRow?: (
67
69
  args: GetPreInsertRowArgs,
68
70
  ) => Promise<{ row: AnyObject; onInserted: Promise<void> }>;
69
- afterEach?: {
70
- commands: Partial<Record<"insert" | "update", 1>>;
71
- changedFields?: string[];
72
- validate: (
73
- params: ValidateRowArgsCommon<R, DBX> & {
74
- localParams: undefined | LocalParams;
75
- },
76
- ) => Promise<void>;
77
- }[];
78
- afterAll?: {
79
- commands: Partial<Record<"insert" | "update", 1>>;
80
- changedFields?: string[];
81
- validate: (
82
- params: ValidateRowsArgsCommon<R, DBX> & {
83
- localParams: undefined | LocalParams;
84
- },
85
- ) => Promise<void>;
86
- }[];
71
+ afterEach?: AfterEachTsTrigger<R, DBX>[];
72
+ afterAll?: AfterAllTsTrigger<R, DBX>[];
87
73
  };
88
74
  triggers?: {
89
75
  [triggerName: string]: {
@@ -25,3 +25,5 @@ const canBeUsedAsIsInTypescript = (str: string): boolean => {
25
25
  const startsWithCharOrUnderscore = str[0]?.match(/^[a-z_]+$/i);
26
26
  return Boolean(isAlphaNumericOrUnderline && startsWithCharOrUnderscore);
27
27
  };
28
+
29
+ export const isArray = <T>(data: T): data is Extract<T, readonly unknown[]> => Array.isArray(data);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.548",
3
+ "version": "4.2.550",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",