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.
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts +18 -5
- package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.js +12 -6
- package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.d.ts +1 -1
- package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.js +56 -13
- package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
- package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.d.ts +21 -0
- package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.d.ts.map +1 -0
- package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.js +69 -0
- package/dist/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.js.map +1 -0
- package/dist/DboBuilder/TableHandler/insert/insert.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insert.js +21 -11
- package/dist/DboBuilder/TableHandler/insert/insert.js.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insertNestedRecords.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/insert/insertNestedRecords.js +1 -2
- package/dist/DboBuilder/TableHandler/insert/insertNestedRecords.js.map +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +2 -1
- package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +24 -95
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
- package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/update.js +20 -12
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/updateBatch.js +13 -1
- package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.js +5 -5
- package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.js +20 -8
- package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.d.ts +0 -12
- package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/find.js +27 -75
- package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.d.ts +14 -0
- package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.d.ts.map +1 -0
- package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.js +32 -0
- package/dist/DboBuilder/ViewHandler/getReturnTypeQuery.js.map +1 -0
- package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/size.js +23 -8
- package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts +1 -1
- package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
- package/dist/DboBuilder/dboBuilderUtils.js +2 -2
- package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.js +1 -1
- package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
- package/dist/PubSubManager/addSub.d.ts.map +1 -1
- package/dist/PubSubManager/addSub.js +1 -4
- package/dist/PubSubManager/addSub.js.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts +34 -1
- package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
- package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
- package/dist/TableConfig/TableConfig.d.ts +3 -15
- package/dist/TableConfig/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig/TableConfig.js.map +1 -1
- package/dist/TableConfig/getCreateSchemaQueries.d.ts +4 -28
- package/dist/TableConfig/getCreateSchemaQueries.d.ts.map +1 -1
- package/dist/TableConfig/getTableConfigSchemaQueries.d.ts +4 -28
- package/dist/TableConfig/getTableConfigSchemaQueries.d.ts.map +1 -1
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +3 -1
- package/dist/utils/utils.js.map +1 -1
- package/lib/DboBuilder/TableHandler/TableHandler.ts +21 -6
- package/lib/DboBuilder/TableHandler/delete.ts +83 -15
- package/lib/DboBuilder/TableHandler/executeHooksCheckAndPostValidation.ts +88 -0
- package/lib/DboBuilder/TableHandler/insert/insert.ts +25 -11
- package/lib/DboBuilder/TableHandler/insert/insertNestedRecords.ts +1 -2
- package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +7 -5
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +34 -110
- package/lib/DboBuilder/TableHandler/update.ts +21 -12
- package/lib/DboBuilder/TableHandler/updateBatch.ts +15 -2
- package/lib/DboBuilder/ViewHandler/ViewHandler.ts +5 -5
- package/lib/DboBuilder/ViewHandler/count.ts +24 -9
- package/lib/DboBuilder/ViewHandler/find.ts +35 -96
- package/lib/DboBuilder/ViewHandler/getReturnTypeQuery.ts +50 -0
- package/lib/DboBuilder/ViewHandler/size.ts +26 -12
- package/lib/DboBuilder/dboBuilderUtils.ts +1 -1
- package/lib/DboBuilder/parseUpdateRules.ts +1 -1
- package/lib/PubSubManager/addSub.ts +1 -5
- package/lib/PublishParser/publishTypesAndUtils.ts +42 -1
- package/lib/TableConfig/TableConfig.ts +4 -18
- package/lib/utils/utils.ts +2 -0
- 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
|
|
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
|
|
38
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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)
|
|
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",
|
|
@@ -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:
|
|
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:
|
|
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.
|
|
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
|
-
|
|
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]: {
|
package/lib/utils/utils.ts
CHANGED
|
@@ -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);
|