@mikro-orm/knex 6.5.10-dev.0 → 6.5.10-dev.10

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.
@@ -21,7 +21,7 @@ class PostgreSqlTableCompiler extends pg_tablecompiler_1.default {
21
21
  }
22
22
  }
23
23
  addColumn(col) {
24
- const options = this.ormConfig.get('schemaGenerator');
24
+ const options = this.ormConfig?.get('schemaGenerator') ?? {};
25
25
  const quotedTableName = this.tableName();
26
26
  const type = col.getColumnType();
27
27
  const colName = this.client.wrapIdentifier(col.getColumnName(), col.columnBuilder.queryContext());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikro-orm/knex",
3
- "version": "6.5.10-dev.0",
3
+ "version": "6.5.10-dev.10",
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
  "main": "index.js",
6
6
  "module": "index.mjs",
@@ -66,7 +66,7 @@
66
66
  "@mikro-orm/core": "^6.5.9"
67
67
  },
68
68
  "peerDependencies": {
69
- "@mikro-orm/core": "6.5.10-dev.0",
69
+ "@mikro-orm/core": "6.5.10-dev.10",
70
70
  "better-sqlite3": "*",
71
71
  "libsql": "*",
72
72
  "mariadb": "*"
@@ -572,7 +572,7 @@ class QueryBuilder {
572
572
  return this._query.qb = this.knex.raw(qb.toSQL().toNative().sql + ' cascade');
573
573
  }
574
574
  if (this.lockMode) {
575
- this.helper.getLockSQL(qb, this.lockMode, this.lockTables);
575
+ this.helper.getLockSQL(qb, this.lockMode, this.lockTables, this._joins);
576
576
  }
577
577
  this.helper.finalize(type, qb, this.mainAlias.metadata, this._data, this._returning);
578
578
  this.clearRawFragmentsCache();
@@ -51,7 +51,7 @@ export declare class QueryBuilderHelper {
51
51
  getQueryOrderFromObject(type: QueryType, orderBy: FlatQueryOrderMap, populate: Dictionary<string>): string[];
52
52
  finalize(type: QueryType, qb: Knex.QueryBuilder, meta?: EntityMetadata, data?: Dictionary, returning?: Field<any>[]): void;
53
53
  splitField<T>(field: EntityKey<T>, greedyAlias?: boolean): [string, EntityKey<T>, string | undefined];
54
- getLockSQL(qb: Knex.QueryBuilder, lockMode: LockMode, lockTables?: string[]): void;
54
+ getLockSQL(qb: Knex.QueryBuilder, lockMode: LockMode, lockTables?: string[], joinsMap?: Dictionary<JoinOptions>): void;
55
55
  updateVersionProperty(qb: Knex.QueryBuilder, data: Dictionary): void;
56
56
  private prefix;
57
57
  private appendGroupCondition;
@@ -629,11 +629,18 @@ class QueryBuilderHelper {
629
629
  const fromField = parts.join('.');
630
630
  return [fromAlias, fromField, ref];
631
631
  }
632
- getLockSQL(qb, lockMode, lockTables = []) {
632
+ getLockSQL(qb, lockMode, lockTables = [], joinsMap) {
633
633
  const meta = this.metadata.find(this.entityName);
634
634
  if (lockMode === core_1.LockMode.OPTIMISTIC && meta && !meta.versionProperty) {
635
635
  throw core_1.OptimisticLockError.lockFailed(this.entityName);
636
636
  }
637
+ if (lockMode !== core_1.LockMode.OPTIMISTIC && lockTables.length === 0 && joinsMap) {
638
+ const joins = Object.values(joinsMap);
639
+ const innerJoins = joins.filter(join => [enums_1.JoinType.innerJoin, enums_1.JoinType.innerJoinLateral, enums_1.JoinType.nestedInnerJoin].includes(join.type));
640
+ if (joins.length > innerJoins.length) {
641
+ lockTables.push(this.alias, ...innerJoins.map(join => join.alias));
642
+ }
643
+ }
637
644
  switch (lockMode) {
638
645
  case core_1.LockMode.PESSIMISTIC_READ: return void qb.forShare(...lockTables);
639
646
  case core_1.LockMode.PESSIMISTIC_WRITE: return void qb.forUpdate(...lockTables);