@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 +1 -0
- package/package.json +2 -2
- package/schema/DatabaseTable.js +5 -0
- package/schema/SchemaComparator.js +3 -0
- package/schema/SchemaHelper.js +1 -0
- package/schema/SqlSchemaGenerator.js +3 -0
- package/typings.d.ts +2 -1
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.
|
|
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.
|
|
69
|
+
"@mikro-orm/core": "6.1.13-dev.8"
|
|
70
70
|
}
|
|
71
71
|
}
|
package/schema/DatabaseTable.js
CHANGED
|
@@ -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]);
|
package/schema/SchemaHelper.js
CHANGED
|
@@ -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[];
|