@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.mjs CHANGED
@@ -1072,14 +1072,8 @@ const createSchemaBuilder = (db) => {
1072
1072
  };
1073
1073
  };
1074
1074
  const createHelpers = (db) => {
1075
- const createForeignKey = (tableBuilder, foreignKey, existingForeignKeys) => {
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, existingIndexes) => {
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, existingForeignKeys);
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, existingIndexes);
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, existingForeignKeys);
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, existingIndexes);
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") {