prostgles-server 4.1.98 → 4.1.99
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/QueryBuilder/getNewQuery.d.ts +5 -5
- package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/getNewQuery.js +3 -3
- package/dist/DboBuilder/QueryBuilder/getNewQuery.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/delete.d.ts.map +1 -1
- package/dist/DboBuilder/delete.js +65 -50
- package/dist/DboBuilder/delete.js.map +1 -1
- package/dist/DboBuilder/find.d.ts +12 -2
- package/dist/DboBuilder/find.d.ts.map +1 -1
- package/dist/DboBuilder/find.js +38 -19
- package/dist/DboBuilder/find.js.map +1 -1
- package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +7 -7
- package/lib/DboBuilder/delete.ts +79 -52
- package/lib/DboBuilder/find.ts +51 -21
- package/package.json +2 -2
- package/tests/client/package-lock.json +15 -15
- package/tests/client/package.json +1 -1
- package/tests/isomorphic_queries.ts +6 -0
- package/tests/server/package-lock.json +3 -3
- package/tests/server_only_queries.ts +0 -5
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { TableHandler } from "../TableHandler/TableHandler";
|
|
2
|
-
import { TableRule } from "../../PublishParser";
|
|
3
|
-
import { Filter, LocalParams } from "../../DboBuilder";
|
|
4
1
|
import { RawJoinPath } from "prostgles-types";
|
|
2
|
+
import { Filter, LocalParams } from "../../DboBuilder";
|
|
3
|
+
import { TableRule } from "../../PublishParser";
|
|
4
|
+
import { ViewHandler } from "../ViewHandler/ViewHandler";
|
|
5
5
|
import { NewQuery } from "./QueryBuilder";
|
|
6
|
-
export declare function getNewQuery(_this:
|
|
6
|
+
export declare function getNewQuery(_this: ViewHandler, filter: Filter, selectParams: ({
|
|
7
7
|
limit?: number | null | undefined;
|
|
8
8
|
offset?: number | undefined;
|
|
9
9
|
groupBy?: boolean | undefined;
|
|
10
|
-
returnType?: "values" | "value" | "row" | "statement" | undefined;
|
|
10
|
+
returnType?: "values" | "value" | "row" | "statement" | "statement-no-rls" | "statement-where" | undefined;
|
|
11
11
|
} & {
|
|
12
12
|
select?: (("" | "*" | {
|
|
13
13
|
"*": 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNewQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getNewQuery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getNewQuery.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getNewQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,WAAW,EAA2C,MAAM,iBAAiB,CAAC;AACjI,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIzD,OAAO,EAAE,QAAQ,EAAmC,MAAM,gBAAgB,CAAC;AAwD3E,wBAAsB,WAAW,CAC/B,KAAK,EAAE,WAAW,EAClB,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,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getNewQuery = void 0;
|
|
4
|
-
const utils_1 = require("../../utils");
|
|
5
4
|
const prostgles_types_1 = require("prostgles-types");
|
|
6
|
-
const
|
|
7
|
-
const QueryBuilder_1 = require("./QueryBuilder");
|
|
5
|
+
const utils_1 = require("../../utils");
|
|
8
6
|
const parseJoinPath_1 = require("../ViewHandler/parseJoinPath");
|
|
9
7
|
const prepareSortItems_1 = require("../ViewHandler/prepareSortItems");
|
|
8
|
+
const Functions_1 = require("./Functions");
|
|
9
|
+
const QueryBuilder_1 = require("./QueryBuilder");
|
|
10
10
|
const JOIN_KEYS = ["$innerJoin", "$leftJoin"];
|
|
11
11
|
const parseJoinSelect = (joinParams) => {
|
|
12
12
|
if (!joinParams) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNewQuery.js","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getNewQuery.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;
|
|
1
|
+
{"version":3,"file":"getNewQuery.js","sourceRoot":"","sources":["../../../lib/DboBuilder/QueryBuilder/getNewQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,7 +63,7 @@ export declare class ViewHandler {
|
|
|
63
63
|
data: AnyObject;
|
|
64
64
|
} | undefined, _param3?: undefined, tableRules?: TableRule | undefined, localParams?: LocalParams | undefined) => Promise<import("prostgles-types").ValidatedColumnInfo[]>;
|
|
65
65
|
getValidatedRules(tableRules?: TableRule, localParams?: LocalParams): ValidatedTableRules;
|
|
66
|
-
find: (filter?: Filter | undefined, selectParams?: SelectParams | undefined,
|
|
66
|
+
find: (filter?: Filter | undefined, selectParams?: SelectParams | undefined, _?: undefined, tableRules?: TableRule | undefined, localParams?: LocalParams | undefined) => Promise<any[]>;
|
|
67
67
|
findOne(filter?: Filter, selectParams?: SelectParams, param3_unused?: undefined, table_rules?: TableRule, localParams?: LocalParams): Promise<any>;
|
|
68
68
|
subscribe(filter: Filter, params: SubscribeParams, localFuncs: LocalFuncs): Promise<{
|
|
69
69
|
unsubscribe: () => any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewHandler.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/ViewHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,SAAS,EACT,UAAU,EAAE,WAAW,EAAE,YAAY,EACrC,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,EACV,MAAM,EACN,WAAW,EACX,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAIhD,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAK3C,OAAO,EAAE,UAAU,EAAa,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMlC,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,EAAE,CAAC;AAEJ,qBAAa,WAAW;IACtB,EAAE,EAAE,EAAE,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,WAAW,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;IAEvB,EAAE,CAAC,EAAE;QACH,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,IAAI,EAAE,aAAa,CAAC;KACrB,CAAA;IACD,IAAI,SAAS,6BAEZ;IAED,OAAO,UAAQ;IACf,SAAS,SAAM;IAGf,QAAQ,UAAS;gBACL,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE;QAAE,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,aAAa,CAAA;KAAE,EAAE,SAAS,CAAC,EAAE,SAAS;IAyBrJ,IAAI,mCAAoC,KAAK,UAAU,EAAE,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC,+BAE3F;IAED,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAczF,iBAAiB;;;;;;;;;;2BAAgC;IAEjD,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE;IAsBvH,WAAW,CAAC,MAAM,EAAE,GAAG;IAIvB,OAAO,qLAAqB;IAI5B,UAAU;;;;+KAAyB;IAEnC,iBAAiB,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,mBAAmB;IA6IzF,IAAI,
|
|
1
|
+
{"version":3,"file":"ViewHandler.d.ts","sourceRoot":"","sources":["../../../lib/DboBuilder/ViewHandler/ViewHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,YAAY,EAAe,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,WAAW,EAA2B,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAc,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,wBAAsB,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,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,
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,YAAY,EAAe,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,WAAW,EAA2B,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAc,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,wBAAsB,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,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,CA6FrL"}
|
|
@@ -40,7 +40,7 @@ async function _delete(filter, params, param3_unused, table_rules, localParams)
|
|
|
40
40
|
throw "Invalid params: " + bad_params.join(", ") + " \n Expecting: " + good_params.join(", ");
|
|
41
41
|
}
|
|
42
42
|
let queryType = 'none';
|
|
43
|
-
let
|
|
43
|
+
let queryWithoutRLS = `DELETE FROM ${this.escapedName} `;
|
|
44
44
|
const filterOpts = (await this.prepareWhere({
|
|
45
45
|
filter,
|
|
46
46
|
forcedFilter,
|
|
@@ -48,7 +48,7 @@ async function _delete(filter, params, param3_unused, table_rules, localParams)
|
|
|
48
48
|
localParams,
|
|
49
49
|
tableRule: table_rules
|
|
50
50
|
}));
|
|
51
|
-
|
|
51
|
+
queryWithoutRLS += filterOpts.where;
|
|
52
52
|
if (validate) {
|
|
53
53
|
const _filter = filterOpts.filter;
|
|
54
54
|
await validate(_filter);
|
|
@@ -60,61 +60,30 @@ async function _delete(filter, params, param3_unused, table_rules, localParams)
|
|
|
60
60
|
throw "Returning dissallowed";
|
|
61
61
|
}
|
|
62
62
|
returningQuery = this.makeReturnQuery(await this.prepareReturning(returning, this.parseFieldFilter(returningFields)));
|
|
63
|
-
|
|
63
|
+
queryWithoutRLS += returningQuery;
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
const queryWithRLS = (0, DboBuilder_1.withUserRLS)(localParams, queryWithoutRLS);
|
|
66
66
|
if (returnQuery)
|
|
67
|
-
return
|
|
67
|
+
return queryWithRLS;
|
|
68
68
|
/**
|
|
69
69
|
* Delete file
|
|
70
70
|
*/
|
|
71
71
|
if (this.is_media) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const txDelete = async (tbl) => {
|
|
79
|
-
if (!tbl.tx)
|
|
80
|
-
throw new Error("Missing transaction object tx");
|
|
81
|
-
let files = [];
|
|
82
|
-
const totalFiles = await tbl.count(filterOpts.filter);
|
|
83
|
-
do {
|
|
84
|
-
const batch = await tbl.find(filterOpts.filter, { limit: 100, offset: files.length });
|
|
85
|
-
files = files.concat(batch);
|
|
86
|
-
} while (files.length < totalFiles);
|
|
87
|
-
const fileManager = tbl.dboBuilder.prostgles.fileManager;
|
|
88
|
-
if (!fileManager)
|
|
89
|
-
throw new Error("fileManager missing");
|
|
90
|
-
for await (const file of files) {
|
|
91
|
-
await tbl.tx.t.any(`DELETE FROM ${(0, prostgles_types_1.asName)(this.name)} WHERE id = \${id}`, file);
|
|
92
|
-
}
|
|
93
|
-
/** If any table delete fails then do not delete files */
|
|
94
|
-
for await (const file of files) {
|
|
95
|
-
await fileManager.deleteFile(file.name);
|
|
96
|
-
/** TODO: Keep track of deleted files in case of failure */
|
|
97
|
-
// await tbl.t?.any(`UPDATE ${asName(this.name)} SET deleted = NOW(), deleted_from_storage = NOW() WHERE id = ` + "${id}", file);
|
|
98
|
-
}
|
|
99
|
-
if (returning) {
|
|
100
|
-
return files.map(f => (0, PubSubManager_1.pickKeys)(f, ["id", "name"]));
|
|
101
|
-
}
|
|
102
|
-
return undefined;
|
|
103
|
-
};
|
|
104
|
-
if (localParams?.tx?.dbTX) {
|
|
105
|
-
return txDelete(localParams.tx.dbTX[this.name]);
|
|
106
|
-
}
|
|
107
|
-
else if (this.tx) {
|
|
108
|
-
return txDelete(this);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
return this.dboBuilder.getTX(tx => {
|
|
112
|
-
return txDelete(tx[this.name]);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
72
|
+
return onDeleteFromFileTable.bind(this)({
|
|
73
|
+
localParams,
|
|
74
|
+
queryType,
|
|
75
|
+
returningQuery: returnQuery ? returnQuery : undefined,
|
|
76
|
+
filterOpts,
|
|
77
|
+
});
|
|
116
78
|
}
|
|
117
|
-
return (0, find_1.runQueryReturnType)(
|
|
79
|
+
return (0, find_1.runQueryReturnType)({
|
|
80
|
+
queryWithoutRLS,
|
|
81
|
+
queryWithRLS,
|
|
82
|
+
newQuery: undefined,
|
|
83
|
+
returnType: params?.returnType,
|
|
84
|
+
handler: this,
|
|
85
|
+
localParams
|
|
86
|
+
});
|
|
118
87
|
}
|
|
119
88
|
catch (e) {
|
|
120
89
|
if (localParams && localParams.testRule)
|
|
@@ -123,4 +92,50 @@ async function _delete(filter, params, param3_unused, table_rules, localParams)
|
|
|
123
92
|
}
|
|
124
93
|
}
|
|
125
94
|
exports._delete = _delete;
|
|
95
|
+
async function onDeleteFromFileTable({ localParams, queryType, returningQuery, filterOpts }) {
|
|
96
|
+
if (!this.dboBuilder.prostgles.fileManager)
|
|
97
|
+
throw new Error("fileManager missing");
|
|
98
|
+
if (this.dboBuilder.prostgles.opts.fileTable?.delayedDelete) {
|
|
99
|
+
return this.dbHandler[queryType](`UPDATE ${(0, prostgles_types_1.asName)(this.name)} SET deleted = now() ${filterOpts.where} ${returningQuery ?? ""};`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const txDelete = async (tbl) => {
|
|
103
|
+
if (!tbl.tx)
|
|
104
|
+
throw new Error("Missing transaction object tx");
|
|
105
|
+
let files = [];
|
|
106
|
+
const totalFiles = await tbl.count(filterOpts.filter);
|
|
107
|
+
do {
|
|
108
|
+
const batch = await tbl.find(filterOpts.filter, { limit: 100, offset: files.length });
|
|
109
|
+
files = files.concat(batch);
|
|
110
|
+
} while (files.length < totalFiles);
|
|
111
|
+
const fileManager = tbl.dboBuilder.prostgles.fileManager;
|
|
112
|
+
if (!fileManager)
|
|
113
|
+
throw new Error("fileManager missing");
|
|
114
|
+
for await (const file of files) {
|
|
115
|
+
await tbl.tx.t.any(`DELETE FROM ${(0, prostgles_types_1.asName)(this.name)} WHERE id = \${id}`, file);
|
|
116
|
+
}
|
|
117
|
+
/** If any table delete fails then do not delete files */
|
|
118
|
+
for await (const file of files) {
|
|
119
|
+
await fileManager.deleteFile(file.name);
|
|
120
|
+
/** TODO: Keep track of deleted files in case of failure */
|
|
121
|
+
// await tbl.t?.any(`UPDATE ${asName(this.name)} SET deleted = NOW(), deleted_from_storage = NOW() WHERE id = ` + "${id}", file);
|
|
122
|
+
}
|
|
123
|
+
if (returningQuery) {
|
|
124
|
+
return files.map(f => (0, PubSubManager_1.pickKeys)(f, ["id", "name"]));
|
|
125
|
+
}
|
|
126
|
+
return undefined;
|
|
127
|
+
};
|
|
128
|
+
if (localParams?.tx?.dbTX) {
|
|
129
|
+
return txDelete(localParams.tx.dbTX[this.name]);
|
|
130
|
+
}
|
|
131
|
+
else if (this.tx) {
|
|
132
|
+
return txDelete(this);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
return this.dboBuilder.getTX(tx => {
|
|
136
|
+
return txDelete(tx[this.name]);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
126
141
|
//# sourceMappingURL=delete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../lib/DboBuilder/delete.ts"],"names":[],"mappings":";;;AACA,qDAA+E;AAC/E,8CAA6E;AAE7E,kEAA0D;AAE1D,iCAA4C;AAErC,KAAK,UAAU,OAAO,CAAqB,MAAe,EAAE,MAAqB,EAAE,aAAyB,EAAE,WAAuB,EAAE,WAAyB;IACrK,IAAI;QACF,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QACnC,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEzB,IAAI,YAAY,GAA0B,EAAE,EAC1C,YAAY,GAA4B,GAAG,EAC3C,eAAe,GAA4B,GAAG,EAC9C,QAAgC,CAAC;QAEnC,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,WAAW,IAAI,EAAE,CAAC;QACpE,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,CAAC,MAAM;gBAAE,MAAM,sBAAsB,CAAC;YACtD,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC;YAC/C,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC;YAC/C,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC;YACrD,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC;YAEvC,IAAI,CAAC,eAAe;gBAAE,eAAe,GAAG,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC;YACpE,IAAI,CAAC,eAAe;gBAAE,eAAe,GAAG,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC;YAE1E,IAAI,CAAC,YAAY;gBAAE,MAAM,4BAA4B,IAAI,CAAC,IAAI,yBAAyB,CAAC;YAExF,+BAA+B;YAC/B,IAAI,QAAQ,EAAE;gBACZ,MAAM,IAAI,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC9F,OAAO,IAAI,CAAC;aACb;SACF;QAGD,IAAI,MAAM,EAAE;YACV,MAAM,cAAc,GAAkC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;YACtF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM;gBAAE,MAAM,kBAAkB,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACpI;QAED,IAAI,SAAS,GAA8B,MAAM,CAAC;QAClD,IAAI,
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../lib/DboBuilder/delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,16 @@ import { Filter, LocalParams } from "../DboBuilder";
|
|
|
3
3
|
import { TableRule } from "../PublishParser";
|
|
4
4
|
import { TableHandler } from "./TableHandler/TableHandler";
|
|
5
5
|
import { ViewHandler } from "./ViewHandler/ViewHandler";
|
|
6
|
-
|
|
7
|
-
export declare const
|
|
6
|
+
import { NewQuery } from "./QueryBuilder/QueryBuilder";
|
|
7
|
+
export declare const find: (this: ViewHandler, filter?: Filter, selectParams?: SelectParams, _?: undefined, tableRules?: TableRule, localParams?: LocalParams) => Promise<any[]>;
|
|
8
|
+
type RunQueryReturnTypeArgs = {
|
|
9
|
+
queryWithRLS: string;
|
|
10
|
+
queryWithoutRLS: string;
|
|
11
|
+
returnType: SelectParams["returnType"];
|
|
12
|
+
handler: ViewHandler | TableHandler;
|
|
13
|
+
localParams: LocalParams | undefined;
|
|
14
|
+
newQuery: NewQuery | undefined;
|
|
15
|
+
};
|
|
16
|
+
export declare const runQueryReturnType: ({ newQuery, handler, localParams, queryWithRLS, queryWithoutRLS, returnType, }: RunQueryReturnTypeArgs) => Promise<any>;
|
|
17
|
+
export {};
|
|
8
18
|
//# sourceMappingURL=find.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/find.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAiD,MAAM,eAAe,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/find.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAiD,MAAM,eAAe,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,eAAO,MAAM,IAAI,SAAwB,WAAW,WAAW,MAAM,iBAAiB,YAAY,MAAM,SAAS,eAAe,SAAS,gBAAgB,WAAW,KAAG,QAAQ,GAAG,EAAE,CAqFnL,CAAA;AAED,KAAK,sBAAsB,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO,EAAE,WAAW,GAAG,YAAY,CAAC;IACpC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,kBAAkB,mFAAyF,sBAAsB,iBA+B7I,CAAA"}
|
package/dist/DboBuilder/find.js
CHANGED
|
@@ -6,11 +6,11 @@ const DboBuilder_1 = require("../DboBuilder");
|
|
|
6
6
|
const runSQL_1 = require("../DboBuilder/runSQL");
|
|
7
7
|
const getNewQuery_1 = require("./QueryBuilder/getNewQuery");
|
|
8
8
|
const getSelectQuery_1 = require("./QueryBuilder/getSelectQuery");
|
|
9
|
-
const find = async function (filter, selectParams,
|
|
9
|
+
const find = async function (filter, selectParams, _, tableRules, localParams) {
|
|
10
10
|
try {
|
|
11
11
|
await this._log({ command: "find", localParams, data: { filter, selectParams } });
|
|
12
12
|
filter = filter || {};
|
|
13
|
-
const allowedReturnTypes =
|
|
13
|
+
const allowedReturnTypes = Object.keys({ row: 1, statement: 1, value: 1, values: 1, "statement-no-rls": 1, "statement-where": 1 });
|
|
14
14
|
const { returnType } = selectParams || {};
|
|
15
15
|
if (returnType && !allowedReturnTypes.includes(returnType)) {
|
|
16
16
|
throw `returnType (${returnType}) can only be ${allowedReturnTypes.join(" OR ")}`;
|
|
@@ -19,7 +19,9 @@ const find = async function (filter, selectParams, param3_unused, tableRules, lo
|
|
|
19
19
|
if (testRule)
|
|
20
20
|
return [];
|
|
21
21
|
if (selectParams) {
|
|
22
|
-
const good_params =
|
|
22
|
+
const good_params = Object.keys({
|
|
23
|
+
"select": 1, "orderBy": 1, "offset": 1, "limit": 1, "returnType": 1, "groupBy": 1
|
|
24
|
+
});
|
|
23
25
|
const bad_params = Object.keys(selectParams).filter(k => !good_params.includes(k));
|
|
24
26
|
if (bad_params && bad_params.length)
|
|
25
27
|
throw "Invalid params: " + bad_params.join(", ") + " \n Expecting: " + good_params.join(", ");
|
|
@@ -39,8 +41,8 @@ const find = async function (filter, selectParams, param3_unused, tableRules, lo
|
|
|
39
41
|
}
|
|
40
42
|
const _selectParams = selectParams ?? {};
|
|
41
43
|
const selectParamsLimitCheck = localParams?.bypassLimit && !Number.isFinite(_selectParams.limit) ? { ..._selectParams, limit: null } : { limit: 1000, ..._selectParams };
|
|
42
|
-
const
|
|
43
|
-
const queryWithoutRLS = (0, getSelectQuery_1.getSelectQuery)(this,
|
|
44
|
+
const newQuery = await (0, getNewQuery_1.getNewQuery)(this, filter, selectParamsLimitCheck, _, tableRules, localParams);
|
|
45
|
+
const queryWithoutRLS = (0, getSelectQuery_1.getSelectQuery)(this, newQuery, undefined, !!selectParamsLimitCheck?.groupBy);
|
|
44
46
|
const queryWithRLS = (0, DboBuilder_1.withUserRLS)(localParams, queryWithoutRLS);
|
|
45
47
|
if (testRule) {
|
|
46
48
|
try {
|
|
@@ -54,14 +56,21 @@ const find = async function (filter, selectParams, param3_unused, tableRules, lo
|
|
|
54
56
|
}
|
|
55
57
|
/** Used for subscribe */
|
|
56
58
|
if (localParams?.returnNewQuery)
|
|
57
|
-
return
|
|
59
|
+
return newQuery;
|
|
58
60
|
if (localParams?.returnQuery) {
|
|
59
61
|
if (localParams?.returnQuery === "where-condition") {
|
|
60
|
-
return
|
|
62
|
+
return newQuery.whereOpts.condition;
|
|
61
63
|
}
|
|
62
64
|
return (localParams?.returnQuery === "noRLS" ? queryWithoutRLS : queryWithRLS);
|
|
63
65
|
}
|
|
64
|
-
return (0, exports.runQueryReturnType)(
|
|
66
|
+
return (0, exports.runQueryReturnType)({
|
|
67
|
+
queryWithoutRLS,
|
|
68
|
+
queryWithRLS,
|
|
69
|
+
returnType,
|
|
70
|
+
handler: this,
|
|
71
|
+
localParams,
|
|
72
|
+
newQuery,
|
|
73
|
+
});
|
|
65
74
|
}
|
|
66
75
|
catch (e) {
|
|
67
76
|
if (localParams && localParams.testRule)
|
|
@@ -70,10 +79,28 @@ const find = async function (filter, selectParams, param3_unused, tableRules, lo
|
|
|
70
79
|
}
|
|
71
80
|
};
|
|
72
81
|
exports.find = find;
|
|
73
|
-
const runQueryReturnType = async (
|
|
74
|
-
|
|
82
|
+
const runQueryReturnType = async ({ newQuery, handler, localParams, queryWithRLS, queryWithoutRLS, returnType, }) => {
|
|
83
|
+
const query = queryWithRLS;
|
|
84
|
+
const sqlTypes = ["statement", "statement-no-rls", "statement-where"];
|
|
85
|
+
if (!returnType || returnType === "values") {
|
|
86
|
+
return handler.dbHandler.any(query).then(data => {
|
|
87
|
+
if (returnType === "values") {
|
|
88
|
+
return data.map(d => Object.values(d)[0]);
|
|
89
|
+
}
|
|
90
|
+
return data;
|
|
91
|
+
}).catch(err => (0, DboBuilder_1.makeErrorFromPGError)(err, localParams, this));
|
|
92
|
+
}
|
|
93
|
+
else if (sqlTypes.some(v => v === returnType)) {
|
|
75
94
|
if (!(await (0, runSQL_1.canRunSQL)(handler.dboBuilder.prostgles, localParams))) {
|
|
76
|
-
throw `Not allowed: {returnType:
|
|
95
|
+
throw `Not allowed: {returnType: ${JSON.stringify(returnType)}} requires execute sql privileges `;
|
|
96
|
+
}
|
|
97
|
+
if (returnType === "statement-no-rls") {
|
|
98
|
+
return queryWithoutRLS;
|
|
99
|
+
}
|
|
100
|
+
if (returnType === "statement-where") {
|
|
101
|
+
if (!newQuery)
|
|
102
|
+
throw `returnType ${returnType} not possible for this command type`;
|
|
103
|
+
return newQuery.whereOpts.condition;
|
|
77
104
|
}
|
|
78
105
|
return query;
|
|
79
106
|
}
|
|
@@ -82,14 +109,6 @@ const runQueryReturnType = async (query, returnType, handler, localParams) => {
|
|
|
82
109
|
return (data && returnType === "value") ? Object.values(data)[0] : data;
|
|
83
110
|
}).catch(err => (0, DboBuilder_1.makeErrorFromPGError)(err, localParams, this));
|
|
84
111
|
}
|
|
85
|
-
else {
|
|
86
|
-
return handler.dbHandler.any(query).then(data => {
|
|
87
|
-
if (returnType === "values") {
|
|
88
|
-
return data.map(d => Object.values(d)[0]);
|
|
89
|
-
}
|
|
90
|
-
return data;
|
|
91
|
-
}).catch(err => (0, DboBuilder_1.makeErrorFromPGError)(err, localParams, this));
|
|
92
|
-
}
|
|
93
112
|
};
|
|
94
113
|
exports.runQueryReturnType = runQueryReturnType;
|
|
95
114
|
//# sourceMappingURL=find.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../lib/DboBuilder/find.ts"],"names":[],"mappings":";;;AACA,qDAAyD;AACzD,8CAAmG;AACnG,iDAAiD;AAEjD,4DAAyD;AACzD,kEAA+D;
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../lib/DboBuilder/find.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TableHandler } from "../TableHandler/TableHandler";
|
|
3
|
-
import { TableRule } from "../../PublishParser";
|
|
1
|
+
import { DetailedJoinSelect, JoinPath, JoinSelect, RawJoinPath, SelectParams, SimpleJoinSelect, getKeys } from "prostgles-types";
|
|
4
2
|
import { Filter, LocalParams } from "../../DboBuilder";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import { TableRule } from "../../PublishParser";
|
|
4
|
+
import { get } from "../../utils";
|
|
5
|
+
import { ViewHandler } from "../ViewHandler/ViewHandler";
|
|
8
6
|
import { parseJoinPath } from "../ViewHandler/parseJoinPath";
|
|
9
7
|
import { prepareSortItems } from "../ViewHandler/prepareSortItems";
|
|
8
|
+
import { COMPUTED_FIELDS, FUNCTIONS } from "./Functions";
|
|
9
|
+
import { NewQuery, NewQueryJoin, SelectItemBuilder } from "./QueryBuilder";
|
|
10
10
|
|
|
11
11
|
const JOIN_KEYS = ["$innerJoin", "$leftJoin"] as const;
|
|
12
12
|
type ParsedJoin =
|
|
@@ -63,7 +63,7 @@ const parseJoinSelect = (joinParams: string | JoinSelect): ParsedJoin => {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
export async function getNewQuery(
|
|
66
|
-
_this:
|
|
66
|
+
_this: ViewHandler,
|
|
67
67
|
filter: Filter,
|
|
68
68
|
selectParams: (SelectParams & { alias?: string }) = {},
|
|
69
69
|
param3_unused = null,
|
package/lib/DboBuilder/delete.ts
CHANGED
|
@@ -47,7 +47,7 @@ export async function _delete(this: TableHandler, filter?: Filter, params?: Dele
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
let queryType: keyof pgPromise.ITask<{}> = 'none';
|
|
50
|
-
let
|
|
50
|
+
let queryWithoutRLS = `DELETE FROM ${this.escapedName} `;
|
|
51
51
|
const filterOpts = (await this.prepareWhere({
|
|
52
52
|
filter,
|
|
53
53
|
forcedFilter,
|
|
@@ -55,7 +55,7 @@ export async function _delete(this: TableHandler, filter?: Filter, params?: Dele
|
|
|
55
55
|
localParams,
|
|
56
56
|
tableRule: table_rules
|
|
57
57
|
}))
|
|
58
|
-
|
|
58
|
+
queryWithoutRLS += filterOpts.where;
|
|
59
59
|
if (validate) {
|
|
60
60
|
const _filter = filterOpts.filter;
|
|
61
61
|
await validate(_filter);
|
|
@@ -68,67 +68,94 @@ export async function _delete(this: TableHandler, filter?: Filter, params?: Dele
|
|
|
68
68
|
throw "Returning dissallowed";
|
|
69
69
|
}
|
|
70
70
|
returningQuery = this.makeReturnQuery(await this.prepareReturning(returning, this.parseFieldFilter(returningFields)));
|
|
71
|
-
|
|
71
|
+
queryWithoutRLS += returningQuery
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
if (returnQuery) return
|
|
74
|
+
const queryWithRLS = withUserRLS(localParams, queryWithoutRLS);
|
|
75
|
+
if (returnQuery) return queryWithRLS;
|
|
76
76
|
|
|
77
77
|
/**
|
|
78
78
|
* Delete file
|
|
79
79
|
*/
|
|
80
80
|
if (this.is_media) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
if (!tbl.tx) throw new Error("Missing transaction object tx");
|
|
88
|
-
let files: { id: string; name: string }[] = [];
|
|
89
|
-
const totalFiles = await tbl.count(filterOpts.filter);
|
|
90
|
-
do {
|
|
91
|
-
const batch = await tbl.find(filterOpts.filter, { limit: 100, offset: files.length });
|
|
92
|
-
files = files.concat(batch);
|
|
93
|
-
} while(files.length < totalFiles)
|
|
94
|
-
|
|
95
|
-
const fileManager = tbl.dboBuilder.prostgles.fileManager
|
|
96
|
-
if (!fileManager) throw new Error("fileManager missing");
|
|
97
|
-
|
|
98
|
-
for await (const file of files) {
|
|
99
|
-
await tbl.tx.t.any(`DELETE FROM ${asName(this.name)} WHERE id = \${id}`, file);
|
|
100
|
-
}
|
|
101
|
-
/** If any table delete fails then do not delete files */
|
|
102
|
-
for await (const file of files) {
|
|
103
|
-
await fileManager.deleteFile(file.name);
|
|
104
|
-
/** TODO: Keep track of deleted files in case of failure */
|
|
105
|
-
// await tbl.t?.any(`UPDATE ${asName(this.name)} SET deleted = NOW(), deleted_from_storage = NOW() WHERE id = ` + "${id}", file);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
if (returning) {
|
|
109
|
-
return files.map(f => pickKeys(f, ["id", "name"]));
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return undefined;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (localParams?.tx?.dbTX) {
|
|
116
|
-
return txDelete(localParams.tx.dbTX[this.name] as TableHandler)
|
|
117
|
-
} else if (this.tx) {
|
|
118
|
-
return txDelete(this)
|
|
119
|
-
} else {
|
|
120
|
-
|
|
121
|
-
return this.dboBuilder.getTX(tx => {
|
|
122
|
-
return txDelete(tx[this.name] as TableHandler)
|
|
123
|
-
})
|
|
124
|
-
}
|
|
125
|
-
}
|
|
81
|
+
return onDeleteFromFileTable.bind(this)({
|
|
82
|
+
localParams,
|
|
83
|
+
queryType,
|
|
84
|
+
returningQuery: returnQuery? returnQuery : undefined,
|
|
85
|
+
filterOpts,
|
|
86
|
+
});
|
|
126
87
|
}
|
|
127
88
|
|
|
128
|
-
return runQueryReturnType(
|
|
89
|
+
return runQueryReturnType({
|
|
90
|
+
queryWithoutRLS,
|
|
91
|
+
queryWithRLS,
|
|
92
|
+
newQuery: undefined,
|
|
93
|
+
returnType: params?.returnType,
|
|
94
|
+
handler: this,
|
|
95
|
+
localParams
|
|
96
|
+
});
|
|
129
97
|
|
|
130
98
|
} catch (e) {
|
|
131
99
|
if (localParams && localParams.testRule) throw e;
|
|
132
100
|
throw parseError(e, `dbo.${this.name}.delete(${JSON.stringify(filter || {}, null, 2)}, ${JSON.stringify(params || {}, null, 2)})`);
|
|
133
101
|
}
|
|
134
|
-
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
type OnDeleteFromFileTableArgs = {
|
|
106
|
+
localParams: LocalParams | undefined;
|
|
107
|
+
queryType: "one" | "none" | "many" | "any";
|
|
108
|
+
returningQuery: undefined | string;
|
|
109
|
+
filterOpts: {
|
|
110
|
+
where: string;
|
|
111
|
+
filter: AnyObject;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async function onDeleteFromFileTable(this: TableHandler, { localParams, queryType, returningQuery, filterOpts }: OnDeleteFromFileTableArgs){
|
|
115
|
+
|
|
116
|
+
if (!this.dboBuilder.prostgles.fileManager) throw new Error("fileManager missing")
|
|
117
|
+
if (this.dboBuilder.prostgles.opts.fileTable?.delayedDelete) {
|
|
118
|
+
return this.dbHandler[queryType](`UPDATE ${asName(this.name)} SET deleted = now() ${filterOpts.where} ${returningQuery ?? ""};`)
|
|
119
|
+
} else {
|
|
120
|
+
|
|
121
|
+
const txDelete = async (tbl: TableHandler) => {
|
|
122
|
+
if (!tbl.tx) throw new Error("Missing transaction object tx");
|
|
123
|
+
let files: { id: string; name: string }[] = [];
|
|
124
|
+
const totalFiles = await tbl.count(filterOpts.filter);
|
|
125
|
+
do {
|
|
126
|
+
const batch = await tbl.find(filterOpts.filter, { limit: 100, offset: files.length });
|
|
127
|
+
files = files.concat(batch);
|
|
128
|
+
} while(files.length < totalFiles)
|
|
129
|
+
|
|
130
|
+
const fileManager = tbl.dboBuilder.prostgles.fileManager
|
|
131
|
+
if (!fileManager) throw new Error("fileManager missing");
|
|
132
|
+
|
|
133
|
+
for await (const file of files) {
|
|
134
|
+
await tbl.tx.t.any(`DELETE FROM ${asName(this.name)} WHERE id = \${id}`, file);
|
|
135
|
+
}
|
|
136
|
+
/** If any table delete fails then do not delete files */
|
|
137
|
+
for await (const file of files) {
|
|
138
|
+
await fileManager.deleteFile(file.name);
|
|
139
|
+
/** TODO: Keep track of deleted files in case of failure */
|
|
140
|
+
// await tbl.t?.any(`UPDATE ${asName(this.name)} SET deleted = NOW(), deleted_from_storage = NOW() WHERE id = ` + "${id}", file);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (returningQuery) {
|
|
144
|
+
return files.map(f => pickKeys(f, ["id", "name"]));
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (localParams?.tx?.dbTX) {
|
|
151
|
+
return txDelete(localParams.tx.dbTX[this.name] as TableHandler)
|
|
152
|
+
} else if (this.tx) {
|
|
153
|
+
return txDelete(this)
|
|
154
|
+
} else {
|
|
155
|
+
|
|
156
|
+
return this.dboBuilder.getTX(tx => {
|
|
157
|
+
return txDelete(tx[this.name] as TableHandler)
|
|
158
|
+
})
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
package/lib/DboBuilder/find.ts
CHANGED
|
@@ -7,12 +7,13 @@ import { getNewQuery } from "./QueryBuilder/getNewQuery";
|
|
|
7
7
|
import { getSelectQuery } from "./QueryBuilder/getSelectQuery";
|
|
8
8
|
import { TableHandler } from "./TableHandler/TableHandler";
|
|
9
9
|
import { ViewHandler } from "./ViewHandler/ViewHandler";
|
|
10
|
+
import { NewQuery } from "./QueryBuilder/QueryBuilder";
|
|
10
11
|
|
|
11
|
-
export const find = async function(this: ViewHandler, filter?: Filter, selectParams?: SelectParams,
|
|
12
|
+
export const find = async function(this: ViewHandler, filter?: Filter, selectParams?: SelectParams, _?: undefined, tableRules?: TableRule, localParams?: LocalParams): Promise<any[]> {
|
|
12
13
|
try {
|
|
13
14
|
await this._log({ command: "find", localParams, data: { filter, selectParams } });
|
|
14
15
|
filter = filter || {};
|
|
15
|
-
const allowedReturnTypes
|
|
16
|
+
const allowedReturnTypes = Object.keys({ row: 1, statement: 1, value: 1, values: 1, "statement-no-rls": 1, "statement-where": 1 } satisfies Record<Required<SelectParams>["returnType"], 1>);
|
|
16
17
|
const { returnType } = selectParams || {};
|
|
17
18
|
if (returnType && !allowedReturnTypes.includes(returnType)) {
|
|
18
19
|
throw `returnType (${returnType}) can only be ${allowedReturnTypes.join(" OR ")}`
|
|
@@ -22,7 +23,10 @@ export const find = async function(this: ViewHandler, filter?: Filter, selectPar
|
|
|
22
23
|
|
|
23
24
|
if (testRule) return [];
|
|
24
25
|
if (selectParams) {
|
|
25
|
-
const good_params
|
|
26
|
+
const good_params = Object.keys({
|
|
27
|
+
"select": 1, "orderBy": 1, "offset": 1, "limit": 1, "returnType": 1, "groupBy": 1
|
|
28
|
+
} satisfies Record<keyof SelectParams, 1>);
|
|
29
|
+
|
|
26
30
|
const bad_params = Object.keys(selectParams).filter(k => !good_params.includes(k as any));
|
|
27
31
|
if (bad_params && bad_params.length) throw "Invalid params: " + bad_params.join(", ") + " \n Expecting: " + good_params.join(", ");
|
|
28
32
|
}
|
|
@@ -41,18 +45,18 @@ export const find = async function(this: ViewHandler, filter?: Filter, selectPar
|
|
|
41
45
|
|
|
42
46
|
const _selectParams = selectParams ?? {}
|
|
43
47
|
const selectParamsLimitCheck = localParams?.bypassLimit && !Number.isFinite(_selectParams.limit)? { ..._selectParams, limit: null } : { limit: 1000, ..._selectParams }
|
|
44
|
-
const
|
|
45
|
-
this
|
|
48
|
+
const newQuery = await getNewQuery(
|
|
49
|
+
this,
|
|
46
50
|
filter,
|
|
47
51
|
selectParamsLimitCheck,
|
|
48
|
-
|
|
52
|
+
_,
|
|
49
53
|
tableRules,
|
|
50
54
|
localParams,
|
|
51
55
|
);
|
|
52
56
|
|
|
53
57
|
const queryWithoutRLS = getSelectQuery(
|
|
54
58
|
this,
|
|
55
|
-
|
|
59
|
+
newQuery,
|
|
56
60
|
undefined,
|
|
57
61
|
!!selectParamsLimitCheck?.groupBy
|
|
58
62
|
);
|
|
@@ -69,15 +73,22 @@ export const find = async function(this: ViewHandler, filter?: Filter, selectPar
|
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
/** Used for subscribe */
|
|
72
|
-
if(localParams?.returnNewQuery) return (
|
|
76
|
+
if(localParams?.returnNewQuery) return (newQuery as unknown as any);
|
|
73
77
|
if (localParams?.returnQuery) {
|
|
74
78
|
if(localParams?.returnQuery === "where-condition"){
|
|
75
|
-
return
|
|
79
|
+
return newQuery.whereOpts.condition as any;
|
|
76
80
|
}
|
|
77
81
|
return ((localParams?.returnQuery === "noRLS"? queryWithoutRLS : queryWithRLS) as unknown as any[]);
|
|
78
82
|
}
|
|
79
83
|
|
|
80
|
-
return runQueryReturnType(
|
|
84
|
+
return runQueryReturnType({
|
|
85
|
+
queryWithoutRLS,
|
|
86
|
+
queryWithRLS,
|
|
87
|
+
returnType,
|
|
88
|
+
handler: this,
|
|
89
|
+
localParams,
|
|
90
|
+
newQuery,
|
|
91
|
+
});
|
|
81
92
|
|
|
82
93
|
} catch (e) {
|
|
83
94
|
if (localParams && localParams.testRule) throw e;
|
|
@@ -85,25 +96,44 @@ export const find = async function(this: ViewHandler, filter?: Filter, selectPar
|
|
|
85
96
|
}
|
|
86
97
|
}
|
|
87
98
|
|
|
99
|
+
type RunQueryReturnTypeArgs = {
|
|
100
|
+
queryWithRLS: string;
|
|
101
|
+
queryWithoutRLS: string;
|
|
102
|
+
returnType: SelectParams["returnType"];
|
|
103
|
+
handler: ViewHandler | TableHandler;
|
|
104
|
+
localParams: LocalParams | undefined;
|
|
105
|
+
newQuery: NewQuery | undefined;
|
|
106
|
+
};
|
|
88
107
|
|
|
89
|
-
export const runQueryReturnType = async (
|
|
108
|
+
export const runQueryReturnType = async ({ newQuery, handler, localParams, queryWithRLS, queryWithoutRLS, returnType,}: RunQueryReturnTypeArgs) => {
|
|
90
109
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
return query as unknown as any[];
|
|
110
|
+
const query = queryWithRLS;
|
|
111
|
+
const sqlTypes = ["statement", "statement-no-rls", "statement-where"];
|
|
112
|
+
if(!returnType || returnType === "values"){
|
|
96
113
|
|
|
97
|
-
} else if (["row", "value"].includes(returnType!)) {
|
|
98
|
-
return handler.dbHandler.oneOrNone(query).then(data => {
|
|
99
|
-
return (data && returnType === "value") ? Object.values(data)[0] : data;
|
|
100
|
-
}).catch(err => makeErrorFromPGError(err, localParams, this));
|
|
101
|
-
} else {
|
|
102
114
|
return handler.dbHandler.any(query).then(data => {
|
|
103
115
|
if (returnType === "values") {
|
|
104
116
|
return data.map(d => Object.values(d)[0]);
|
|
105
117
|
}
|
|
106
118
|
return data;
|
|
107
119
|
}).catch(err => makeErrorFromPGError(err, localParams, this));
|
|
120
|
+
|
|
121
|
+
} else if (sqlTypes.some(v => v === returnType)) {
|
|
122
|
+
if (!(await canRunSQL(handler.dboBuilder.prostgles, localParams))) {
|
|
123
|
+
throw `Not allowed: {returnType: ${JSON.stringify(returnType)}} requires execute sql privileges `
|
|
124
|
+
}
|
|
125
|
+
if(returnType === "statement-no-rls"){
|
|
126
|
+
return queryWithoutRLS as any;
|
|
127
|
+
}
|
|
128
|
+
if(returnType === "statement-where"){
|
|
129
|
+
if(!newQuery) throw `returnType ${returnType} not possible for this command type`;
|
|
130
|
+
return newQuery.whereOpts.condition as any;
|
|
131
|
+
}
|
|
132
|
+
return query as unknown as any[];
|
|
133
|
+
|
|
134
|
+
} else if (["row", "value"].includes(returnType)) {
|
|
135
|
+
return handler.dbHandler.oneOrNone(query).then(data => {
|
|
136
|
+
return (data && returnType === "value") ? Object.values(data)[0] : data;
|
|
137
|
+
}).catch(err => makeErrorFromPGError(err, localParams, this));
|
|
108
138
|
}
|
|
109
139
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prostgles-server",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.99",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"check-disk-space": "^3.3.1",
|
|
42
42
|
"file-type": "^17.1.4",
|
|
43
43
|
"pg-promise": "^11.3.0",
|
|
44
|
-
"prostgles-types": "^4.0.
|
|
44
|
+
"prostgles-types": "^4.0.44"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/bluebird": "^3.5.36",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@types/node": "^14.14.16",
|
|
13
|
-
"prostgles-client": "^4.0.
|
|
13
|
+
"prostgles-client": "^4.0.29",
|
|
14
14
|
"socket.io-client": "^4.7.1"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
@@ -74,11 +74,11 @@
|
|
|
74
74
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
|
75
75
|
},
|
|
76
76
|
"node_modules/prostgles-client": {
|
|
77
|
-
"version": "4.0.
|
|
78
|
-
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-4.0.
|
|
79
|
-
"integrity": "sha512-
|
|
77
|
+
"version": "4.0.29",
|
|
78
|
+
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-4.0.29.tgz",
|
|
79
|
+
"integrity": "sha512-tUgEMMus1n0H6mG5qBXG79FbQTFaI1owQH1S4mP6lx8B91uOB9dw1PQ8g0N8c9uV3IJ86I9yv6GebynMXcC0DQ==",
|
|
80
80
|
"dependencies": {
|
|
81
|
-
"prostgles-types": "^4.0.
|
|
81
|
+
"prostgles-types": "^4.0.44"
|
|
82
82
|
},
|
|
83
83
|
"peerDependencies": {
|
|
84
84
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
@@ -90,9 +90,9 @@
|
|
|
90
90
|
}
|
|
91
91
|
},
|
|
92
92
|
"node_modules/prostgles-types": {
|
|
93
|
-
"version": "4.0.
|
|
94
|
-
"resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-4.0.
|
|
95
|
-
"integrity": "sha512-
|
|
93
|
+
"version": "4.0.44",
|
|
94
|
+
"resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-4.0.44.tgz",
|
|
95
|
+
"integrity": "sha512-KBtHi7qLus6WfnC8C9RnvzvDN3KrpYpfhyohie5csEidKhYDTZdAcUjeAXuHua3hY+MLaZpIAtmHNiCLraLZlQ==",
|
|
96
96
|
"dependencies": {
|
|
97
97
|
"json-schema": "^0.4.0"
|
|
98
98
|
}
|
|
@@ -212,17 +212,17 @@
|
|
|
212
212
|
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
|
213
213
|
},
|
|
214
214
|
"prostgles-client": {
|
|
215
|
-
"version": "4.0.
|
|
216
|
-
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-4.0.
|
|
217
|
-
"integrity": "sha512-
|
|
215
|
+
"version": "4.0.29",
|
|
216
|
+
"resolved": "https://registry.npmjs.org/prostgles-client/-/prostgles-client-4.0.29.tgz",
|
|
217
|
+
"integrity": "sha512-tUgEMMus1n0H6mG5qBXG79FbQTFaI1owQH1S4mP6lx8B91uOB9dw1PQ8g0N8c9uV3IJ86I9yv6GebynMXcC0DQ==",
|
|
218
218
|
"requires": {
|
|
219
|
-
"prostgles-types": "^4.0.
|
|
219
|
+
"prostgles-types": "^4.0.44"
|
|
220
220
|
}
|
|
221
221
|
},
|
|
222
222
|
"prostgles-types": {
|
|
223
|
-
"version": "4.0.
|
|
224
|
-
"resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-4.0.
|
|
225
|
-
"integrity": "sha512-
|
|
223
|
+
"version": "4.0.44",
|
|
224
|
+
"resolved": "https://registry.npmjs.org/prostgles-types/-/prostgles-types-4.0.44.tgz",
|
|
225
|
+
"integrity": "sha512-KBtHi7qLus6WfnC8C9RnvzvDN3KrpYpfhyohie5csEidKhYDTZdAcUjeAXuHua3hY+MLaZpIAtmHNiCLraLZlQ==",
|
|
226
226
|
"requires": {
|
|
227
227
|
"json-schema": "^0.4.0"
|
|
228
228
|
}
|
|
@@ -201,6 +201,12 @@ export default async function isomorphic(db: Required<DBHandlerServer> | Require
|
|
|
201
201
|
);
|
|
202
202
|
});
|
|
203
203
|
|
|
204
|
+
await tryRun("returnType", async () => {
|
|
205
|
+
|
|
206
|
+
const whereStatement = await db.tr1.find!({ t1: "a" }, { returnType: "statement-where" });
|
|
207
|
+
|
|
208
|
+
assert.equal(whereStatement, `"t1" = 'a'`);
|
|
209
|
+
})
|
|
204
210
|
|
|
205
211
|
await tryRun("Table config triggers", async () => {
|
|
206
212
|
const tr1 = await db.tr1.insert!({ })
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"../..": {
|
|
23
23
|
"name": "prostgles-server",
|
|
24
|
-
"version": "4.1.
|
|
24
|
+
"version": "4.1.98",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@types/express": "^4.17.13",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"check-disk-space": "^3.3.1",
|
|
31
31
|
"file-type": "^17.1.4",
|
|
32
32
|
"pg-promise": "^11.3.0",
|
|
33
|
-
"prostgles-types": "^4.0.
|
|
33
|
+
"prostgles-types": "^4.0.44"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/bluebird": "^3.5.36",
|
|
@@ -1521,7 +1521,7 @@
|
|
|
1521
1521
|
"eslint": "^8.51.0",
|
|
1522
1522
|
"file-type": "^17.1.4",
|
|
1523
1523
|
"pg-promise": "^11.3.0",
|
|
1524
|
-
"prostgles-types": "^4.0.
|
|
1524
|
+
"prostgles-types": "^4.0.44",
|
|
1525
1525
|
"typescript": "^5.0.3"
|
|
1526
1526
|
}
|
|
1527
1527
|
},
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import { DBHandlerServer } from "../dist/DboBuilder";
|
|
2
|
-
import { strict as assert } from 'assert';
|
|
3
2
|
|
|
4
3
|
export default async function f(db: DBHandlerServer){
|
|
5
4
|
|
|
6
5
|
/** Self reference recursion bug */
|
|
7
6
|
await db.rec.findOne!({ id: 1 }, { select: { "*": 1, rec_ref: "*" } })
|
|
8
7
|
|
|
9
|
-
const whereStatement = await db.rec.find!({ id: 1 }, undefined, undefined, undefined, { returnQuery: "where-condition" });
|
|
10
|
-
|
|
11
|
-
assert.equal(whereStatement, `"id" = 1`);
|
|
12
|
-
|
|
13
8
|
/* Transaction example */
|
|
14
9
|
await db.tx!(async t => {
|
|
15
10
|
await t.items.insert!({ name: "tx_" });
|