orchid-orm 1.12.1 → 1.12.2
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.d.ts +58 -1
- package/dist/index.js +39 -33
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +39 -33
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.mjs
CHANGED
|
@@ -27,7 +27,7 @@ const create = (columnTypes, filePathOrStack, snakeCase, nowSQL, exportAs = "Bas
|
|
|
27
27
|
constructor() {
|
|
28
28
|
this.snakeCase = snakeCase;
|
|
29
29
|
this.columnTypes = columnTypes;
|
|
30
|
-
this.
|
|
30
|
+
this.q = {};
|
|
31
31
|
}
|
|
32
32
|
static getFilePath() {
|
|
33
33
|
if (filePath)
|
|
@@ -140,20 +140,20 @@ class BelongsToVirtualColumn extends VirtualColumn {
|
|
|
140
140
|
}
|
|
141
141
|
const relationData = [values];
|
|
142
142
|
store.belongsTo[key] = relationData;
|
|
143
|
-
q.
|
|
143
|
+
q.q.wrapInTransaction = true;
|
|
144
144
|
pushQueryValue(q, "beforeCreate", async (q2) => {
|
|
145
145
|
const inserted = await this.nestedInsert(
|
|
146
146
|
q2,
|
|
147
147
|
relationData.map(([, , data]) => data)
|
|
148
148
|
);
|
|
149
|
-
const { values: values2 } = q2.
|
|
149
|
+
const { values: values2 } = q2.q;
|
|
150
150
|
relationData.forEach(([rowIndex2, columnIndex2], index) => {
|
|
151
151
|
values2[rowIndex2][columnIndex2] = inserted[index][primaryKey];
|
|
152
152
|
});
|
|
153
153
|
});
|
|
154
154
|
}
|
|
155
155
|
update(q, ctx, set) {
|
|
156
|
-
q.
|
|
156
|
+
q.q.wrapInTransaction = true;
|
|
157
157
|
const data = set[this.key];
|
|
158
158
|
if (this.nestedUpdate(q, set, data, ctx)) {
|
|
159
159
|
ctx.willSetKeys = true;
|
|
@@ -253,14 +253,14 @@ const nestedUpdate$3 = ({ query, primaryKey, foreignKey }) => {
|
|
|
253
253
|
update[foreignKey] = await query.get(primaryKey)._create(params.create);
|
|
254
254
|
} else if (params.delete) {
|
|
255
255
|
const selectQuery = q2.clone();
|
|
256
|
-
selectQuery.
|
|
256
|
+
selectQuery.q.type = void 0;
|
|
257
257
|
idsForDelete = await selectQuery._pluck(foreignKey);
|
|
258
258
|
update[foreignKey] = null;
|
|
259
259
|
}
|
|
260
260
|
});
|
|
261
261
|
const { upsert } = params;
|
|
262
262
|
if (upsert || params.update || params.delete) {
|
|
263
|
-
if (!((_a = q.
|
|
263
|
+
if (!((_a = q.q.select) == null ? void 0 : _a.includes("*")) && !((_b = q.q.select) == null ? void 0 : _b.includes(foreignKey))) {
|
|
264
264
|
q._select(foreignKey);
|
|
265
265
|
}
|
|
266
266
|
}
|
|
@@ -315,7 +315,7 @@ const hasRelationHandleCreate = (q, ctx, item, rowIndex, key, primaryKey, nested
|
|
|
315
315
|
store.hasRelation[key].push(values);
|
|
316
316
|
return;
|
|
317
317
|
}
|
|
318
|
-
q.
|
|
318
|
+
q.q.wrapInTransaction = true;
|
|
319
319
|
const relationData = [values];
|
|
320
320
|
store.hasRelation[key] = relationData;
|
|
321
321
|
q._afterCreate(
|
|
@@ -334,10 +334,10 @@ const hasRelationHandleUpdate = (q, set, key, primaryKey, nestedUpdate) => {
|
|
|
334
334
|
const value = set[key];
|
|
335
335
|
if (!value.set && !("upsert" in value) && (!value.disconnect || Array.isArray(value.disconnect) && value.disconnect.length === 0) && (!value.delete || Array.isArray(value.delete) && value.delete.length === 0) && (!value.update || Array.isArray(value.update.where) && value.update.where.length === 0) && (!value.create || Array.isArray(value.create) && value.create.length === 0))
|
|
336
336
|
return;
|
|
337
|
-
if (!((_a = q.
|
|
337
|
+
if (!((_a = q.q.select) == null ? void 0 : _a.includes("*")) && !((_b = q.q.select) == null ? void 0 : _b.includes(primaryKey))) {
|
|
338
338
|
q._select(primaryKey);
|
|
339
339
|
}
|
|
340
|
-
q.
|
|
340
|
+
q.q.wrapInTransaction = true;
|
|
341
341
|
q._afterUpdate(q.primaryKeys, (rows, q2) => {
|
|
342
342
|
return nestedUpdate(
|
|
343
343
|
q2,
|
|
@@ -463,8 +463,10 @@ const makeHasOneMethod = (table, relation, relationName, query) => {
|
|
|
463
463
|
modifyRelatedQuery(relationQuery) {
|
|
464
464
|
return (query2) => {
|
|
465
465
|
const fromQuery = query2.clone();
|
|
466
|
-
fromQuery.
|
|
467
|
-
|
|
466
|
+
fromQuery.q.select = fromQuerySelect;
|
|
467
|
+
const q = relationQuery.q;
|
|
468
|
+
q.kind = "from";
|
|
469
|
+
q.values = { from: fromQuery };
|
|
468
470
|
};
|
|
469
471
|
}
|
|
470
472
|
};
|
|
@@ -660,8 +662,10 @@ const makeHasManyMethod = (table, relation, relationName, query) => {
|
|
|
660
662
|
modifyRelatedQuery(relationQuery) {
|
|
661
663
|
return (query2) => {
|
|
662
664
|
const fromQuery = query2.clone();
|
|
663
|
-
fromQuery.
|
|
664
|
-
|
|
665
|
+
fromQuery.q.select = fromQuerySelect;
|
|
666
|
+
const q = relationQuery.q;
|
|
667
|
+
q.kind = "from";
|
|
668
|
+
q.values = { from: fromQuery };
|
|
665
669
|
};
|
|
666
670
|
}
|
|
667
671
|
};
|
|
@@ -750,7 +754,7 @@ const nestedUpdate$1 = ({ query, primaryKey, foreignKey }) => {
|
|
|
750
754
|
[foreignKey]: data[0][primaryKey]
|
|
751
755
|
}))
|
|
752
756
|
);
|
|
753
|
-
delete t.
|
|
757
|
+
delete t.q[toSqlCacheKey];
|
|
754
758
|
}
|
|
755
759
|
if (params.disconnect || params.set) {
|
|
756
760
|
await t.where(
|
|
@@ -762,7 +766,7 @@ const nestedUpdate$1 = ({ query, primaryKey, foreignKey }) => {
|
|
|
762
766
|
)
|
|
763
767
|
)._update({ [foreignKey]: null });
|
|
764
768
|
if (params.set) {
|
|
765
|
-
delete t.
|
|
769
|
+
delete t.q[toSqlCacheKey];
|
|
766
770
|
await t.where(
|
|
767
771
|
Array.isArray(params.set) ? {
|
|
768
772
|
OR: params.set
|
|
@@ -771,7 +775,7 @@ const nestedUpdate$1 = ({ query, primaryKey, foreignKey }) => {
|
|
|
771
775
|
}
|
|
772
776
|
}
|
|
773
777
|
if (params.delete || params.update) {
|
|
774
|
-
delete t.
|
|
778
|
+
delete t.q[toSqlCacheKey];
|
|
775
779
|
const q = t._where(
|
|
776
780
|
getWhereForNestedUpdate(
|
|
777
781
|
data,
|
|
@@ -862,7 +866,7 @@ const makeHasAndBelongsToManyMethod = (table, qb, relation, relationName, query)
|
|
|
862
866
|
[fk]: removeColumnName(table.shape[pk]),
|
|
863
867
|
[afk]: removeColumnName(query.shape[apk])
|
|
864
868
|
};
|
|
865
|
-
baseQuery.
|
|
869
|
+
baseQuery.q = __spreadProps$1(__spreadValues$3({}, baseQuery.q), {
|
|
866
870
|
shape: baseQuery.shape
|
|
867
871
|
});
|
|
868
872
|
const subQuery = Object.create(baseQuery);
|
|
@@ -895,8 +899,8 @@ const makeHasAndBelongsToManyMethod = (table, qb, relation, relationName, query)
|
|
|
895
899
|
subQuery,
|
|
896
900
|
(q) => q._on(associationForeignKeyFull, `${getQueryAs(toQuery)}.${apk}`)._on(foreignKeyFull, `${getQueryAs(fromQuery)}.${pk}`)
|
|
897
901
|
);
|
|
898
|
-
join.
|
|
899
|
-
[fromQuery.
|
|
902
|
+
join.q.joinedShapes = __spreadProps$1(__spreadValues$3({}, join.q.joinedShapes), {
|
|
903
|
+
[fromQuery.q.as || fromQuery.table]: fromQuery.q.shape
|
|
900
904
|
});
|
|
901
905
|
return join;
|
|
902
906
|
},
|
|
@@ -916,8 +920,8 @@ const makeHasAndBelongsToManyMethod = (table, qb, relation, relationName, query)
|
|
|
916
920
|
"Creating multiple `hasAndBelongsToMany` records is not yet supported"
|
|
917
921
|
);
|
|
918
922
|
}
|
|
919
|
-
const fromQuery = ref.
|
|
920
|
-
fromQuery.
|
|
923
|
+
const fromQuery = ref.q.clone();
|
|
924
|
+
fromQuery.q.select = [{ selectAs: { [fk]: pk } }];
|
|
921
925
|
const createdCount = await subQuery.count()._createFrom(
|
|
922
926
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
923
927
|
fromQuery,
|
|
@@ -930,7 +934,7 @@ const makeHasAndBelongsToManyMethod = (table, qb, relation, relationName, query)
|
|
|
930
934
|
}
|
|
931
935
|
});
|
|
932
936
|
return (q) => {
|
|
933
|
-
ref.
|
|
937
|
+
ref.q = q;
|
|
934
938
|
};
|
|
935
939
|
}
|
|
936
940
|
};
|
|
@@ -1117,7 +1121,7 @@ const nestedUpdate = (state) => {
|
|
|
1117
1121
|
if (params.set) {
|
|
1118
1122
|
const j = queryJoinTable(state, data);
|
|
1119
1123
|
await j._delete();
|
|
1120
|
-
delete j.
|
|
1124
|
+
delete j.q[toSqlCacheKey];
|
|
1121
1125
|
const ids = await queryRelatedTable(
|
|
1122
1126
|
state.relatedTableQuery,
|
|
1123
1127
|
params.set
|
|
@@ -1266,10 +1270,10 @@ const applyRelation = (qb, { relationName, relation, dbTable, otherDbTable }, de
|
|
|
1266
1270
|
} else {
|
|
1267
1271
|
query._takeOptional();
|
|
1268
1272
|
}
|
|
1269
|
-
query.
|
|
1273
|
+
query.q.returnsOne = true;
|
|
1270
1274
|
}
|
|
1271
1275
|
if (data.virtualColumn) {
|
|
1272
|
-
dbTable.shape[relationName] = dbTable.
|
|
1276
|
+
dbTable.shape[relationName] = dbTable.q.shape[relationName] = data.virtualColumn;
|
|
1273
1277
|
}
|
|
1274
1278
|
makeRelationQuery(dbTable, relationName, data, query);
|
|
1275
1279
|
baseQuery.joinQuery = data.joinQuery;
|
|
@@ -1279,7 +1283,7 @@ const applyRelation = (qb, { relationName, relation, dbTable, otherDbTable }, de
|
|
|
1279
1283
|
return originalJoin.apply(this, args);
|
|
1280
1284
|
} else {
|
|
1281
1285
|
const q = this.clone();
|
|
1282
|
-
q.
|
|
1286
|
+
q.q.innerJoinLateral = true;
|
|
1283
1287
|
return q;
|
|
1284
1288
|
}
|
|
1285
1289
|
};
|
|
@@ -1309,10 +1313,10 @@ const makeRelationQuery = (table, relationName, data, q) => {
|
|
|
1309
1313
|
this.baseQuery,
|
|
1310
1314
|
(q2) => data.reverseJoin(this, toTable)
|
|
1311
1315
|
);
|
|
1312
|
-
query.
|
|
1313
|
-
[getQueryAs(this)]: this.
|
|
1314
|
-
}, this.
|
|
1315
|
-
query.
|
|
1316
|
+
query.q.joinedShapes = __spreadValues$2({
|
|
1317
|
+
[getQueryAs(this)]: this.q.shape
|
|
1318
|
+
}, this.q.joinedShapes);
|
|
1319
|
+
query.q[relationQueryKey] = {
|
|
1316
1320
|
relationName,
|
|
1317
1321
|
sourceQuery: this,
|
|
1318
1322
|
relationQuery: toTable,
|
|
@@ -1389,7 +1393,7 @@ const orchidORM = (_a, tables) => {
|
|
|
1389
1393
|
let transactionStorage;
|
|
1390
1394
|
let qb;
|
|
1391
1395
|
if ("db" in options) {
|
|
1392
|
-
adapter = options.db.
|
|
1396
|
+
adapter = options.db.q.adapter;
|
|
1393
1397
|
transactionStorage = options.db.internal.transactionStorage;
|
|
1394
1398
|
qb = options.db.queryBuilder;
|
|
1395
1399
|
} else {
|
|
@@ -1410,6 +1414,8 @@ const orchidORM = (_a, tables) => {
|
|
|
1410
1414
|
$transaction: transaction,
|
|
1411
1415
|
$adapter: adapter,
|
|
1412
1416
|
$queryBuilder: qb,
|
|
1417
|
+
$query: (...args) => qb.query(...args),
|
|
1418
|
+
$queryArrays: (...args) => qb.queryArrays(...args),
|
|
1413
1419
|
$from: (...args) => qb.from(...args),
|
|
1414
1420
|
$close: () => adapter.close()
|
|
1415
1421
|
};
|
|
@@ -1446,7 +1452,7 @@ const orchidORM = (_a, tables) => {
|
|
|
1446
1452
|
const table = tableInstances[key];
|
|
1447
1453
|
if (table.init) {
|
|
1448
1454
|
table.init(result);
|
|
1449
|
-
Object.assign(result[key].baseQuery.
|
|
1455
|
+
Object.assign(result[key].baseQuery.q, table.q);
|
|
1450
1456
|
}
|
|
1451
1457
|
}
|
|
1452
1458
|
return result;
|
|
@@ -1475,7 +1481,7 @@ const createRepo = (table, methods) => {
|
|
|
1475
1481
|
const proto = Object.create(q2.baseQuery);
|
|
1476
1482
|
proto.baseQuery = proto;
|
|
1477
1483
|
const result = Object.create(proto);
|
|
1478
|
-
result.
|
|
1484
|
+
result.q = getClonedQueryData(q2.q);
|
|
1479
1485
|
if (plainMethods) {
|
|
1480
1486
|
Object.assign(proto.baseQuery, plainMethods);
|
|
1481
1487
|
}
|