@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 CHANGED
@@ -1104,14 +1104,8 @@ const createSchemaBuilder = (db) => {
1104
1104
  };
1105
1105
  };
1106
1106
  const createHelpers = (db) => {
1107
- const createForeignKey = (tableBuilder, foreignKey, existingForeignKeys) => {
1107
+ const createForeignKey = (tableBuilder, foreignKey) => {
1108
1108
  const { name, columns, referencedColumns, referencedTable, onDelete, onUpdate } = foreignKey;
1109
- const existingForeignKey = existingForeignKeys?.find((fk) => fk.name === name);
1110
- const forceMigration = db.config.settings?.forceMigration;
1111
- if (existingForeignKey && forceMigration) {
1112
- debug$2(`Dropping existing foreign key ${name}`);
1113
- tableBuilder.dropForeign(existingForeignKey.columns, name);
1114
- }
1115
1109
  const constraint = tableBuilder.foreign(columns, name).references(referencedColumns).inTable(db.getSchemaName() ? `${db.getSchemaName()}.${referencedTable}` : referencedTable);
1116
1110
  if (onDelete) {
1117
1111
  constraint.onDelete(onDelete);
@@ -1120,17 +1114,16 @@ const createHelpers = (db) => {
1120
1114
  constraint.onUpdate(onUpdate);
1121
1115
  }
1122
1116
  };
1123
- const dropForeignKey = (tableBuilder, foreignKey) => {
1117
+ const dropForeignKey = (tableBuilder, foreignKey, existingForeignKeys) => {
1124
1118
  const { name, columns } = foreignKey;
1119
+ if (existingForeignKeys && !existingForeignKeys.some((existingIndex) => existingIndex?.name === name)) {
1120
+ debug$2(`Foreign Key ${name} not found in existing foreign keys. Skipping drop.`);
1121
+ return;
1122
+ }
1125
1123
  tableBuilder.dropForeign(columns, name);
1126
1124
  };
1127
- const createIndex = (tableBuilder, index2, existingIndexes) => {
1125
+ const createIndex = (tableBuilder, index2) => {
1128
1126
  const { type, columns, name } = index2;
1129
- const existingIndex = existingIndexes?.find((existing) => existing.name === name);
1130
- const forceMigration = db.config.settings?.forceMigration;
1131
- if (forceMigration && existingIndex) {
1132
- dropIndex2(tableBuilder, index2);
1133
- }
1134
1127
  switch (type) {
1135
1128
  case "primary": {
1136
1129
  return tableBuilder.primary(columns, { constraintName: name });
@@ -1212,12 +1205,12 @@ const createHelpers = (db) => {
1212
1205
  await schemaBuilder.alterTable(table.name, async (tableBuilder) => {
1213
1206
  for (const removedForeignKey of table.foreignKeys.removed) {
1214
1207
  debug$2(`Dropping foreign key ${removedForeignKey.name} on ${table.name}`);
1215
- dropForeignKey(tableBuilder, removedForeignKey);
1208
+ dropForeignKey(tableBuilder, removedForeignKey, existingForeignKeys);
1216
1209
  droppedForeignKeyNames.push(removedForeignKey.name);
1217
1210
  }
1218
1211
  for (const updatedForeignKey of table.foreignKeys.updated) {
1219
1212
  debug$2(`Dropping updated foreign key ${updatedForeignKey.name} on ${table.name}`);
1220
- dropForeignKey(tableBuilder, updatedForeignKey.object);
1213
+ dropForeignKey(tableBuilder, updatedForeignKey.object, existingForeignKeys);
1221
1214
  droppedForeignKeyNames.push(updatedForeignKey.object.name);
1222
1215
  }
1223
1216
  if (db.config.connection.client === "mysql") {
@@ -1257,19 +1250,19 @@ const createHelpers = (db) => {
1257
1250
  }
1258
1251
  for (const updatedForeignKey of table.foreignKeys.updated) {
1259
1252
  debug$2(`Recreating updated foreign key ${updatedForeignKey.name} on ${table.name}`);
1260
- createForeignKey(tableBuilder, updatedForeignKey.object, existingForeignKeys);
1253
+ createForeignKey(tableBuilder, updatedForeignKey.object);
1261
1254
  }
1262
1255
  for (const updatedIndex of table.indexes.updated) {
1263
1256
  debug$2(`Recreating updated index ${updatedIndex.name} on ${table.name}`);
1264
- createIndex(tableBuilder, updatedIndex.object, existingIndexes);
1257
+ createIndex(tableBuilder, updatedIndex.object);
1265
1258
  }
1266
1259
  for (const addedForeignKey of table.foreignKeys.added) {
1267
1260
  debug$2(`Creating foreign key ${addedForeignKey.name} on ${table.name}`);
1268
- createForeignKey(tableBuilder, addedForeignKey, existingForeignKeys);
1261
+ createForeignKey(tableBuilder, addedForeignKey);
1269
1262
  }
1270
1263
  for (const addedIndex of table.indexes.added) {
1271
1264
  debug$2(`Creating index ${addedIndex.name} on ${table.name}`);
1272
- createIndex(tableBuilder, addedIndex, existingIndexes);
1265
+ createIndex(tableBuilder, addedIndex);
1273
1266
  }
1274
1267
  });
1275
1268
  };
@@ -6823,6 +6816,7 @@ const createLifecyclesProvider = (db) => {
6823
6816
  timestampsLifecyclesSubscriber,
6824
6817
  modelsLifecyclesSubscriber
6825
6818
  ];
6819
+ let isLifecycleHooksDisabled = false;
6826
6820
  return {
6827
6821
  subscribe(subscriber) {
6828
6822
  assert.strict(
@@ -6835,6 +6829,12 @@ const createLifecyclesProvider = (db) => {
6835
6829
  clear() {
6836
6830
  subscribers = [];
6837
6831
  },
6832
+ disable() {
6833
+ isLifecycleHooksDisabled = true;
6834
+ },
6835
+ enable() {
6836
+ isLifecycleHooksDisabled = false;
6837
+ },
6838
6838
  createEvent(action, uid, properties, state) {
6839
6839
  const model = db.metadata.get(uid);
6840
6840
  return {
@@ -6851,6 +6851,7 @@ const createLifecyclesProvider = (db) => {
6851
6851
  * @param {Map<any, any>} states
6852
6852
  */
6853
6853
  async run(action, uid, properties, states = /* @__PURE__ */ new Map()) {
6854
+ if (isLifecycleHooksDisabled) return states;
6854
6855
  for (let i = 0; i < subscribers.length; i += 1) {
6855
6856
  const subscriber = subscribers[i];
6856
6857
  if (typeof subscriber === "function") {