prostgles-server 2.0.259 → 2.0.260
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/insert.d.ts.map +1 -1
- package/dist/DboBuilder/insert.js +13 -12
- package/dist/DboBuilder/insert.js.map +1 -1
- package/dist/DboBuilder/update.d.ts.map +1 -1
- package/dist/DboBuilder/update.js +8 -7
- package/dist/DboBuilder/update.js.map +1 -1
- package/lib/DboBuilder/insert.d.ts.map +1 -1
- package/lib/DboBuilder/insert.js +13 -12
- package/lib/DboBuilder/insert.ts +13 -12
- package/lib/DboBuilder/update.d.ts.map +1 -1
- package/lib/DboBuilder/update.js +8 -7
- package/lib/DboBuilder/update.ts +8 -7
- package/package.json +1 -1
- package/tests/client/PID.txt +1 -1
- package/tests/server/package-lock.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/insert.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAqC,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAA+B,WAAW,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACjH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,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,
|
|
1
|
+
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/insert.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAqC,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAA+B,WAAW,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACjH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,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,CA2K1N"}
|
|
@@ -6,23 +6,24 @@ const DboBuilder_1 = require("../DboBuilder");
|
|
|
6
6
|
const PubSubManager_1 = require("../PubSubManager");
|
|
7
7
|
async function insert(rowOrRows, param2, param3_unused, tableRules, localParams) {
|
|
8
8
|
// const localParams = _localParams || {};
|
|
9
|
+
const ACTION = "insert";
|
|
9
10
|
try {
|
|
10
11
|
const { onConflictDoNothing, fixIssues = false } = param2 || {};
|
|
11
12
|
const { testRule = false, returnQuery = false } = localParams || {};
|
|
12
13
|
let { returning } = param2 || {};
|
|
13
14
|
const finalDBtx = localParams?.tx?.dbTX || this.dbTX;
|
|
14
|
-
if (tableRules?.
|
|
15
|
+
if (tableRules?.[ACTION]?.postValidate) {
|
|
15
16
|
if (!finalDBtx) {
|
|
16
|
-
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.
|
|
17
|
+
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.[ACTION]?.(rowOrRows, param2, param3_unused, tableRules, localParams));
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
let returningFields, forcedData, fields;
|
|
20
21
|
if (tableRules) {
|
|
21
|
-
if (!tableRules
|
|
22
|
+
if (!tableRules[ACTION])
|
|
22
23
|
throw "insert rules missing for " + this.name;
|
|
23
|
-
returningFields = tableRules.
|
|
24
|
-
forcedData = tableRules.
|
|
25
|
-
fields = tableRules.
|
|
24
|
+
returningFields = tableRules[ACTION].returningFields;
|
|
25
|
+
forcedData = tableRules[ACTION].forcedData;
|
|
26
|
+
fields = tableRules[ACTION].fields;
|
|
26
27
|
/* If no returning fields specified then take select fields as returning */
|
|
27
28
|
if (!returningFields)
|
|
28
29
|
returningFields = (0, prostgles_types_1.get)(tableRules, "select.fields") || (0, prostgles_types_1.get)(tableRules, "insert.fields");
|
|
@@ -64,7 +65,7 @@ async function insert(rowOrRows, param2, param3_unused, tableRules, localParams)
|
|
|
64
65
|
let fullReturning = await this.prepareReturning(returning, this.parseFieldFilter("*"));
|
|
65
66
|
/** Used for postValidate. Add any missing computed returning from original query */
|
|
66
67
|
fullReturning.concat(originalReturning.filter(s => !fullReturning.some(f => f.alias === s.alias)));
|
|
67
|
-
const finalSelect = tableRules?.
|
|
68
|
+
const finalSelect = tableRules?.[ACTION]?.postValidate ? fullReturning : originalReturning;
|
|
68
69
|
let returningSelect = this.makeReturnQuery(finalSelect);
|
|
69
70
|
const makeQuery = async (_row, isOne = false) => {
|
|
70
71
|
let row = { ..._row };
|
|
@@ -76,11 +77,11 @@ async function insert(rowOrRows, param2, param3_unused, tableRules, localParams)
|
|
|
76
77
|
let _data = { ...data };
|
|
77
78
|
let insertQ = "";
|
|
78
79
|
if (!Array.isArray(_data) && !(0, prostgles_types_1.getKeys)(_data).length || Array.isArray(_data) && !_data.length) {
|
|
79
|
-
await tableRules?.
|
|
80
|
+
await tableRules?.[ACTION]?.validate?.(_data, this.dbTX || this.dboBuilder.dbo);
|
|
80
81
|
insertQ = `INSERT INTO ${(0, prostgles_types_1.asName)(this.name)} DEFAULT VALUES `;
|
|
81
82
|
}
|
|
82
83
|
else {
|
|
83
|
-
insertQ = await this.colSet.getInsertQuery(_data, allowedCols, this.dbTX || this.dboBuilder.dbo, tableRules?.
|
|
84
|
+
insertQ = await this.colSet.getInsertQuery(_data, allowedCols, this.dbTX || this.dboBuilder.dbo, tableRules?.[ACTION]?.validate); // pgp.helpers.insert(_data, columnSet);
|
|
84
85
|
}
|
|
85
86
|
return insertQ + conflict_query + returningSelect;
|
|
86
87
|
};
|
|
@@ -123,12 +124,12 @@ async function insert(rowOrRows, param2, param3_unused, tableRules, localParams)
|
|
|
123
124
|
else {
|
|
124
125
|
result = await this.db.tx(t => t[queryType](query)).catch(err => (0, DboBuilder_1.makeErr)(err, localParams, this, allowedFieldKeys));
|
|
125
126
|
}
|
|
126
|
-
if (tableRules?.
|
|
127
|
+
if (tableRules?.[ACTION]?.postValidate) {
|
|
127
128
|
if (!finalDBtx)
|
|
128
129
|
throw new Error("Unexpected: no dbTX for postValidate");
|
|
129
130
|
const rows = Array.isArray(result) ? result : [result];
|
|
130
131
|
for await (const row of rows) {
|
|
131
|
-
await tableRules?.
|
|
132
|
+
await tableRules?.[ACTION]?.postValidate(row ?? {}, finalDBtx);
|
|
132
133
|
}
|
|
133
134
|
/* We used a full returning for postValidate. Now we must filter out dissallowed columns */
|
|
134
135
|
if (returning) {
|
|
@@ -150,7 +151,7 @@ async function insert(rowOrRows, param2, param3_unused, tableRules, localParams)
|
|
|
150
151
|
// ${JSON.stringify(param2 || {}, null, 2)}
|
|
151
152
|
throw {
|
|
152
153
|
err: (0, DboBuilder_1.isPlainObject)(e) && e.err ? e.err : (0, DboBuilder_1.parseError)(e),
|
|
153
|
-
msg: (0, DboBuilder_1.isPlainObject)(e) && e.msg ? e.msg : `Issue with dbo.${this.name}
|
|
154
|
+
msg: (0, DboBuilder_1.isPlainObject)(e) && e.msg ? e.msg : `Issue with dbo.${this.name}.${ACTION}(...)`,
|
|
154
155
|
};
|
|
155
156
|
}
|
|
156
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../../lib/DboBuilder/insert.ts"],"names":[],"mappings":";;;AACA,qDAAuG;AACvG,8CAAiH;AAEjH,oDAAsD;AAE/C,KAAK,UAAU,MAAM,CAAqB,SAAoC,EAAE,MAAqB,EAAE,aAAyB,EAAE,UAAsB,EAAE,WAAyB;IACxL,0CAA0C;IAE1C,IAAI;QAEF,MAAM,EAAE,mBAAmB,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QAChE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,WAAW,IAAI,EAAE,CAAC;QAEpE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,WAAW,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACrD,IAAG,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE;
|
|
1
|
+
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../../lib/DboBuilder/insert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkC,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAiB,WAAW,EAA8B,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAe,MAAM,kBAAkB,CAAC;AAI1D,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../lib/DboBuilder/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkC,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAiB,WAAW,EAA8B,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAe,MAAM,kBAAkB,CAAC;AAI1D,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA+JzL"}
|
|
@@ -6,12 +6,13 @@ const DboBuilder_1 = require("../DboBuilder");
|
|
|
6
6
|
const PubSubManager_1 = require("../PubSubManager");
|
|
7
7
|
const uploadFile_1 = require("./uploadFile");
|
|
8
8
|
async function update(filter, _newData, params, tableRules, localParams) {
|
|
9
|
+
const ACTION = "update";
|
|
9
10
|
try {
|
|
10
11
|
/** postValidate */
|
|
11
12
|
const finalDBtx = localParams?.tx?.dbTX || this.dbTX;
|
|
12
|
-
if (tableRules?.
|
|
13
|
+
if (tableRules?.[ACTION]?.postValidate) {
|
|
13
14
|
if (!finalDBtx) {
|
|
14
|
-
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.
|
|
15
|
+
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.[ACTION]?.(filter, _newData, params, tableRules, localParams));
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
let newData = _newData;
|
|
@@ -27,8 +28,8 @@ async function update(filter, _newData, params, tableRules, localParams) {
|
|
|
27
28
|
const fileManager = this.dboBuilder.prostgles.fileManager;
|
|
28
29
|
if (!fileManager)
|
|
29
30
|
throw new Error("fileManager missing");
|
|
30
|
-
const validate = tableRules?.
|
|
31
|
-
return tableRules?.
|
|
31
|
+
const validate = tableRules?.[ACTION]?.validate ? async (row) => {
|
|
32
|
+
return tableRules?.[ACTION]?.validate({ update: row, filter }, this.dbTX || this.dboBuilder.dbo);
|
|
32
33
|
} : undefined;
|
|
33
34
|
let existingFile = await (localParams?.tx?.dbTX?.[this.name] || this).findOne({ id: existingMediaId });
|
|
34
35
|
if (!existingFile?.name)
|
|
@@ -115,12 +116,12 @@ async function update(filter, _newData, params, tableRules, localParams) {
|
|
|
115
116
|
/** TODO: Delete old file at the end in case new file update fails */
|
|
116
117
|
// await oldFileDelete();
|
|
117
118
|
/** postValidate */
|
|
118
|
-
if (tableRules?.
|
|
119
|
+
if (tableRules?.[ACTION]?.postValidate) {
|
|
119
120
|
if (!finalDBtx)
|
|
120
121
|
throw new Error("Unexpected: no dbTX for postValidate");
|
|
121
122
|
const rows = Array.isArray(result) ? result : [result];
|
|
122
123
|
for await (const row of rows) {
|
|
123
|
-
await tableRules?.
|
|
124
|
+
await tableRules?.[ACTION]?.postValidate(row ?? {}, finalDBtx);
|
|
124
125
|
}
|
|
125
126
|
/* We used a full returning for postValidate. Now we must filter out dissallowed columns */
|
|
126
127
|
if (returningSelect) {
|
|
@@ -138,7 +139,7 @@ async function update(filter, _newData, params, tableRules, localParams) {
|
|
|
138
139
|
catch (e) {
|
|
139
140
|
if (localParams && localParams.testRule)
|
|
140
141
|
throw e;
|
|
141
|
-
throw { err: (0, DboBuilder_1.parseError)(e), msg: `Issue with dbo.${this.name}
|
|
142
|
+
throw { err: (0, DboBuilder_1.parseError)(e), msg: `Issue with dbo.${this.name}.${ACTION}(${JSON.stringify(filter || {}, null, 2)}, ${Array.isArray(_newData) ? "...DATA[]" : "...DATA"}, ${JSON.stringify(params || {}, null, 2)})` };
|
|
142
143
|
}
|
|
143
144
|
}
|
|
144
145
|
exports.update = update;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../lib/DboBuilder/update.ts"],"names":[],"mappings":";;;AAAA,qDAA0F;AAC1F,8CAA6G;AAE7G,oDAAsD;AACtD,6CAAiD;AAE1C,KAAK,UAAU,MAAM,CAAqB,MAAc,EAAE,QAAmB,EAAE,MAAqB,EAAE,UAAsB,EAAE,WAAyB;IAC5J,IAAI;QAEF,mBAAmB;QACnB,MAAM,SAAS,GAAG,WAAW,EAAE,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACrD,IAAG,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../lib/DboBuilder/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["insert.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAqC,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAA+B,WAAW,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACjH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,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,
|
|
1
|
+
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["insert.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAqC,YAAY,EAAY,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAA+B,WAAW,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACjH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,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,CA2K1N"}
|
package/lib/DboBuilder/insert.js
CHANGED
|
@@ -6,23 +6,24 @@ const DboBuilder_1 = require("../DboBuilder");
|
|
|
6
6
|
const PubSubManager_1 = require("../PubSubManager");
|
|
7
7
|
async function insert(rowOrRows, param2, param3_unused, tableRules, localParams) {
|
|
8
8
|
// const localParams = _localParams || {};
|
|
9
|
+
const ACTION = "insert";
|
|
9
10
|
try {
|
|
10
11
|
const { onConflictDoNothing, fixIssues = false } = param2 || {};
|
|
11
12
|
const { testRule = false, returnQuery = false } = localParams || {};
|
|
12
13
|
let { returning } = param2 || {};
|
|
13
14
|
const finalDBtx = localParams?.tx?.dbTX || this.dbTX;
|
|
14
|
-
if (tableRules?.
|
|
15
|
+
if (tableRules?.[ACTION]?.postValidate) {
|
|
15
16
|
if (!finalDBtx) {
|
|
16
|
-
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.
|
|
17
|
+
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.[ACTION]?.(rowOrRows, param2, param3_unused, tableRules, localParams));
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
let returningFields, forcedData, fields;
|
|
20
21
|
if (tableRules) {
|
|
21
|
-
if (!tableRules
|
|
22
|
+
if (!tableRules[ACTION])
|
|
22
23
|
throw "insert rules missing for " + this.name;
|
|
23
|
-
returningFields = tableRules.
|
|
24
|
-
forcedData = tableRules.
|
|
25
|
-
fields = tableRules.
|
|
24
|
+
returningFields = tableRules[ACTION].returningFields;
|
|
25
|
+
forcedData = tableRules[ACTION].forcedData;
|
|
26
|
+
fields = tableRules[ACTION].fields;
|
|
26
27
|
/* If no returning fields specified then take select fields as returning */
|
|
27
28
|
if (!returningFields)
|
|
28
29
|
returningFields = (0, prostgles_types_1.get)(tableRules, "select.fields") || (0, prostgles_types_1.get)(tableRules, "insert.fields");
|
|
@@ -64,7 +65,7 @@ async function insert(rowOrRows, param2, param3_unused, tableRules, localParams)
|
|
|
64
65
|
let fullReturning = await this.prepareReturning(returning, this.parseFieldFilter("*"));
|
|
65
66
|
/** Used for postValidate. Add any missing computed returning from original query */
|
|
66
67
|
fullReturning.concat(originalReturning.filter(s => !fullReturning.some(f => f.alias === s.alias)));
|
|
67
|
-
const finalSelect = tableRules?.
|
|
68
|
+
const finalSelect = tableRules?.[ACTION]?.postValidate ? fullReturning : originalReturning;
|
|
68
69
|
let returningSelect = this.makeReturnQuery(finalSelect);
|
|
69
70
|
const makeQuery = async (_row, isOne = false) => {
|
|
70
71
|
let row = { ..._row };
|
|
@@ -76,11 +77,11 @@ async function insert(rowOrRows, param2, param3_unused, tableRules, localParams)
|
|
|
76
77
|
let _data = { ...data };
|
|
77
78
|
let insertQ = "";
|
|
78
79
|
if (!Array.isArray(_data) && !(0, prostgles_types_1.getKeys)(_data).length || Array.isArray(_data) && !_data.length) {
|
|
79
|
-
await tableRules?.
|
|
80
|
+
await tableRules?.[ACTION]?.validate?.(_data, this.dbTX || this.dboBuilder.dbo);
|
|
80
81
|
insertQ = `INSERT INTO ${(0, prostgles_types_1.asName)(this.name)} DEFAULT VALUES `;
|
|
81
82
|
}
|
|
82
83
|
else {
|
|
83
|
-
insertQ = await this.colSet.getInsertQuery(_data, allowedCols, this.dbTX || this.dboBuilder.dbo, tableRules?.
|
|
84
|
+
insertQ = await this.colSet.getInsertQuery(_data, allowedCols, this.dbTX || this.dboBuilder.dbo, tableRules?.[ACTION]?.validate); // pgp.helpers.insert(_data, columnSet);
|
|
84
85
|
}
|
|
85
86
|
return insertQ + conflict_query + returningSelect;
|
|
86
87
|
};
|
|
@@ -123,12 +124,12 @@ async function insert(rowOrRows, param2, param3_unused, tableRules, localParams)
|
|
|
123
124
|
else {
|
|
124
125
|
result = await this.db.tx(t => t[queryType](query)).catch(err => (0, DboBuilder_1.makeErr)(err, localParams, this, allowedFieldKeys));
|
|
125
126
|
}
|
|
126
|
-
if (tableRules?.
|
|
127
|
+
if (tableRules?.[ACTION]?.postValidate) {
|
|
127
128
|
if (!finalDBtx)
|
|
128
129
|
throw new Error("Unexpected: no dbTX for postValidate");
|
|
129
130
|
const rows = Array.isArray(result) ? result : [result];
|
|
130
131
|
for await (const row of rows) {
|
|
131
|
-
await tableRules?.
|
|
132
|
+
await tableRules?.[ACTION]?.postValidate(row ?? {}, finalDBtx);
|
|
132
133
|
}
|
|
133
134
|
/* We used a full returning for postValidate. Now we must filter out dissallowed columns */
|
|
134
135
|
if (returning) {
|
|
@@ -150,7 +151,7 @@ async function insert(rowOrRows, param2, param3_unused, tableRules, localParams)
|
|
|
150
151
|
// ${JSON.stringify(param2 || {}, null, 2)}
|
|
151
152
|
throw {
|
|
152
153
|
err: (0, DboBuilder_1.isPlainObject)(e) && e.err ? e.err : (0, DboBuilder_1.parseError)(e),
|
|
153
|
-
msg: (0, DboBuilder_1.isPlainObject)(e) && e.msg ? e.msg : `Issue with dbo.${this.name}
|
|
154
|
+
msg: (0, DboBuilder_1.isPlainObject)(e) && e.msg ? e.msg : `Issue with dbo.${this.name}.${ACTION}(...)`,
|
|
154
155
|
};
|
|
155
156
|
}
|
|
156
157
|
}
|
package/lib/DboBuilder/insert.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { omitKeys, pickKeys } from "../PubSubManager";
|
|
|
7
7
|
export async function insert(this: TableHandler, rowOrRows: (AnyObject | AnyObject[]), param2?: InsertParams, param3_unused?: undefined, tableRules?: TableRule, localParams?: LocalParams): Promise<any | any[] | boolean> {
|
|
8
8
|
// const localParams = _localParams || {};
|
|
9
9
|
|
|
10
|
+
const ACTION = "insert";
|
|
10
11
|
try {
|
|
11
12
|
|
|
12
13
|
const { onConflictDoNothing, fixIssues = false } = param2 || {};
|
|
@@ -14,9 +15,9 @@ export async function insert(this: TableHandler, rowOrRows: (AnyObject | AnyObje
|
|
|
14
15
|
|
|
15
16
|
let { returning } = param2 || {};
|
|
16
17
|
const finalDBtx = localParams?.tx?.dbTX || this.dbTX;
|
|
17
|
-
if(tableRules?.
|
|
18
|
+
if(tableRules?.[ACTION]?.postValidate ){
|
|
18
19
|
if(!finalDBtx){
|
|
19
|
-
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.
|
|
20
|
+
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.[ACTION]?.(rowOrRows, param2, param3_unused, tableRules, localParams))
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
|
|
@@ -25,10 +26,10 @@ export async function insert(this: TableHandler, rowOrRows: (AnyObject | AnyObje
|
|
|
25
26
|
fields: FieldFilter | undefined;
|
|
26
27
|
|
|
27
28
|
if (tableRules) {
|
|
28
|
-
if (!tableRules
|
|
29
|
-
returningFields = tableRules.
|
|
30
|
-
forcedData = tableRules.
|
|
31
|
-
fields = tableRules.
|
|
29
|
+
if (!tableRules[ACTION]) throw "insert rules missing for " + this.name;
|
|
30
|
+
returningFields = tableRules[ACTION].returningFields;
|
|
31
|
+
forcedData = tableRules[ACTION].forcedData;
|
|
32
|
+
fields = tableRules[ACTION].fields;
|
|
32
33
|
|
|
33
34
|
/* If no returning fields specified then take select fields as returning */
|
|
34
35
|
if (!returningFields) returningFields = get(tableRules, "select.fields") || get(tableRules, "insert.fields");
|
|
@@ -77,7 +78,7 @@ export async function insert(this: TableHandler, rowOrRows: (AnyObject | AnyObje
|
|
|
77
78
|
/** Used for postValidate. Add any missing computed returning from original query */
|
|
78
79
|
fullReturning.concat(originalReturning.filter(s => !fullReturning.some(f => f.alias === s.alias)));
|
|
79
80
|
|
|
80
|
-
const finalSelect = tableRules?.
|
|
81
|
+
const finalSelect = tableRules?.[ACTION]?.postValidate? fullReturning : originalReturning;
|
|
81
82
|
let returningSelect = this.makeReturnQuery(finalSelect);
|
|
82
83
|
|
|
83
84
|
const makeQuery = async (_row: AnyObject | undefined, isOne = false) => {
|
|
@@ -93,10 +94,10 @@ export async function insert(this: TableHandler, rowOrRows: (AnyObject | AnyObje
|
|
|
93
94
|
|
|
94
95
|
let insertQ = "";
|
|
95
96
|
if (!Array.isArray(_data) && !getKeys(_data).length || Array.isArray(_data) && !_data.length) {
|
|
96
|
-
await tableRules?.
|
|
97
|
+
await tableRules?.[ACTION]?.validate?.(_data, this.dbTX || this.dboBuilder.dbo);
|
|
97
98
|
insertQ = `INSERT INTO ${asName(this.name)} DEFAULT VALUES `;
|
|
98
99
|
} else {
|
|
99
|
-
insertQ = await this.colSet.getInsertQuery(_data, allowedCols, this.dbTX || this.dboBuilder.dbo, tableRules?.
|
|
100
|
+
insertQ = await this.colSet.getInsertQuery(_data, allowedCols, this.dbTX || this.dboBuilder.dbo, tableRules?.[ACTION]?.validate) // pgp.helpers.insert(_data, columnSet);
|
|
100
101
|
}
|
|
101
102
|
return insertQ + conflict_query + returningSelect;
|
|
102
103
|
};
|
|
@@ -143,11 +144,11 @@ export async function insert(this: TableHandler, rowOrRows: (AnyObject | AnyObje
|
|
|
143
144
|
result = await this.db.tx(t => (t as any)[queryType](query)).catch(err => makeErr(err, localParams, this, allowedFieldKeys));
|
|
144
145
|
}
|
|
145
146
|
|
|
146
|
-
if(tableRules?.
|
|
147
|
+
if(tableRules?.[ACTION]?.postValidate){
|
|
147
148
|
if(!finalDBtx) throw new Error("Unexpected: no dbTX for postValidate");
|
|
148
149
|
const rows = Array.isArray(result)? result : [result];
|
|
149
150
|
for await (const row of rows){
|
|
150
|
-
await tableRules?.
|
|
151
|
+
await tableRules?.[ACTION]?.postValidate(row ?? {}, finalDBtx)
|
|
151
152
|
}
|
|
152
153
|
|
|
153
154
|
/* We used a full returning for postValidate. Now we must filter out dissallowed columns */
|
|
@@ -171,7 +172,7 @@ export async function insert(this: TableHandler, rowOrRows: (AnyObject | AnyObje
|
|
|
171
172
|
// ${JSON.stringify(param2 || {}, null, 2)}
|
|
172
173
|
throw {
|
|
173
174
|
err: isPlainObject(e) && e.err? e.err : parseError(e),
|
|
174
|
-
msg: isPlainObject(e) && e.msg? e.msg : `Issue with dbo.${this.name}
|
|
175
|
+
msg: isPlainObject(e) && e.msg? e.msg : `Issue with dbo.${this.name}.${ACTION}(...)`,
|
|
175
176
|
};
|
|
176
177
|
}
|
|
177
178
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkC,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAiB,WAAW,EAA8B,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAe,MAAM,kBAAkB,CAAC;AAI1D,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkC,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAiB,WAAW,EAA8B,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAe,MAAM,kBAAkB,CAAC;AAI1D,wBAAsB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA+JzL"}
|
package/lib/DboBuilder/update.js
CHANGED
|
@@ -6,12 +6,13 @@ const DboBuilder_1 = require("../DboBuilder");
|
|
|
6
6
|
const PubSubManager_1 = require("../PubSubManager");
|
|
7
7
|
const uploadFile_1 = require("./uploadFile");
|
|
8
8
|
async function update(filter, _newData, params, tableRules, localParams) {
|
|
9
|
+
const ACTION = "update";
|
|
9
10
|
try {
|
|
10
11
|
/** postValidate */
|
|
11
12
|
const finalDBtx = localParams?.tx?.dbTX || this.dbTX;
|
|
12
|
-
if (tableRules?.
|
|
13
|
+
if (tableRules?.[ACTION]?.postValidate) {
|
|
13
14
|
if (!finalDBtx) {
|
|
14
|
-
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.
|
|
15
|
+
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.[ACTION]?.(filter, _newData, params, tableRules, localParams));
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
let newData = _newData;
|
|
@@ -27,8 +28,8 @@ async function update(filter, _newData, params, tableRules, localParams) {
|
|
|
27
28
|
const fileManager = this.dboBuilder.prostgles.fileManager;
|
|
28
29
|
if (!fileManager)
|
|
29
30
|
throw new Error("fileManager missing");
|
|
30
|
-
const validate = tableRules?.
|
|
31
|
-
return tableRules?.
|
|
31
|
+
const validate = tableRules?.[ACTION]?.validate ? async (row) => {
|
|
32
|
+
return tableRules?.[ACTION]?.validate({ update: row, filter }, this.dbTX || this.dboBuilder.dbo);
|
|
32
33
|
} : undefined;
|
|
33
34
|
let existingFile = await (localParams?.tx?.dbTX?.[this.name] || this).findOne({ id: existingMediaId });
|
|
34
35
|
if (!existingFile?.name)
|
|
@@ -115,12 +116,12 @@ async function update(filter, _newData, params, tableRules, localParams) {
|
|
|
115
116
|
/** TODO: Delete old file at the end in case new file update fails */
|
|
116
117
|
// await oldFileDelete();
|
|
117
118
|
/** postValidate */
|
|
118
|
-
if (tableRules?.
|
|
119
|
+
if (tableRules?.[ACTION]?.postValidate) {
|
|
119
120
|
if (!finalDBtx)
|
|
120
121
|
throw new Error("Unexpected: no dbTX for postValidate");
|
|
121
122
|
const rows = Array.isArray(result) ? result : [result];
|
|
122
123
|
for await (const row of rows) {
|
|
123
|
-
await tableRules?.
|
|
124
|
+
await tableRules?.[ACTION]?.postValidate(row ?? {}, finalDBtx);
|
|
124
125
|
}
|
|
125
126
|
/* We used a full returning for postValidate. Now we must filter out dissallowed columns */
|
|
126
127
|
if (returningSelect) {
|
|
@@ -138,7 +139,7 @@ async function update(filter, _newData, params, tableRules, localParams) {
|
|
|
138
139
|
catch (e) {
|
|
139
140
|
if (localParams && localParams.testRule)
|
|
140
141
|
throw e;
|
|
141
|
-
throw { err: (0, DboBuilder_1.parseError)(e), msg: `Issue with dbo.${this.name}
|
|
142
|
+
throw { err: (0, DboBuilder_1.parseError)(e), msg: `Issue with dbo.${this.name}.${ACTION}(${JSON.stringify(filter || {}, null, 2)}, ${Array.isArray(_newData) ? "...DATA[]" : "...DATA"}, ${JSON.stringify(params || {}, null, 2)})` };
|
|
142
143
|
}
|
|
143
144
|
}
|
|
144
145
|
exports.update = update;
|
package/lib/DboBuilder/update.ts
CHANGED
|
@@ -5,13 +5,14 @@ import { omitKeys, pickKeys } from "../PubSubManager";
|
|
|
5
5
|
import { isFile, uploadFile } from "./uploadFile"
|
|
6
6
|
|
|
7
7
|
export async function update(this: TableHandler, filter: Filter, _newData: AnyObject, params?: UpdateParams, tableRules?: TableRule, localParams?: LocalParams): Promise<AnyObject | void> {
|
|
8
|
+
const ACTION = "update";
|
|
8
9
|
try {
|
|
9
10
|
|
|
10
11
|
/** postValidate */
|
|
11
12
|
const finalDBtx = localParams?.tx?.dbTX || this.dbTX;
|
|
12
|
-
if(tableRules?.
|
|
13
|
+
if(tableRules?.[ACTION]?.postValidate ){
|
|
13
14
|
if(!finalDBtx){
|
|
14
|
-
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.
|
|
15
|
+
return this.dboBuilder.getTX(_dbtx => _dbtx[this.name]?.[ACTION]?.(filter, _newData, params, tableRules, localParams))
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
18
|
|
|
@@ -26,8 +27,8 @@ export async function update(this: TableHandler, filter: Filter, _newData: AnyOb
|
|
|
26
27
|
} else {
|
|
27
28
|
const fileManager = this.dboBuilder.prostgles.fileManager
|
|
28
29
|
if(!fileManager) throw new Error("fileManager missing");
|
|
29
|
-
const validate: ValidateRow | undefined = tableRules?.
|
|
30
|
-
return tableRules?.
|
|
30
|
+
const validate: ValidateRow | undefined = tableRules?.[ACTION]?.validate? async (row) => {
|
|
31
|
+
return tableRules?.[ACTION]?.validate!({ update: row, filter }, this.dbTX || this.dboBuilder.dbo)
|
|
31
32
|
} : undefined;
|
|
32
33
|
|
|
33
34
|
let existingFile: Media | undefined = await (localParams?.tx?.dbTX?.[this.name] as TableHandler || this).findOne({ id: existingMediaId });
|
|
@@ -136,11 +137,11 @@ export async function update(this: TableHandler, filter: Filter, _newData: AnyOb
|
|
|
136
137
|
// await oldFileDelete();
|
|
137
138
|
|
|
138
139
|
/** postValidate */
|
|
139
|
-
if(tableRules?.
|
|
140
|
+
if(tableRules?.[ACTION]?.postValidate){
|
|
140
141
|
if(!finalDBtx) throw new Error("Unexpected: no dbTX for postValidate");
|
|
141
142
|
const rows = Array.isArray(result)? result : [result];
|
|
142
143
|
for await (const row of rows){
|
|
143
|
-
await tableRules?.
|
|
144
|
+
await tableRules?.[ACTION]?.postValidate(row ?? {}, finalDBtx)
|
|
144
145
|
}
|
|
145
146
|
|
|
146
147
|
/* We used a full returning for postValidate. Now we must filter out dissallowed columns */
|
|
@@ -160,6 +161,6 @@ export async function update(this: TableHandler, filter: Filter, _newData: AnyOb
|
|
|
160
161
|
|
|
161
162
|
} catch (e) {
|
|
162
163
|
if (localParams && localParams.testRule) throw e;
|
|
163
|
-
throw { err: parseError(e), msg: `Issue with dbo.${this.name}
|
|
164
|
+
throw { err: parseError(e), msg: `Issue with dbo.${this.name}.${ACTION}(${JSON.stringify(filter || {}, null, 2)}, ${Array.isArray(_newData)? "...DATA[]": "...DATA"}, ${JSON.stringify(params || {}, null, 2)})` };
|
|
164
165
|
}
|
|
165
166
|
};
|
package/package.json
CHANGED
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
27795
|