@mikro-orm/knex 6.1.13-dev.6 → 6.1.13-dev.8

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/index.mjs CHANGED
@@ -56,6 +56,7 @@ export const DateType = mod.DateType;
56
56
  export const DeadlockException = mod.DeadlockException;
57
57
  export const DecimalType = mod.DecimalType;
58
58
  export const DefaultLogger = mod.DefaultLogger;
59
+ export const DeferMode = mod.DeferMode;
59
60
  export const DoubleType = mod.DoubleType;
60
61
  export const DriverException = mod.DriverException;
61
62
  export const EagerProps = mod.EagerProps;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikro-orm/knex",
3
- "version": "6.1.13-dev.6",
3
+ "version": "6.1.13-dev.8",
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,6 +66,6 @@
66
66
  "@mikro-orm/core": "^6.1.12"
67
67
  },
68
68
  "peerDependencies": {
69
- "@mikro-orm/core": "6.1.13-dev.6"
69
+ "@mikro-orm/core": "6.1.13-dev.8"
70
70
  }
71
71
  }
@@ -123,6 +123,9 @@ class DatabaseTable {
123
123
  if (prop.updateRule || prop.cascade.includes(core_1.Cascade.PERSIST) || prop.cascade.includes(core_1.Cascade.ALL)) {
124
124
  this.foreignKeys[constraintName].updateRule = prop.updateRule || 'cascade';
125
125
  }
126
+ if (prop.deferMode) {
127
+ this.foreignKeys[constraintName].deferMode = prop.deferMode;
128
+ }
126
129
  }
127
130
  if (prop.index) {
128
131
  this.indexes.push({
@@ -473,6 +476,7 @@ class DatabaseTable {
473
476
  fkOptions.referencedColumnNames = fk.referencedColumnNames;
474
477
  fkOptions.updateRule = fk.updateRule?.toLowerCase();
475
478
  fkOptions.deleteRule = fk.deleteRule?.toLowerCase();
479
+ fkOptions.deferMode = fk.deferMode;
476
480
  fkOptions.columnTypes = fk.columnNames.map(c => this.getColumn(c).type);
477
481
  const columnOptions = {};
478
482
  if (fk.columnNames.length === 1) {
@@ -520,6 +524,7 @@ class DatabaseTable {
520
524
  fkOptions.referencedColumnNames = fk.referencedColumnNames;
521
525
  fkOptions.updateRule = fk.updateRule?.toLowerCase();
522
526
  fkOptions.deleteRule = fk.deleteRule?.toLowerCase();
527
+ fkOptions.deferMode = fk.deferMode;
523
528
  }
524
529
  return {
525
530
  name: prop,
@@ -348,6 +348,9 @@ class SchemaComparator {
348
348
  if (key1.referencedTableName !== key2.referencedTableName) {
349
349
  return true;
350
350
  }
351
+ if (key1.deferMode !== key2.deferMode) {
352
+ return true;
353
+ }
351
354
  const defaultRule = ['restrict', 'no action'];
352
355
  const rule = (key, method) => {
353
356
  return (key[method] ?? defaultRule[0]).toLowerCase().replace(defaultRule[1], defaultRule[0]);
@@ -199,6 +199,7 @@ class SchemaHelper {
199
199
  referencedColumnNames: [fk.referenced_column_name],
200
200
  updateRule: fk.update_rule.toLowerCase(),
201
201
  deleteRule: fk.delete_rule.toLowerCase(),
202
+ deferMode: fk.defer_mode,
202
203
  };
203
204
  }
204
205
  return ret;
@@ -272,6 +272,9 @@ class SqlSchemaGenerator extends core_1.AbstractSchemaGenerator {
272
272
  if (foreignKey.deleteRule) {
273
273
  builder.onDelete(foreignKey.deleteRule);
274
274
  }
275
+ if (foreignKey.deferMode) {
276
+ builder.deferrable(foreignKey.deferMode);
277
+ }
275
278
  }
276
279
  /**
277
280
  * We need to drop foreign keys first for all tables to allow dropping PK constraints.
package/typings.d.ts CHANGED
@@ -1,5 +1,5 @@
1
+ import type { DeferMode, CheckCallback, Dictionary, EntityProperty, GroupOperator, RawQueryFragment, QBFilterQuery, QueryOrderMap, Type, QueryFlag, AnyEntity, EntityName } from '@mikro-orm/core';
1
2
  import type { Knex } from 'knex';
2
- import type { CheckCallback, Dictionary, EntityProperty, GroupOperator, RawQueryFragment, QBFilterQuery, QueryOrderMap, Type, QueryFlag, AnyEntity, EntityName } from '@mikro-orm/core';
3
3
  import type { JoinType, QueryType } from './query/enums';
4
4
  import type { DatabaseSchema, DatabaseTable } from './schema';
5
5
  export interface Table {
@@ -57,6 +57,7 @@ export interface ForeignKey {
57
57
  referencedColumnNames: string[];
58
58
  updateRule?: string;
59
59
  deleteRule?: string;
60
+ deferMode?: DeferMode;
60
61
  }
61
62
  export interface IndexDef {
62
63
  columnNames: string[];