@saltcorn/data 1.5.0-beta.9 → 1.5.0-rc.1
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/base-plugin/actions.d.ts +221 -145
- package/dist/base-plugin/actions.d.ts.map +1 -1
- package/dist/base-plugin/actions.js +80 -12
- package/dist/base-plugin/actions.js.map +1 -1
- package/dist/base-plugin/fileviews.d.ts +3 -3
- package/dist/base-plugin/fileviews.js +20 -9
- package/dist/base-plugin/fileviews.js.map +1 -1
- package/dist/base-plugin/index.d.ts +2 -2
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/types.js +8 -5
- package/dist/base-plugin/types.js.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts +6 -2
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.js +17 -341
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/filter.js +9 -3
- package/dist/base-plugin/viewtemplates/filter.js.map +1 -1
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +1 -0
- package/dist/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts +16 -0
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +340 -3
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
- package/dist/base-plugin/viewtemplates/workflow-room.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/workflow-room.js +1 -1
- package/dist/base-plugin/viewtemplates/workflow-room.js.map +1 -1
- package/dist/db/connect.d.ts.map +1 -1
- package/dist/db/connect.js +4 -1
- package/dist/db/connect.js.map +1 -1
- package/dist/db/state.d.ts +11 -7
- package/dist/db/state.d.ts.map +1 -1
- package/dist/db/state.js +78 -12
- package/dist/db/state.js.map +1 -1
- package/dist/mobile-mocks/npm/dockerode.d.ts +1 -0
- package/dist/mobile-mocks/npm/dockerode.d.ts.map +1 -0
- package/dist/mobile-mocks/npm/dockerode.js +2 -0
- package/dist/mobile-mocks/npm/dockerode.js.map +1 -0
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +55 -12
- package/dist/models/config.js.map +1 -1
- package/dist/models/email.js.map +1 -1
- package/dist/models/expression.d.ts.map +1 -1
- package/dist/models/expression.js +29 -0
- package/dist/models/expression.js.map +1 -1
- package/dist/models/field.d.ts +5 -3
- package/dist/models/field.d.ts.map +1 -1
- package/dist/models/field.js +8 -2
- package/dist/models/field.js.map +1 -1
- package/dist/models/file.d.ts +18 -1
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/file.js +361 -43
- package/dist/models/file.js.map +1 -1
- package/dist/models/form.d.ts.map +1 -1
- package/dist/models/form.js.map +1 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/internal/push_message_helper.d.ts +42 -12
- package/dist/models/internal/push_message_helper.d.ts.map +1 -1
- package/dist/models/internal/push_message_helper.js +117 -50
- package/dist/models/internal/push_message_helper.js.map +1 -1
- package/dist/models/internal/s3_helpers.d.ts +54 -0
- package/dist/models/internal/s3_helpers.d.ts.map +1 -0
- package/dist/models/internal/s3_helpers.js +561 -0
- package/dist/models/internal/s3_helpers.js.map +1 -0
- package/dist/models/model.d.ts +1 -1
- package/dist/models/model.d.ts.map +1 -1
- package/dist/models/model.js.map +1 -1
- package/dist/models/notification.d.ts.map +1 -1
- package/dist/models/notification.js +2 -5
- package/dist/models/notification.js.map +1 -1
- package/dist/models/page.d.ts +1 -0
- package/dist/models/page.d.ts.map +1 -1
- package/dist/models/page.js +27 -24
- package/dist/models/page.js.map +1 -1
- package/dist/models/plugin.d.ts +11 -3
- package/dist/models/plugin.d.ts.map +1 -1
- package/dist/models/plugin.js +51 -12
- package/dist/models/plugin.js.map +1 -1
- package/dist/models/s3_helpers.d.ts +54 -0
- package/dist/models/s3_helpers.d.ts.map +1 -0
- package/dist/models/s3_helpers.js +505 -0
- package/dist/models/s3_helpers.js.map +1 -0
- package/dist/models/scheduler.d.ts.map +1 -1
- package/dist/models/scheduler.js +4 -1
- package/dist/models/scheduler.js.map +1 -1
- package/dist/models/table.d.ts +8 -3
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +121 -32
- package/dist/models/table.js.map +1 -1
- package/dist/models/user.d.ts +4 -4
- package/dist/models/user.d.ts.map +1 -1
- package/dist/models/user.js.map +1 -1
- package/dist/models/view.js +1 -1
- package/dist/models/view.js.map +1 -1
- package/dist/models/workflow_run.d.ts +1 -1
- package/dist/models/workflow_run.d.ts.map +1 -1
- package/dist/models/workflow_run.js +8 -2
- package/dist/models/workflow_run.js.map +1 -1
- package/dist/models/workflow_step.js +1 -1
- package/dist/models/workflow_step.js.map +1 -1
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +139 -15
- package/dist/plugin-helper.js.map +1 -1
- package/dist/standard-menu.js +2 -2
- package/dist/standard-menu.js.map +1 -1
- package/dist/test-utils/mocks.d.ts +203 -0
- package/dist/test-utils/mocks.d.ts.map +1 -0
- package/dist/test-utils/mocks.js +329 -0
- package/dist/test-utils/mocks.js.map +1 -0
- package/dist/tests/assertions.d.ts.map +1 -1
- package/dist/tests/assertions.js +10 -9
- package/dist/tests/assertions.js.map +1 -1
- package/dist/tests/auth.test.js +0 -68
- package/dist/tests/auth.test.js.map +1 -1
- package/dist/tests/calc.test.js +3 -62
- package/dist/tests/calc.test.js.map +1 -1
- package/dist/tests/exact_views.test.js +14 -14
- package/dist/tests/exact_views.test.js.map +1 -1
- package/dist/tests/show.test.js +1 -1
- package/dist/tests/show.test.js.map +1 -1
- package/dist/tests/table.test.js +0 -37
- package/dist/tests/table.test.js.map +1 -1
- package/dist/tests/table_sync_info.test.d.ts +2 -0
- package/dist/tests/table_sync_info.test.d.ts.map +1 -0
- package/dist/tests/table_sync_info.test.js +62 -0
- package/dist/tests/table_sync_info.test.js.map +1 -0
- package/dist/tests/user.test.js +4 -29
- package/dist/tests/user.test.js.map +1 -1
- package/dist/tests/view.test.js +0 -3
- package/dist/tests/view.test.js.map +1 -1
- package/dist/utils.d.ts +11 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +33 -3
- package/dist/utils.js.map +1 -1
- package/dist/viewable_fields.d.ts +172 -0
- package/dist/viewable_fields.d.ts.map +1 -0
- package/dist/viewable_fields.js +1562 -0
- package/dist/viewable_fields.js.map +1 -0
- package/dist/web-mobile-commons.d.ts +1 -1
- package/dist/web-mobile-commons.d.ts.map +1 -1
- package/dist/web-mobile-commons.js +19 -3
- package/dist/web-mobile-commons.js.map +1 -1
- package/package.json +14 -9
- package/webpack.config.js +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../models/table.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,GAAG,EACH,eAAe,EAEf,WAAW,EAGX,KAAK,EACN,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,SAAS,EACV,MAAM,gDAAgD,CAAC;AAExD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACb,MAAM,+CAA+C,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAoBxE,OAAO,KAAK,eAAe,MAAM,qBAAqB,CAAC;AA6BvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,KAAK,EAEV,eAAe,EACf,cAAc,EAGd,YAAY,EAGb,MAAM,4BAA4B,CAAC;AAgDpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AACH,cAAM,KAAM,YAAW,aAAa;IAClC,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IAEb,mBAAmB;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,2BAA2B;IAC3B,aAAa,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAAC;IAEvB,mCAAmC;IACnC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC;uDACmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,6CAA6C;IAC7C,SAAS,EAAE,OAAO,CAAC;IAEnB,kEAAkE;IAClE,aAAa,EAAE,OAAO,CAAC;IAEvB,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;IAElB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,+CAA+C;IAC/C,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,0DAA0D;IAC1D,WAAW,EAAE,eAAe,EAAE,CAAC;IAE/B,uFAAuF;IACvF,aAAa,EAAE,OAAO,CAAC;IAEvB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB;;;OAGG;gBACS,CAAC,EAAE,QAAQ;IAmBvB,IAAI,OAAO;;;;;;;;;;;;MAcV;IAED,iBAAiB;IA6BjB;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;IAiCpE;;;;;OAKG;WACU,IAAI,CACf,KAAK,CAAC,EAAE,KAAK,EACb,UAAU,GAAE,aAAiD,GAC5D,OAAO,CAAC,KAAK,EAAE,CAAC;IA+CnB;;;;;OAKG;WACU,kBAAkB,CAC7B,MAAM,GAAE,KAAU,EAClB,UAAU,GAAE,aAAiD,GAC5D,OAAO,CAAC,KAAK,EAAE,CAAC;IA8BnB;;;;OAIG;IACG,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM;IAOvC;;;;OAIG;IACH,2BAA2B,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;IAMnE;;;OAGG;IACH,eAAe,IAAI,MAAM,GAAG,IAAI;IAMhC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO;IAmB3D;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAgItE;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IA4BxB;;;;;;OAMG;WACU,MAAM,CACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,aAAa,GAAG,SAAc,EAAE,wBAAwB;IACjE,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,CAAC;IAwEjB;;;;;OAKG;WACU,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCpD;;;;OAIG;IAEG,MAAM,CAAC,WAAW,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BzD;;;OAGG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACG,aAAa;IAenB;;;;;;OAMG;IACH,wBAAwB,CACtB,KAAK,EAAE,KAAK,EACZ,IAAI,CAAC,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,OAAO,GAChB;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS;YAwC5B,iBAAiB;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../models/table.ts"],"names":[],"mappings":"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"}
|
package/dist/models/table.js
CHANGED
|
@@ -757,7 +757,8 @@ class Table {
|
|
|
757
757
|
if (isNode()) {
|
|
758
758
|
await db_1.default.query(`delete from ${schema}"${db_1.default.sqlsanitize(this.name)}_sync_info" where ref in (
|
|
759
759
|
${ids.map((row) => row[pkName]).join(",")})`);
|
|
760
|
-
await db_1.default.query(`insert into ${schema}"${db_1.default.sqlsanitize(this.name)}_sync_info"
|
|
760
|
+
await db_1.default.query(`insert into ${schema}"${db_1.default.sqlsanitize(this.name)}_sync_info" (ref, last_modified, deleted)
|
|
761
|
+
values ${ids
|
|
761
762
|
.map((row) => `(${row[pkName]}, date_trunc('milliseconds', to_timestamp( ${timestamp.valueOf() / 1000.0} ) ), true)`)
|
|
762
763
|
.join(",")}`);
|
|
763
764
|
}
|
|
@@ -810,6 +811,7 @@ class Table {
|
|
|
810
811
|
state.log(4, `Not authorized to deleteRows in table ${this.name}.`);
|
|
811
812
|
return;
|
|
812
813
|
}
|
|
814
|
+
this.normalise_fkey_values(where);
|
|
813
815
|
const calc_agg_fields = await field_1.default.find({
|
|
814
816
|
calculated: true,
|
|
815
817
|
stored: true,
|
|
@@ -906,6 +908,11 @@ class Table {
|
|
|
906
908
|
else
|
|
907
909
|
throw e;
|
|
908
910
|
});
|
|
911
|
+
if (this.has_sync_info) {
|
|
912
|
+
const state = require("../db/state").getState();
|
|
913
|
+
if (state.pushHelper)
|
|
914
|
+
state.pushHelper.pushSync(this.name);
|
|
915
|
+
}
|
|
909
916
|
}
|
|
910
917
|
/**
|
|
911
918
|
* Returns row with only fields that can be read from db (readFromDB flag)
|
|
@@ -957,6 +964,7 @@ class Table {
|
|
|
957
964
|
const fields = this.fields;
|
|
958
965
|
const { forUser, forPublic, ...selopts1 } = selopts;
|
|
959
966
|
const role = forUser ? forUser.role_id : forPublic ? 100 : null;
|
|
967
|
+
this.normalise_fkey_values(where);
|
|
960
968
|
const row = await db_1.default.selectMaybeOne(this.name, where, this.processSelectOptions(selopts1));
|
|
961
969
|
if (!row || !this.fields)
|
|
962
970
|
return null;
|
|
@@ -1016,6 +1024,7 @@ class Table {
|
|
|
1016
1024
|
?.notAuthorized) {
|
|
1017
1025
|
return [];
|
|
1018
1026
|
}
|
|
1027
|
+
this.normalise_fkey_values(where);
|
|
1019
1028
|
let rows = await db_1.default.select(this.name, where, this.processSelectOptions(selopts1));
|
|
1020
1029
|
if (role && role > this.min_role_read) {
|
|
1021
1030
|
//check ownership
|
|
@@ -1065,6 +1074,8 @@ class Table {
|
|
|
1065
1074
|
* @returns {Promise<number>}
|
|
1066
1075
|
*/
|
|
1067
1076
|
async countRows(where, opts) {
|
|
1077
|
+
if (where)
|
|
1078
|
+
this.normalise_fkey_values(where);
|
|
1068
1079
|
return await db_1.default.count(this.name, where, opts);
|
|
1069
1080
|
}
|
|
1070
1081
|
/**
|
|
@@ -1354,9 +1365,11 @@ class Table {
|
|
|
1354
1365
|
if (this.has_sync_info) {
|
|
1355
1366
|
const oldInfo = await this.latestSyncInfo(id);
|
|
1356
1367
|
if (oldInfo && !oldInfo.deleted)
|
|
1357
|
-
await this.updateSyncInfo(id, oldInfo.last_modified, syncTimestamp);
|
|
1368
|
+
await this.updateSyncInfo(id, v, oldInfo.last_modified, syncTimestamp);
|
|
1358
1369
|
else
|
|
1359
|
-
await this.insertSyncInfo(id, syncTimestamp);
|
|
1370
|
+
await this.insertSyncInfo(id, v, syncTimestamp);
|
|
1371
|
+
if (state.pushHelper)
|
|
1372
|
+
state.pushHelper.pushSync(this.name);
|
|
1360
1373
|
}
|
|
1361
1374
|
const newRow = { ...existing, ...v, [pk_name]: id };
|
|
1362
1375
|
if (really_changed_field_names.size > 0) {
|
|
@@ -1368,6 +1381,13 @@ class Table {
|
|
|
1368
1381
|
await trigger_1.default.runTableTriggers("Update", this, { ...(additionalTriggerValues || {}), ...newRow }, resultCollector, role === 100 ? undefined : user, { old_row: existing, updated_fields: v_in, ...(extraArgs || {}) });
|
|
1369
1382
|
}
|
|
1370
1383
|
}
|
|
1384
|
+
static async analyze_all_indexed_tables() {
|
|
1385
|
+
const tables = await Table.find({}, { cached: true });
|
|
1386
|
+
const schemaPrefix = db_1.default.getTenantSchemaPrefix();
|
|
1387
|
+
for (const table of tables)
|
|
1388
|
+
if (table.constraints.some((c) => c.type === "Index"))
|
|
1389
|
+
await db_1.default.query(`analyze ${schemaPrefix}"${(0, internal_1.sqlsanitize)(table.name)}";`);
|
|
1390
|
+
}
|
|
1371
1391
|
async insert_history_row(v0, retry = 0) {
|
|
1372
1392
|
// sometimes there is a race condition in history inserts
|
|
1373
1393
|
// https://dba.stackexchange.com/questions/212580/concurrent-transactions-result-in-race-condition-with-unique-constraint-on-inser
|
|
@@ -1395,10 +1415,26 @@ class Table {
|
|
|
1395
1415
|
async latestSyncInfos(ids) {
|
|
1396
1416
|
return await db_1.default.tryCatchInTransaction(async () => {
|
|
1397
1417
|
const schema = db_1.default.getTenantSchemaPrefix();
|
|
1398
|
-
const
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1418
|
+
const sql = !db_1.default.isSQLite
|
|
1419
|
+
? `
|
|
1420
|
+
SELECT s.last_modified, s.ref, s.updated_fields
|
|
1421
|
+
FROM ${schema}"${db_1.default.sqlsanitize(this.name)}_sync_info" s
|
|
1422
|
+
JOIN (
|
|
1423
|
+
SELECT
|
|
1424
|
+
ref,
|
|
1425
|
+
MAX(last_modified) AS last_modified
|
|
1426
|
+
FROM ${schema}"${db_1.default.sqlsanitize(this.name)}_sync_info"
|
|
1427
|
+
WHERE ref = ${db_1.default.isSQLite ? "" : "ANY"} ($1)
|
|
1428
|
+
GROUP BY ref
|
|
1429
|
+
) m
|
|
1430
|
+
ON s.ref = m.ref
|
|
1431
|
+
AND s.last_modified = m.last_modified`
|
|
1432
|
+
: `
|
|
1433
|
+
SELECT MAX(last_modified) "last_modified", ref
|
|
1434
|
+
FROM ${schema}"${db_1.default.sqlsanitize(this.name)}_sync_info"
|
|
1435
|
+
GROUP BY ref HAVING ref = ($1)`;
|
|
1436
|
+
const result = await db_1.default.query(sql, db_1.default.isSQLite ? ids : [ids]);
|
|
1437
|
+
return result.rows;
|
|
1402
1438
|
}, (e) => {
|
|
1403
1439
|
require("../db/state")
|
|
1404
1440
|
.getState()
|
|
@@ -1406,16 +1442,21 @@ class Table {
|
|
|
1406
1442
|
return null;
|
|
1407
1443
|
});
|
|
1408
1444
|
}
|
|
1409
|
-
async insertSyncInfo(id, syncTimestamp) {
|
|
1445
|
+
async insertSyncInfo(id, updates, syncTimestamp) {
|
|
1410
1446
|
await db_1.default.tryCatchInTransaction(async () => {
|
|
1411
1447
|
const schema = db_1.default.getTenantSchemaPrefix();
|
|
1412
1448
|
if (isNode()) {
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1449
|
+
const timestamp = syncTimestamp ? syncTimestamp : await db_1.default.time();
|
|
1450
|
+
const fieldTimestamps = {};
|
|
1451
|
+
for (const k of Object.keys(updates).filter((key) => key !== this.pk_name)) {
|
|
1452
|
+
fieldTimestamps[k] = timestamp;
|
|
1453
|
+
}
|
|
1454
|
+
await db_1.default.query(`insert into ${schema}"${db_1.default.sqlsanitize(this.name)}_sync_info" (ref, last_modified, updated_fields)
|
|
1455
|
+
values(
|
|
1456
|
+
$1,
|
|
1457
|
+
date_trunc('milliseconds', to_timestamp($2)),
|
|
1458
|
+
$3::jsonb
|
|
1459
|
+
)`, [id, timestamp.valueOf() / 1000.0, JSON.stringify(fieldTimestamps)]);
|
|
1419
1460
|
}
|
|
1420
1461
|
else {
|
|
1421
1462
|
await db_1.default.query(`insert into "${db_1.default.sqlsanitize(this.name)}_sync_info"
|
|
@@ -1428,15 +1469,28 @@ class Table {
|
|
|
1428
1469
|
.log(2, `Error in insertSyncInfo: ${e.message}`);
|
|
1429
1470
|
});
|
|
1430
1471
|
}
|
|
1431
|
-
async updateSyncInfo(id, oldLastModified, syncTimestamp) {
|
|
1472
|
+
async updateSyncInfo(id, v, oldLastModified, syncTimestamp) {
|
|
1432
1473
|
await db_1.default.tryCatchInTransaction(async () => {
|
|
1433
1474
|
const schema = db_1.default.getTenantSchemaPrefix();
|
|
1434
1475
|
if (!db_1.default.isSQLite) {
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1476
|
+
const timestamp = syncTimestamp
|
|
1477
|
+
? new Date(syncTimestamp)
|
|
1478
|
+
: await db_1.default.time();
|
|
1479
|
+
const fieldTimestamps = {};
|
|
1480
|
+
for (const k of Object.keys(v).filter((key) => key !== this.pk_name)) {
|
|
1481
|
+
fieldTimestamps[k] = timestamp;
|
|
1482
|
+
}
|
|
1483
|
+
await db_1.default.query(`update ${schema}"${db_1.default.sqlsanitize(this.name)}_sync_info"
|
|
1484
|
+
set
|
|
1485
|
+
last_modified=date_trunc('milliseconds', to_timestamp($1)),
|
|
1486
|
+
updated_fields =
|
|
1487
|
+
coalesce(updated_fields, '{}'::jsonb) || $4::jsonb
|
|
1488
|
+
where
|
|
1489
|
+
ref=$2 and last_modified = to_timestamp($3)`, [
|
|
1490
|
+
timestamp.valueOf() / 1000.0,
|
|
1438
1491
|
id,
|
|
1439
1492
|
oldLastModified.valueOf() / 1000.0,
|
|
1493
|
+
JSON.stringify(fieldTimestamps),
|
|
1440
1494
|
]);
|
|
1441
1495
|
}
|
|
1442
1496
|
else {
|
|
@@ -1560,7 +1614,7 @@ class Table {
|
|
|
1560
1614
|
typeof v_in[field.name] === "object") {
|
|
1561
1615
|
//get pkey
|
|
1562
1616
|
const pk = Table.findOne({ name: field.reftable_name })?.pk_name;
|
|
1563
|
-
if (pk)
|
|
1617
|
+
if (pk && v_in[field.name][pk])
|
|
1564
1618
|
v_in[field.name] = v_in[field.name][pk];
|
|
1565
1619
|
}
|
|
1566
1620
|
}
|
|
@@ -1694,9 +1748,11 @@ class Table {
|
|
|
1694
1748
|
if (this.has_sync_info) {
|
|
1695
1749
|
await db_1.default.tryCatchInTransaction(async () => {
|
|
1696
1750
|
if (isNode()) {
|
|
1751
|
+
// sync_info for insert
|
|
1697
1752
|
const schemaPrefix = db_1.default.getTenantSchemaPrefix();
|
|
1698
1753
|
await db_1.default.query(`insert into ${schemaPrefix}"${db_1.default.sqlsanitize(this.name)}_sync_info"
|
|
1699
|
-
|
|
1754
|
+
(ref, last_modified) values(
|
|
1755
|
+
${id}, date_trunc('milliseconds', to_timestamp(${(syncTimestamp ? syncTimestamp : await db_1.default.time()).valueOf() /
|
|
1700
1756
|
1000.0})))`);
|
|
1701
1757
|
}
|
|
1702
1758
|
else {
|
|
@@ -1707,6 +1763,8 @@ class Table {
|
|
|
1707
1763
|
}, (e) => {
|
|
1708
1764
|
state.log(2, `Error inserting sync info for table ${this.name}: ${e.message}`);
|
|
1709
1765
|
});
|
|
1766
|
+
if (state.pushHelper)
|
|
1767
|
+
state.pushHelper.pushSync(this.name);
|
|
1710
1768
|
}
|
|
1711
1769
|
const newRow = { [pk_name]: id, ...v };
|
|
1712
1770
|
await this.auto_update_calc_aggregations(newRow);
|
|
@@ -1933,6 +1991,8 @@ class Table {
|
|
|
1933
1991
|
// Prevent type confusion if not a string
|
|
1934
1992
|
return undefined;
|
|
1935
1993
|
}
|
|
1994
|
+
const hasDot = path.includes(".");
|
|
1995
|
+
const hasHalfH = path.includes("Ⱶ");
|
|
1936
1996
|
if (path.includes("->")) {
|
|
1937
1997
|
const joinPath = path.split(".");
|
|
1938
1998
|
const tableName = joinPath[0];
|
|
@@ -1943,9 +2003,9 @@ class Table {
|
|
|
1943
2003
|
const fields = joinTable.getFields();
|
|
1944
2004
|
return fields.find((f) => f.name === joinedField);
|
|
1945
2005
|
}
|
|
1946
|
-
else if (
|
|
2006
|
+
else if (hasDot || hasHalfH) {
|
|
1947
2007
|
//TODO the recusive implementation in json_list_to_external_table is better
|
|
1948
|
-
const keypath = path.split(".");
|
|
2008
|
+
const keypath = path.split(hasDot ? "." : "Ⱶ");
|
|
1949
2009
|
let field, theFields = fields;
|
|
1950
2010
|
for (let i = 0; i < keypath.length; i++) {
|
|
1951
2011
|
const refNm = keypath[i];
|
|
@@ -2002,7 +2062,11 @@ class Table {
|
|
|
2002
2062
|
if (!pk) {
|
|
2003
2063
|
throw new Error("Unable to find a field with a primary key.");
|
|
2004
2064
|
}
|
|
2005
|
-
await db_1.default.query(`create table ${schemaPrefix}"${(0, internal_1.sqlsanitize)(this.name)}_sync_info" (
|
|
2065
|
+
await db_1.default.query(`create table ${schemaPrefix}"${(0, internal_1.sqlsanitize)(this.name)}_sync_info" (
|
|
2066
|
+
ref integer,
|
|
2067
|
+
last_modified timestamp,
|
|
2068
|
+
deleted boolean default false,
|
|
2069
|
+
updated_fields jsonb)`);
|
|
2006
2070
|
await db_1.default.query(`create index "${(0, internal_1.sqlsanitize)(this.name)}_sync_info_ref_index" on ${schemaPrefix}"${(0, internal_1.sqlsanitize)(this.name)}_sync_info"(ref)`);
|
|
2007
2071
|
await db_1.default.query(`create index "${(0, internal_1.sqlsanitize)(this.name)}_sync_info_lm_index" on ${schemaPrefix}"${(0, internal_1.sqlsanitize)(this.name)}_sync_info"(last_modified)`);
|
|
2008
2072
|
await db_1.default.query(`create index "${(0, internal_1.sqlsanitize)(this.name)}_sync_info_deleted_index" on ${schemaPrefix}"${(0, internal_1.sqlsanitize)(this.name)}_sync_info"(deleted)`);
|
|
@@ -3084,21 +3148,22 @@ ${rejectDetails}`,
|
|
|
3084
3148
|
const freeVars = freeVariables(this.ownership_formula);
|
|
3085
3149
|
add_free_variables_to_joinfields(freeVars, joinFields, fields);
|
|
3086
3150
|
}
|
|
3151
|
+
if (!opts.where)
|
|
3152
|
+
opts.where = {};
|
|
3087
3153
|
if (role && role > this.min_role_read && this.ownership_field_id) {
|
|
3088
3154
|
if (forPublic)
|
|
3089
3155
|
return { notAuthorized: true };
|
|
3090
3156
|
const owner_field = fields.find((f) => f.id === this.ownership_field_id);
|
|
3091
3157
|
if (!owner_field)
|
|
3092
3158
|
throw new Error(`Owner field in table ${this.name} not found`);
|
|
3093
|
-
if (!opts.where)
|
|
3094
|
-
opts.where = {};
|
|
3095
3159
|
mergeIntoWhere(opts.where, {
|
|
3096
3160
|
[owner_field.name]: forUser.id,
|
|
3097
3161
|
});
|
|
3098
3162
|
}
|
|
3099
|
-
else if (
|
|
3100
|
-
|
|
3101
|
-
|
|
3163
|
+
else if (forUser &&
|
|
3164
|
+
role &&
|
|
3165
|
+
role > this.min_role_read &&
|
|
3166
|
+
this.ownership_formula) {
|
|
3102
3167
|
if (forPublic || role === 100)
|
|
3103
3168
|
return { notAuthorized: true }; //TODO may not be true
|
|
3104
3169
|
try {
|
|
@@ -3109,6 +3174,7 @@ ${rejectDetails}`,
|
|
|
3109
3174
|
// TODO user groups
|
|
3110
3175
|
}
|
|
3111
3176
|
}
|
|
3177
|
+
this.normalise_fkey_values(opts.where);
|
|
3112
3178
|
for (const [fldnm, { ref, target, through, ontable }] of Object.entries(joinFields)) {
|
|
3113
3179
|
let reffield;
|
|
3114
3180
|
if (ontable) {
|
|
@@ -3126,12 +3192,33 @@ ${rejectDetails}`,
|
|
|
3126
3192
|
if (!reftable)
|
|
3127
3193
|
throw new InvalidConfiguration(`Field ${ref} is not a key field`);
|
|
3128
3194
|
const reftable_table = reffield.reftable || Table.findOne(reftable);
|
|
3129
|
-
if (
|
|
3195
|
+
if (!opts.ignoreExternal &&
|
|
3196
|
+
(reftable_table?.external || reftable_table?.provider_name)) {
|
|
3130
3197
|
joinFields[fldnm].lookupFunction = async (row) => {
|
|
3131
3198
|
const rpk = reftable_table.pk_name;
|
|
3132
3199
|
const rpkval = row[ref];
|
|
3133
3200
|
const refrow = await reftable_table.getRow({ [rpk]: rpkval });
|
|
3134
|
-
|
|
3201
|
+
let val = refrow?.[target];
|
|
3202
|
+
if (through) {
|
|
3203
|
+
const throughs = Array.isArray(through) ? through : [through];
|
|
3204
|
+
let prevTable = reftable_table;
|
|
3205
|
+
let prevRow = refrow;
|
|
3206
|
+
for (const thr of throughs) {
|
|
3207
|
+
if (!prevRow) {
|
|
3208
|
+
val = null;
|
|
3209
|
+
break;
|
|
3210
|
+
}
|
|
3211
|
+
const kfield = prevTable.getField(thr);
|
|
3212
|
+
const nextTable = Table.findOne({ name: kfield.reftable_name });
|
|
3213
|
+
const nextRow = await nextTable.getRow({
|
|
3214
|
+
[nextTable.pk_name]: prevRow[thr],
|
|
3215
|
+
});
|
|
3216
|
+
val = nextRow?.[target];
|
|
3217
|
+
prevRow = nextRow;
|
|
3218
|
+
prevTable = nextTable;
|
|
3219
|
+
}
|
|
3220
|
+
}
|
|
3221
|
+
return val;
|
|
3135
3222
|
};
|
|
3136
3223
|
continue;
|
|
3137
3224
|
}
|
|
@@ -3195,11 +3282,13 @@ ${rejectDetails}`,
|
|
|
3195
3282
|
orderBy: opts.orderBy &&
|
|
3196
3283
|
((0, internal_1.orderByIsObject)(opts.orderBy) || (0, internal_1.orderByIsOperator)(opts.orderBy)
|
|
3197
3284
|
? opts.orderBy
|
|
3198
|
-
:
|
|
3285
|
+
: typeof opts.orderBy === "string" &&
|
|
3286
|
+
(joinFields[opts.orderBy] || aggregations[opts.orderBy])
|
|
3199
3287
|
? opts.orderBy
|
|
3200
3288
|
: joinFields[odbUnderscore]
|
|
3201
3289
|
? odbUnderscore
|
|
3202
|
-
: opts.orderBy
|
|
3290
|
+
: typeof opts.orderBy === "string" &&
|
|
3291
|
+
opts.orderBy.toLowerCase?.() === "random()"
|
|
3203
3292
|
? opts.orderBy
|
|
3204
3293
|
: "a." + opts.orderBy),
|
|
3205
3294
|
orderDesc: opts.orderDesc,
|