diff --git a/lib/dev_fixture.php b/lib/dev_fixture.php index ea344f2..80c5a49 100644 --- a/lib/dev_fixture.php +++ b/lib/dev_fixture.php @@ -716,10 +716,17 @@ function qdb_wipe_all_data_except_admins(PDO $pdo): array $pdo->beginTransaction(); try { + // Interview data references clients/coaches; coach references supervisor. + // Disable FK checks for this bulk wipe (same pattern as questionnaire delete). + $pdo->exec('PRAGMA foreign_keys = OFF'); + $deleted['client_answers'] = (int)$pdo->exec('DELETE FROM client_answer'); $deleted['completed_questionnaires'] = (int)$pdo->exec('DELETE FROM completed_questionnaire'); $deleted['clients'] = (int)$pdo->exec('DELETE FROM client'); + $deleted['coaches'] = (int)$pdo->exec('DELETE FROM coach'); + $deleted['supervisors'] = (int)$pdo->exec('DELETE FROM supervisor'); + $sess = $pdo->prepare( "DELETE FROM session WHERE userID IN (SELECT userID FROM users WHERE role != 'admin')" ); @@ -730,14 +737,16 @@ function qdb_wipe_all_data_except_admins(PDO $pdo): array $users->execute(); $deleted['users'] = $users->rowCount(); - $deleted['coaches'] = (int)$pdo->exec('DELETE FROM coach'); - $deleted['supervisors'] = (int)$pdo->exec('DELETE FROM supervisor'); - + $pdo->exec('PRAGMA foreign_keys = ON'); $pdo->commit(); } catch (Throwable $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } + try { + $pdo->exec('PRAGMA foreign_keys = ON'); + } catch (Throwable $ignored) { + } throw $e; }