prostgles-server 2.0.187 → 2.0.188
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 +5 -0
- package/dist/DboBuilder/insert.d.ts.map +1 -0
- package/dist/DboBuilder/insert.js +129 -0
- package/dist/DboBuilder/insert.js.map +1 -0
- package/dist/DboBuilder/insertDataParse.d.ts +11 -0
- package/dist/DboBuilder/insertDataParse.d.ts.map +1 -0
- package/dist/DboBuilder/insertDataParse.js +283 -0
- package/dist/DboBuilder/insertDataParse.js.map +1 -0
- package/dist/DboBuilder.d.ts +10 -5
- package/dist/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder.js +105 -365
- package/dist/DboBuilder.js.map +1 -1
- package/dist/FileManager.d.ts.map +1 -1
- package/dist/FileManager.js +17 -12
- package/dist/FileManager.js.map +1 -1
- package/dist/Prostgles.d.ts +1 -1
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js.map +1 -1
- package/dist/QueryBuilder.d.ts.map +1 -1
- package/dist/QueryBuilder.js +7 -2
- package/dist/QueryBuilder.js.map +1 -1
- package/dist/TableConfig.d.ts +1 -4
- package/dist/TableConfig.d.ts.map +1 -1
- package/dist/TableConfig.js.map +1 -1
- package/lib/DboBuilder/insert.d.ts +5 -0
- package/lib/DboBuilder/insert.d.ts.map +1 -0
- package/lib/DboBuilder/insert.js +128 -0
- package/lib/DboBuilder/insert.ts +138 -0
- package/lib/DboBuilder/insertDataParse.d.ts +11 -0
- package/lib/DboBuilder/insertDataParse.d.ts.map +1 -0
- package/lib/DboBuilder/insertDataParse.js +282 -0
- package/lib/DboBuilder/insertDataParse.ts +355 -0
- package/lib/DboBuilder.d.ts +10 -5
- package/lib/DboBuilder.d.ts.map +1 -1
- package/lib/DboBuilder.js +105 -365
- package/lib/DboBuilder.ts +121 -440
- package/lib/FileManager.d.ts.map +1 -1
- package/lib/FileManager.js +17 -12
- package/lib/FileManager.ts +18 -13
- package/lib/Prostgles.d.ts +1 -1
- package/lib/Prostgles.d.ts.map +1 -1
- package/lib/Prostgles.ts +664 -652
- package/lib/QueryBuilder.d.ts.map +1 -1
- package/lib/QueryBuilder.js +7 -2
- package/lib/QueryBuilder.ts +12 -7
- package/lib/TableConfig.d.ts +1 -4
- package/lib/TableConfig.d.ts.map +1 -1
- package/lib/TableConfig.ts +2 -6
- package/package.json +2 -2
- package/tests/client/PID.txt +1 -1
- package/tests/client/tsconfig.json +1 -1
- package/tests/client_only_queries.d.ts +1 -1
- package/tests/client_only_queries.d.ts.map +1 -1
- package/tests/client_only_queries.ts +1 -1
- package/tests/isomorphic_queries.d.ts +1 -1
- package/tests/isomorphic_queries.d.ts.map +1 -1
- package/tests/isomorphic_queries.js +48 -1
- package/tests/isomorphic_queries.ts +65 -4
- package/tests/manual_test/DBoGenerated.d.ts +398 -0
- package/tests/manual_test/index.d.ts +2 -0
- package/tests/manual_test/index.d.ts.map +1 -0
- package/tests/{config_test2 → manual_test}/index.html +14 -23
- package/tests/{config_test2 → manual_test}/index.js +21 -15
- package/tests/{config_test2 → manual_test}/index.ts +22 -17
- package/tests/{config_test2 → manual_test}/init.sql +36 -5
- package/tests/manual_test/package-lock.json +2483 -0
- package/tests/{config_test2 → manual_test}/package.json +6 -7
- package/tests/manual_test/tsconfig.json +21 -0
- package/tests/server/DBoGenerated.d.ts +70 -0
- package/tests/server/index.js +29 -2
- package/tests/server/index.ts +30 -4
- package/tests/server/init.sql +25 -0
- package/tests/server/package-lock.json +3 -3
- package/tests/config_test2/DBoGenerated.d.ts +0 -135
- package/tests/config_test2/tsconfig.json +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.d.ts","sourceRoot":"","sources":["QueryBuilder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"QueryBuilder.d.ts","sourceRoot":"","sources":["QueryBuilder.ts"],"names":[],"mappings":"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"}
|
package/lib/QueryBuilder.js
CHANGED
|
@@ -1189,7 +1189,9 @@ function makeQuery(_this, q, depth = 0, joinFields = [], selectParams = {}) {
|
|
|
1189
1189
|
return (0, prostgles_types_1.asName)(`agg_${s.alias}`) + " AS " + (0, prostgles_types_1.asName)(s.alias);
|
|
1190
1190
|
return (0, prostgles_types_1.asName)(s.alias);
|
|
1191
1191
|
}).concat(q2.joins?.map(j => (0, prostgles_types_1.asName)(j.table)) ?? []).join(", ");
|
|
1192
|
-
const _iiQ = makeQuery(_this, q2, depth + 1,
|
|
1192
|
+
const _iiQ = makeQuery(_this, q2, depth + 1,
|
|
1193
|
+
// on.map(([c1, c2]) => asName(c2)),
|
|
1194
|
+
on.flatMap(cond => cond.map(([c1, c2]) => (0, prostgles_types_1.asName)(c2))), selectParams);
|
|
1193
1195
|
// const iiQ = flat(_iiQ.split("\n")); // prettify for debugging
|
|
1194
1196
|
// console.log(_iiQ)
|
|
1195
1197
|
const iiQ = [_iiQ];
|
|
@@ -1207,10 +1209,13 @@ function makeQuery(_this, q, depth = 0, joinFields = [], selectParams = {}) {
|
|
|
1207
1209
|
`) ${thisAlias}`
|
|
1208
1210
|
];
|
|
1209
1211
|
}
|
|
1212
|
+
const getJoinCondition = (t1Alias, t2Alias, on) => {
|
|
1213
|
+
return on.map(cond => cond.map(([c1, c2]) => `${t1Alias}.${(0, prostgles_types_1.asName)(getPrevColName(c1))} = ${t2Alias}.${(0, prostgles_types_1.asName)(getThisColName(c2))} `).join(" AND ")).join(" OR ");
|
|
1214
|
+
};
|
|
1210
1215
|
let jres = [
|
|
1211
1216
|
`${q2.isLeftJoin ? "LEFT" : "INNER"} JOIN `,
|
|
1212
1217
|
...iQ,
|
|
1213
|
-
`ON ${
|
|
1218
|
+
`ON ${getJoinCondition(prevAlias, thisAlias, on)}`
|
|
1214
1219
|
];
|
|
1215
1220
|
return jres;
|
|
1216
1221
|
});
|
package/lib/QueryBuilder.ts
CHANGED
|
@@ -1436,7 +1436,8 @@ export function makeQuery(
|
|
|
1436
1436
|
_this,
|
|
1437
1437
|
q2,
|
|
1438
1438
|
depth + 1,
|
|
1439
|
-
on.map(([c1, c2]) => asName(c2)),
|
|
1439
|
+
// on.map(([c1, c2]) => asName(c2)),
|
|
1440
|
+
on.flatMap(cond => cond.map(([c1, c2]) => asName(c2))),
|
|
1440
1441
|
selectParams,
|
|
1441
1442
|
);
|
|
1442
1443
|
// const iiQ = flat(_iiQ.split("\n")); // prettify for debugging
|
|
@@ -1457,14 +1458,18 @@ export function makeQuery(
|
|
|
1457
1458
|
, `) ${thisAlias}`
|
|
1458
1459
|
]
|
|
1459
1460
|
}
|
|
1460
|
-
|
|
1461
|
+
|
|
1462
|
+
const getJoinCondition = (t1Alias: string, t2Alias: string, on: [string, string][][]) => {
|
|
1463
|
+
return on.map(cond => cond.map(([c1, c2]) =>
|
|
1464
|
+
`${t1Alias}.${asName(getPrevColName(c1))} = ${t2Alias}.${asName(getThisColName(c2))} `
|
|
1465
|
+
).join(" AND ")
|
|
1466
|
+
).join(" OR ")
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
let jres: string[] = [
|
|
1461
1470
|
`${q2.isLeftJoin? "LEFT" : "INNER"} JOIN `
|
|
1462
1471
|
, ...iQ
|
|
1463
|
-
, `ON ${
|
|
1464
|
-
on.map(([c1, c2]) =>
|
|
1465
|
-
`${prevAlias}.${asName(getPrevColName(c1))} = ${thisAlias}.${asName(getThisColName(c2))} `
|
|
1466
|
-
).join(" AND ")
|
|
1467
|
-
}`
|
|
1472
|
+
, `ON ${getJoinCondition(prevAlias, thisAlias, on)}`
|
|
1468
1473
|
];
|
|
1469
1474
|
return jres;
|
|
1470
1475
|
});
|
package/lib/TableConfig.d.ts
CHANGED
|
@@ -93,10 +93,7 @@ declare type ReferencedColumn = {
|
|
|
93
93
|
declare type JoinDef = {
|
|
94
94
|
sourceTable: string;
|
|
95
95
|
targetTable: string;
|
|
96
|
-
|
|
97
|
-
* E.g.: [sourceCol: string, targetCol: string][];
|
|
98
|
-
*/
|
|
99
|
-
on: [string, string][];
|
|
96
|
+
on: JoinInfo["paths"][number]["on"];
|
|
100
97
|
};
|
|
101
98
|
/**
|
|
102
99
|
* Used in specifying a join path to a table. This column name can then be used in select
|
package/lib/TableConfig.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["TableConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAA6B,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,EAAE,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"TableConfig.d.ts","sourceRoot":"","sources":["TableConfig.ts"],"names":[],"mappings":"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"}
|
package/lib/TableConfig.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { doesNotMatch } from "assert";
|
|
|
2
2
|
import { getKeys, asName, AnyObject, TableInfo } from "prostgles-types";
|
|
3
3
|
import { DboBuilder, isPlainObject, JoinInfo } from "./DboBuilder";
|
|
4
4
|
import { ALLOWED_EXTENSION, ALLOWED_CONTENT_TYPE } from "./FileManager";
|
|
5
|
-
import { DB, DBHandlerServer, Prostgles } from "./Prostgles";
|
|
5
|
+
import { DB, DBHandlerServer, Joins, Prostgles } from "./Prostgles";
|
|
6
6
|
import { asValue } from "./PubSubManager";
|
|
7
7
|
|
|
8
8
|
type ColExtraInfo = {
|
|
@@ -129,11 +129,7 @@ type ReferencedColumn = {
|
|
|
129
129
|
type JoinDef = {
|
|
130
130
|
sourceTable: string;
|
|
131
131
|
targetTable: string;
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* E.g.: [sourceCol: string, targetCol: string][];
|
|
135
|
-
*/
|
|
136
|
-
on: [string, string][];
|
|
132
|
+
on: JoinInfo["paths"][number]["on"];
|
|
137
133
|
}
|
|
138
134
|
|
|
139
135
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prostgles-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.188",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -37,6 +37,6 @@
|
|
|
37
37
|
"@types/bluebird": "^3.5.36",
|
|
38
38
|
"@types/node": "^14.14.35",
|
|
39
39
|
"@types/sharp": "^0.30.2",
|
|
40
|
-
"typescript": "^4.7.
|
|
40
|
+
"typescript": "^4.7.4"
|
|
41
41
|
}
|
|
42
42
|
}
|
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
49808
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DBHandlerClient, Auth } from "./client/index";
|
|
1
|
+
import type { DBHandlerClient, Auth } from "./client/index";
|
|
2
2
|
import { DBSchemaTable } from "./client/node_modules/prostgles-types/dist";
|
|
3
3
|
export default function client_only(db: DBHandlerClient, auth: Auth, log: (...args: any[]) => any, methods: any, tableSchema: DBSchemaTable[]): Promise<void>;
|
|
4
4
|
//# sourceMappingURL=client_only_queries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_only_queries.d.ts","sourceRoot":"","sources":["client_only_queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"client_only_queries.d.ts","sourceRoot":"","sources":["client_only_queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAa,MAAM,4CAA4C,CAAC;AAGtF,wBAA8B,WAAW,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,OAAO,KAAA,EAAE,WAAW,EAAE,aAAa,EAAE,iBA6S7I"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { strict as assert } from 'assert';
|
|
2
2
|
|
|
3
|
-
import { DBHandlerClient, Auth } from "./client/index";
|
|
3
|
+
import type { DBHandlerClient, Auth } from "./client/index";
|
|
4
4
|
import { DBSchemaTable, isDefined } from "./client/node_modules/prostgles-types/dist";
|
|
5
5
|
import { tryRun, tryRunP } from './isomorphic_queries';
|
|
6
6
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DBHandlerServer } from "../dist/Prostgles";
|
|
2
|
-
import { DBHandlerClient } from "./client/index";
|
|
2
|
+
import type { DBHandlerClient } from "./client/index";
|
|
3
3
|
export declare function tryRun(desc: string, func: () => any, log?: Function): Promise<void>;
|
|
4
4
|
export declare function tryRunP(desc: string, func: (resolve: any, reject: any) => any, log?: Function): Promise<unknown>;
|
|
5
5
|
export default function isomorphic(db: Partial<DBHandlerServer> | Partial<DBHandlerClient>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isomorphic_queries.d.ts","sourceRoot":"","sources":["isomorphic_queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"isomorphic_queries.d.ts","sourceRoot":"","sources":["isomorphic_queries.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,iBAYzE;AACD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,oBAW7F;AAED,wBAA8B,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,iBAovB/F"}
|
|
@@ -31,8 +31,9 @@ async function tryRun(desc, func, log) {
|
|
|
31
31
|
await func();
|
|
32
32
|
}
|
|
33
33
|
catch (err) {
|
|
34
|
-
console.error(desc + " FAILED:");
|
|
34
|
+
console.error(desc + " FAILED:", err);
|
|
35
35
|
log?.("FAIL: ", err);
|
|
36
|
+
console.trace(err);
|
|
36
37
|
setTimeout(() => {
|
|
37
38
|
throw err;
|
|
38
39
|
}, 2000);
|
|
@@ -495,6 +496,17 @@ async function isomorphic(db) {
|
|
|
495
496
|
// const _data = fs.readFileSync(__dirname + "/server/media/"+file.name);
|
|
496
497
|
assert_1.strict.equal(name, "somename.txt");
|
|
497
498
|
});
|
|
499
|
+
// await tryRun("Media col insert", async () => {
|
|
500
|
+
// const resp = await db.items_with_media_cols.insert({ desc: "description", file_id: mediaFile }, { returning: "*" });
|
|
501
|
+
// assert.equal(
|
|
502
|
+
// +(await db.items_with_media_cols.count(resp)),
|
|
503
|
+
// 1
|
|
504
|
+
// );
|
|
505
|
+
// assert.equal(
|
|
506
|
+
// +(await db.media.count({ original_name: 'sample_file.txt', id: resp.file_id })),
|
|
507
|
+
// 1
|
|
508
|
+
// );
|
|
509
|
+
// });
|
|
498
510
|
});
|
|
499
511
|
await tryRun("Exists filter example", async () => {
|
|
500
512
|
const fo = await db.items.findOne(), f = await db.items.find();
|
|
@@ -619,5 +631,40 @@ async function isomorphic(db) {
|
|
|
619
631
|
throw "$rowhash query failed";
|
|
620
632
|
}
|
|
621
633
|
});
|
|
634
|
+
await tryRun("Reference column nested insert", async () => {
|
|
635
|
+
const nestedRow = { name: "nested_insert" };
|
|
636
|
+
const parentRow = { name: "parent insert" };
|
|
637
|
+
const pr = await db.items2.insert({ items_id: nestedRow, ...parentRow }, { returning: "*" });
|
|
638
|
+
const childRows = await db.items.find(nestedRow);
|
|
639
|
+
assert_1.strict.equal(childRows.length, 1);
|
|
640
|
+
assert_1.strict.deepStrictEqual(await db.items2.findOne(parentRow), { hh: null, id: pr.id, ...parentRow, items_id: childRows[0].id });
|
|
641
|
+
});
|
|
642
|
+
await tryRun("Reference column deep nested insert", async () => {
|
|
643
|
+
const pr = await db.items4a.insert({
|
|
644
|
+
items_id: { name: "it" },
|
|
645
|
+
items2_id: { name: "it2", items_id: { name: "it" } },
|
|
646
|
+
name: "it4a"
|
|
647
|
+
}, { returning: "*" });
|
|
648
|
+
const itemsCount = await db.items.count({ name: "it" });
|
|
649
|
+
const items2Count = await db.items2.count({ name: "it2" });
|
|
650
|
+
const items4aCount = await db.items4a.count({ name: "it4a" });
|
|
651
|
+
assert_1.strict.equal(+itemsCount, 2);
|
|
652
|
+
assert_1.strict.equal(+items2Count, 1);
|
|
653
|
+
assert_1.strict.equal(+items4aCount, 1);
|
|
654
|
+
});
|
|
655
|
+
await tryRun("Multi reference column nested insert", async () => {
|
|
656
|
+
await db.items_multi.insert({
|
|
657
|
+
items0_id: { name: "multi" },
|
|
658
|
+
items1_id: { name: "multi" },
|
|
659
|
+
items2_id: { name: "multi" },
|
|
660
|
+
items3_id: { name: "multi" },
|
|
661
|
+
name: "root_multi"
|
|
662
|
+
}, { returning: "*" });
|
|
663
|
+
const itemsCount = await db.items.count({ name: "multi" });
|
|
664
|
+
const multiItem = await db.items_multi.findOne({ name: "root_multi" }, { select: { "*": 1, items: "*" } });
|
|
665
|
+
assert_1.strict.equal(+itemsCount, 4);
|
|
666
|
+
assert_1.strict.equal(multiItem?.name, "root_multi");
|
|
667
|
+
assert_1.strict.equal(multiItem?.items.filter(d => d.name === "multi").length, 4);
|
|
668
|
+
});
|
|
622
669
|
}
|
|
623
670
|
exports.default = isomorphic;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { strict as assert } from 'assert';
|
|
2
2
|
|
|
3
3
|
import { DBHandlerServer} from "../dist/Prostgles";
|
|
4
|
-
import { DBHandlerClient } from "./client/index";
|
|
4
|
+
import type { DBHandlerClient } from "./client/index";
|
|
5
5
|
import * as fs from "fs";
|
|
6
6
|
|
|
7
7
|
export async function tryRun(desc: string, func: () => any, log?: Function){
|
|
8
8
|
try {
|
|
9
9
|
await func();
|
|
10
10
|
} catch(err) {
|
|
11
|
-
console.error(desc + " FAILED:");
|
|
11
|
+
console.error(desc + " FAILED:", err);
|
|
12
12
|
log?.("FAIL: ", err);
|
|
13
|
+
console.trace(err)
|
|
13
14
|
setTimeout(() => {
|
|
14
15
|
throw err;
|
|
15
16
|
|
|
@@ -42,9 +43,8 @@ export default async function isomorphic(db: Partial<DBHandlerServer> | Partial<
|
|
|
42
43
|
await db.items3.delete({ });
|
|
43
44
|
await db.items2.delete({ });
|
|
44
45
|
await db.items.delete({ });
|
|
45
|
-
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
|
|
49
49
|
await tryRun("Prepare data", async () => {
|
|
50
50
|
await db.items.insert([{ name: "a" }, { name: "a" }, { name: "b" }]);
|
|
@@ -563,6 +563,21 @@ export default async function isomorphic(db: Partial<DBHandlerServer> | Partial<
|
|
|
563
563
|
// const _data = fs.readFileSync(__dirname + "/server/media/"+file.name);
|
|
564
564
|
assert.equal(name, "somename.txt");
|
|
565
565
|
});
|
|
566
|
+
|
|
567
|
+
// await tryRun("Media col insert", async () => {
|
|
568
|
+
|
|
569
|
+
// const resp = await db.items_with_media_cols.insert({ desc: "description", file_id: mediaFile }, { returning: "*" });
|
|
570
|
+
|
|
571
|
+
// assert.equal(
|
|
572
|
+
// +(await db.items_with_media_cols.count(resp)),
|
|
573
|
+
// 1
|
|
574
|
+
// );
|
|
575
|
+
|
|
576
|
+
// assert.equal(
|
|
577
|
+
// +(await db.media.count({ original_name: 'sample_file.txt', id: resp.file_id })),
|
|
578
|
+
// 1
|
|
579
|
+
// );
|
|
580
|
+
// });
|
|
566
581
|
});
|
|
567
582
|
|
|
568
583
|
|
|
@@ -725,4 +740,50 @@ export default async function isomorphic(db: Partial<DBHandlerServer> | Partial<
|
|
|
725
740
|
throw "$rowhash query failed";
|
|
726
741
|
}
|
|
727
742
|
});
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
await tryRun("Reference column nested insert", async () => {
|
|
746
|
+
const nestedRow = { name: "nested_insert" };
|
|
747
|
+
const parentRow = { name: "parent insert" }
|
|
748
|
+
const pr = await db.items2.insert({ items_id: nestedRow, ...parentRow }, { returning: "*" });
|
|
749
|
+
|
|
750
|
+
const childRows = await db.items.find(nestedRow);
|
|
751
|
+
assert.equal(childRows.length, 1);
|
|
752
|
+
assert.deepStrictEqual(await db.items2.findOne(parentRow), { hh: null, id: pr.id, ...parentRow, items_id: childRows[0].id });
|
|
753
|
+
|
|
754
|
+
});
|
|
755
|
+
|
|
756
|
+
await tryRun("Reference column deep nested insert", async () => {
|
|
757
|
+
|
|
758
|
+
const pr = await db.items4a.insert({
|
|
759
|
+
items_id: { name: "it" },
|
|
760
|
+
items2_id: { name: "it2", items_id: { name: "it" } },
|
|
761
|
+
name: "it4a"
|
|
762
|
+
}, { returning: "*" });
|
|
763
|
+
const itemsCount = await db.items.count({ name: "it" })
|
|
764
|
+
const items2Count = await db.items2.count({ name: "it2" })
|
|
765
|
+
const items4aCount = await db.items4a.count({ name: "it4a" })
|
|
766
|
+
|
|
767
|
+
assert.equal(+itemsCount, 2);
|
|
768
|
+
assert.equal(+items2Count, 1);
|
|
769
|
+
assert.equal(+items4aCount, 1);
|
|
770
|
+
|
|
771
|
+
});
|
|
772
|
+
|
|
773
|
+
await tryRun("Multi reference column nested insert", async () => {
|
|
774
|
+
await db.items_multi.insert({
|
|
775
|
+
items0_id: { name: "multi" },
|
|
776
|
+
items1_id: { name: "multi" },
|
|
777
|
+
items2_id: { name: "multi" },
|
|
778
|
+
items3_id: { name: "multi" },
|
|
779
|
+
name: "root_multi"
|
|
780
|
+
}, { returning: "*" });
|
|
781
|
+
const itemsCount = await db.items.count({ name: "multi" })
|
|
782
|
+
const multiItem = await db.items_multi.findOne({ name: "root_multi" }, { select: { "*": 1, items: "*" } });
|
|
783
|
+
|
|
784
|
+
assert.equal(+itemsCount, 4);
|
|
785
|
+
assert.equal(multiItem?.name, "root_multi");
|
|
786
|
+
assert.equal(multiItem?.items.filter(d => d.name === "multi").length, 4);
|
|
787
|
+
|
|
788
|
+
});
|
|
728
789
|
}
|