@strapi/database 5.7.0 → 5.8.1
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.js +21 -20
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -20
- package/dist/index.mjs.map +1 -1
- package/dist/lifecycles/index.d.ts +2 -0
- package/dist/lifecycles/index.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/index.mjs
CHANGED
|
@@ -1072,14 +1072,8 @@ const createSchemaBuilder = (db) => {
|
|
|
1072
1072
|
};
|
|
1073
1073
|
};
|
|
1074
1074
|
const createHelpers = (db) => {
|
|
1075
|
-
const createForeignKey = (tableBuilder, foreignKey
|
|
1075
|
+
const createForeignKey = (tableBuilder, foreignKey) => {
|
|
1076
1076
|
const { name, columns, referencedColumns, referencedTable, onDelete, onUpdate } = foreignKey;
|
|
1077
|
-
const existingForeignKey = existingForeignKeys?.find((fk) => fk.name === name);
|
|
1078
|
-
const forceMigration = db.config.settings?.forceMigration;
|
|
1079
|
-
if (existingForeignKey && forceMigration) {
|
|
1080
|
-
debug$2(`Dropping existing foreign key ${name}`);
|
|
1081
|
-
tableBuilder.dropForeign(existingForeignKey.columns, name);
|
|
1082
|
-
}
|
|
1083
1077
|
const constraint = tableBuilder.foreign(columns, name).references(referencedColumns).inTable(db.getSchemaName() ? `${db.getSchemaName()}.${referencedTable}` : referencedTable);
|
|
1084
1078
|
if (onDelete) {
|
|
1085
1079
|
constraint.onDelete(onDelete);
|
|
@@ -1088,17 +1082,16 @@ const createHelpers = (db) => {
|
|
|
1088
1082
|
constraint.onUpdate(onUpdate);
|
|
1089
1083
|
}
|
|
1090
1084
|
};
|
|
1091
|
-
const dropForeignKey = (tableBuilder, foreignKey) => {
|
|
1085
|
+
const dropForeignKey = (tableBuilder, foreignKey, existingForeignKeys) => {
|
|
1092
1086
|
const { name, columns } = foreignKey;
|
|
1087
|
+
if (existingForeignKeys && !existingForeignKeys.some((existingIndex) => existingIndex?.name === name)) {
|
|
1088
|
+
debug$2(`Foreign Key ${name} not found in existing foreign keys. Skipping drop.`);
|
|
1089
|
+
return;
|
|
1090
|
+
}
|
|
1093
1091
|
tableBuilder.dropForeign(columns, name);
|
|
1094
1092
|
};
|
|
1095
|
-
const createIndex = (tableBuilder, index2
|
|
1093
|
+
const createIndex = (tableBuilder, index2) => {
|
|
1096
1094
|
const { type, columns, name } = index2;
|
|
1097
|
-
const existingIndex = existingIndexes?.find((existing) => existing.name === name);
|
|
1098
|
-
const forceMigration = db.config.settings?.forceMigration;
|
|
1099
|
-
if (forceMigration && existingIndex) {
|
|
1100
|
-
dropIndex2(tableBuilder, index2);
|
|
1101
|
-
}
|
|
1102
1095
|
switch (type) {
|
|
1103
1096
|
case "primary": {
|
|
1104
1097
|
return tableBuilder.primary(columns, { constraintName: name });
|
|
@@ -1180,12 +1173,12 @@ const createHelpers = (db) => {
|
|
|
1180
1173
|
await schemaBuilder.alterTable(table.name, async (tableBuilder) => {
|
|
1181
1174
|
for (const removedForeignKey of table.foreignKeys.removed) {
|
|
1182
1175
|
debug$2(`Dropping foreign key ${removedForeignKey.name} on ${table.name}`);
|
|
1183
|
-
dropForeignKey(tableBuilder, removedForeignKey);
|
|
1176
|
+
dropForeignKey(tableBuilder, removedForeignKey, existingForeignKeys);
|
|
1184
1177
|
droppedForeignKeyNames.push(removedForeignKey.name);
|
|
1185
1178
|
}
|
|
1186
1179
|
for (const updatedForeignKey of table.foreignKeys.updated) {
|
|
1187
1180
|
debug$2(`Dropping updated foreign key ${updatedForeignKey.name} on ${table.name}`);
|
|
1188
|
-
dropForeignKey(tableBuilder, updatedForeignKey.object);
|
|
1181
|
+
dropForeignKey(tableBuilder, updatedForeignKey.object, existingForeignKeys);
|
|
1189
1182
|
droppedForeignKeyNames.push(updatedForeignKey.object.name);
|
|
1190
1183
|
}
|
|
1191
1184
|
if (db.config.connection.client === "mysql") {
|
|
@@ -1225,19 +1218,19 @@ const createHelpers = (db) => {
|
|
|
1225
1218
|
}
|
|
1226
1219
|
for (const updatedForeignKey of table.foreignKeys.updated) {
|
|
1227
1220
|
debug$2(`Recreating updated foreign key ${updatedForeignKey.name} on ${table.name}`);
|
|
1228
|
-
createForeignKey(tableBuilder, updatedForeignKey.object
|
|
1221
|
+
createForeignKey(tableBuilder, updatedForeignKey.object);
|
|
1229
1222
|
}
|
|
1230
1223
|
for (const updatedIndex of table.indexes.updated) {
|
|
1231
1224
|
debug$2(`Recreating updated index ${updatedIndex.name} on ${table.name}`);
|
|
1232
|
-
createIndex(tableBuilder, updatedIndex.object
|
|
1225
|
+
createIndex(tableBuilder, updatedIndex.object);
|
|
1233
1226
|
}
|
|
1234
1227
|
for (const addedForeignKey of table.foreignKeys.added) {
|
|
1235
1228
|
debug$2(`Creating foreign key ${addedForeignKey.name} on ${table.name}`);
|
|
1236
|
-
createForeignKey(tableBuilder, addedForeignKey
|
|
1229
|
+
createForeignKey(tableBuilder, addedForeignKey);
|
|
1237
1230
|
}
|
|
1238
1231
|
for (const addedIndex of table.indexes.added) {
|
|
1239
1232
|
debug$2(`Creating index ${addedIndex.name} on ${table.name}`);
|
|
1240
|
-
createIndex(tableBuilder, addedIndex
|
|
1233
|
+
createIndex(tableBuilder, addedIndex);
|
|
1241
1234
|
}
|
|
1242
1235
|
});
|
|
1243
1236
|
};
|
|
@@ -6791,6 +6784,7 @@ const createLifecyclesProvider = (db) => {
|
|
|
6791
6784
|
timestampsLifecyclesSubscriber,
|
|
6792
6785
|
modelsLifecyclesSubscriber
|
|
6793
6786
|
];
|
|
6787
|
+
let isLifecycleHooksDisabled = false;
|
|
6794
6788
|
return {
|
|
6795
6789
|
subscribe(subscriber) {
|
|
6796
6790
|
strict(
|
|
@@ -6803,6 +6797,12 @@ const createLifecyclesProvider = (db) => {
|
|
|
6803
6797
|
clear() {
|
|
6804
6798
|
subscribers = [];
|
|
6805
6799
|
},
|
|
6800
|
+
disable() {
|
|
6801
|
+
isLifecycleHooksDisabled = true;
|
|
6802
|
+
},
|
|
6803
|
+
enable() {
|
|
6804
|
+
isLifecycleHooksDisabled = false;
|
|
6805
|
+
},
|
|
6806
6806
|
createEvent(action, uid, properties, state) {
|
|
6807
6807
|
const model = db.metadata.get(uid);
|
|
6808
6808
|
return {
|
|
@@ -6819,6 +6819,7 @@ const createLifecyclesProvider = (db) => {
|
|
|
6819
6819
|
* @param {Map<any, any>} states
|
|
6820
6820
|
*/
|
|
6821
6821
|
async run(action, uid, properties, states = /* @__PURE__ */ new Map()) {
|
|
6822
|
+
if (isLifecycleHooksDisabled) return states;
|
|
6822
6823
|
for (let i = 0; i < subscribers.length; i += 1) {
|
|
6823
6824
|
const subscriber = subscribers[i];
|
|
6824
6825
|
if (typeof subscriber === "function") {
|