@mikro-orm/sql 7.2.4-dev.1 → 7.2.4-dev.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/AbstractSqlDriver.js +15 -9
- package/package.json +2 -2
package/AbstractSqlDriver.js
CHANGED
|
@@ -1143,26 +1143,32 @@ export class AbstractSqlDriver extends DatabaseDriver {
|
|
|
1143
1143
|
}
|
|
1144
1144
|
sql += ' where ';
|
|
1145
1145
|
const pkProps = meta.primaryKeys.concat(...meta.getOwnConcurrencyCheckKeys());
|
|
1146
|
+
// an optimistically locked batch carries the version in every condition
|
|
1147
|
+
if (meta.versionProperty &&
|
|
1148
|
+
where.every(cond => Utils.isPlainObject(cond) && meta.versionProperty in cond)) {
|
|
1149
|
+
pkProps.push(meta.versionProperty);
|
|
1150
|
+
}
|
|
1146
1151
|
const pks = Utils.flatten(pkProps.map(pk => meta.properties[pk].fieldNames));
|
|
1147
1152
|
const useTupleIn = pks.length <= 1 || this.platform.allowsComparingTuples();
|
|
1148
1153
|
const condTemplate = useTupleIn
|
|
1149
1154
|
? `(${pks.map(() => '?').join(', ')})`
|
|
1150
1155
|
: `(${pks.map(pk => `${this.platform.quoteIdentifier(pk)} = ?`).join(' and ')})`;
|
|
1151
|
-
const conds = where.
|
|
1156
|
+
const conds = where.flatMap(cond => {
|
|
1152
1157
|
// with multiple PK columns the condition is looked up by property name, so it needs to stay an object
|
|
1153
1158
|
if (pks.length === 1 && Utils.isPlainObject(cond) && Utils.getObjectKeysSize(cond) === 1) {
|
|
1154
1159
|
cond = Object.values(cond)[0];
|
|
1155
1160
|
}
|
|
1156
1161
|
if (pks.length > 1) {
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1162
|
+
// a date version in sqlite matches either of its storage formats (see `convertVersionValue()`)
|
|
1163
|
+
const version = cond[meta.versionProperty];
|
|
1164
|
+
const versions = version?.$in ?? [version];
|
|
1165
|
+
return versions.map(v => {
|
|
1166
|
+
pkProps.forEach(pk => {
|
|
1167
|
+
const value = pk === meta.versionProperty ? v : cond[pk];
|
|
1168
|
+
params.push(...(Array.isArray(value) ? Utils.flatten(value) : [value]));
|
|
1169
|
+
});
|
|
1170
|
+
return condTemplate;
|
|
1164
1171
|
});
|
|
1165
|
-
return condTemplate;
|
|
1166
1172
|
}
|
|
1167
1173
|
params.push(cond);
|
|
1168
1174
|
return '?';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mikro-orm/sql",
|
|
3
|
-
"version": "7.2.4-dev.
|
|
3
|
+
"version": "7.2.4-dev.2",
|
|
4
4
|
"description": "TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JavaScript.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data-mapper",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@mikro-orm/core": "^7.2.3"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@mikro-orm/core": "7.2.4-dev.
|
|
56
|
+
"@mikro-orm/core": "7.2.4-dev.2"
|
|
57
57
|
},
|
|
58
58
|
"engines": {
|
|
59
59
|
"node": ">= 22.17.0"
|