orchid-orm 1.78.2 → 1.78.3
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/index.js +30 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30 -24
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -591,6 +591,12 @@ const makeNestedUpdateUpsertData = (upsert, setIds) => ({
|
|
|
591
591
|
...setIds
|
|
592
592
|
}
|
|
593
593
|
});
|
|
594
|
+
const queryUnionAll = async (queries, indexAs) => {
|
|
595
|
+
const records = await queries[0].unionAll(...queries.slice(1));
|
|
596
|
+
const result = Array(queries.length);
|
|
597
|
+
for (const record of records) result[record[indexAs]] = record;
|
|
598
|
+
return result;
|
|
599
|
+
};
|
|
594
600
|
const makeRawSqlPlaceholders = (length) => {
|
|
595
601
|
return Array.from({ length }, () => new pqb_internal.RawSql(""));
|
|
596
602
|
};
|
|
@@ -1464,22 +1470,23 @@ const nestedInsert$1 = ({ query, primaryKeys, foreignKeys }) => {
|
|
|
1464
1470
|
let connected;
|
|
1465
1471
|
if (items.length) {
|
|
1466
1472
|
const queries = [];
|
|
1473
|
+
const indexAs = (0, pqb_internal.getFreeAlias)(t.shape, "i");
|
|
1467
1474
|
for (let i = 0, len = items.length; i < len; i++) {
|
|
1468
1475
|
const [selfData, { connectOrCreate }] = items[i];
|
|
1469
1476
|
for (const item of connectOrCreate) {
|
|
1470
1477
|
const obj = {};
|
|
1471
1478
|
for (let i = 0; i < len; i++) obj[foreignKeys[i]] = selfData[primaryKeys[i]];
|
|
1472
|
-
queries.push((0, pqb_internal._queryUpdate)(t.where(item.where), obj));
|
|
1479
|
+
queries.push((0, pqb_internal._querySelect)((0, pqb_internal._queryUpdate)(t.where(item.where), obj), [{ [indexAs]: new pqb_internal.RawSql(String(queries.length)) }]));
|
|
1473
1480
|
}
|
|
1474
1481
|
}
|
|
1475
|
-
connected = await
|
|
1482
|
+
connected = await queryUnionAll(queries, indexAs);
|
|
1476
1483
|
} else connected = [];
|
|
1477
1484
|
let connectedI = 0;
|
|
1478
1485
|
items.length = 0;
|
|
1479
1486
|
for (const item of data) if (item[1].connectOrCreate) {
|
|
1480
1487
|
const length = item[1].connectOrCreate.length;
|
|
1481
1488
|
connectedI += length;
|
|
1482
|
-
for (let i = length; i > 0; i--) if (connected[connectedI - i]
|
|
1489
|
+
for (let i = length; i > 0; i--) if (!connected[connectedI - i]) {
|
|
1483
1490
|
items.push(item);
|
|
1484
1491
|
break;
|
|
1485
1492
|
}
|
|
@@ -1495,7 +1502,7 @@ const nestedInsert$1 = ({ query, primaryKeys, foreignKeys }) => {
|
|
|
1495
1502
|
...obj
|
|
1496
1503
|
});
|
|
1497
1504
|
if (connectOrCreate) {
|
|
1498
|
-
for (const item of connectOrCreate) if (connected[connectedI++]
|
|
1505
|
+
for (const item of connectOrCreate) if (!connected[connectedI++]) records.push({
|
|
1499
1506
|
...item.create,
|
|
1500
1507
|
...obj
|
|
1501
1508
|
});
|
|
@@ -1503,23 +1510,20 @@ const nestedInsert$1 = ({ query, primaryKeys, foreignKeys }) => {
|
|
|
1503
1510
|
}
|
|
1504
1511
|
await (0, pqb_internal._queryCreateMany)(t, records);
|
|
1505
1512
|
}
|
|
1506
|
-
|
|
1507
|
-
for (const
|
|
1508
|
-
|
|
1509
|
-
const
|
|
1510
|
-
for (
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
create: makeNestedUpdateUpsertData(item, foreignKeyValues).create
|
|
1519
|
-
}));
|
|
1520
|
-
}
|
|
1521
|
-
await Promise.all(queries);
|
|
1513
|
+
const queries = [];
|
|
1514
|
+
for (const [selfData, { upsert }] of data) {
|
|
1515
|
+
if (!upsert) continue;
|
|
1516
|
+
const obj = {};
|
|
1517
|
+
for (let i = 0; i < len; i++) obj[foreignKeys[i]] = selfData[primaryKeys[i]];
|
|
1518
|
+
for (const item of (0, pqb_internal.toArray)(upsert)) queries.push((0, pqb_internal._queryUpsert)(t.clone().where(item.findBy), {
|
|
1519
|
+
update: {
|
|
1520
|
+
...item.update,
|
|
1521
|
+
...obj
|
|
1522
|
+
},
|
|
1523
|
+
create: makeNestedUpdateUpsertData(item, obj).create
|
|
1524
|
+
}));
|
|
1522
1525
|
}
|
|
1526
|
+
if (queries.length) await queries[0].unionAll(...queries.slice(1));
|
|
1523
1527
|
});
|
|
1524
1528
|
};
|
|
1525
1529
|
const hasManyCreate = (key, state, nestedInsertFn, self, ctx, items, rowIndexes, count) => {
|
|
@@ -1964,16 +1968,18 @@ const nestedInsert = ({ relatedTableQuery, joinTableQuery, primaryKeys, foreignK
|
|
|
1964
1968
|
let connected;
|
|
1965
1969
|
if (items.length) {
|
|
1966
1970
|
const queries = [];
|
|
1967
|
-
|
|
1968
|
-
|
|
1971
|
+
const indexAs = (0, pqb_internal.getFreeAlias)(t.shape, "i");
|
|
1972
|
+
for (const [, { connect }] of items) for (const item of connect) queries.push((0, pqb_internal._queryFindBy)(t.select(...throughPrimaryKeys, { [indexAs]: new pqb_internal.RawSql(String(queries.length)) }), item));
|
|
1973
|
+
connected = await queryUnionAll(queries, indexAs);
|
|
1969
1974
|
} else connected = [];
|
|
1970
1975
|
items.length = 0;
|
|
1971
1976
|
for (const item of data) if (item[1].connectOrCreate) items.push(item);
|
|
1972
1977
|
let connectOrCreated;
|
|
1973
1978
|
if (items.length) {
|
|
1974
1979
|
const queries = [];
|
|
1975
|
-
|
|
1976
|
-
|
|
1980
|
+
const indexAs = (0, pqb_internal.getFreeAlias)(t.shape, "i");
|
|
1981
|
+
for (const [, { connectOrCreate }] of items) for (const item of connectOrCreate) queries.push((0, pqb_internal._queryFindByOptional)(t.select(...throughPrimaryKeys, { [indexAs]: new pqb_internal.RawSql(String(queries.length)) }), item.where));
|
|
1982
|
+
connectOrCreated = await queryUnionAll(queries, indexAs);
|
|
1977
1983
|
} else connectOrCreated = [];
|
|
1978
1984
|
let connectOrCreateI = 0;
|
|
1979
1985
|
items.length = 0;
|