fixing db wipe function order

This commit is contained in:
2026-05-27 10:46:49 +02:00
parent 5da345246b
commit 9a75577f14

View File

@ -716,10 +716,17 @@ function qdb_wipe_all_data_except_admins(PDO $pdo): array
$pdo->beginTransaction(); $pdo->beginTransaction();
try { 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['client_answers'] = (int)$pdo->exec('DELETE FROM client_answer');
$deleted['completed_questionnaires'] = (int)$pdo->exec('DELETE FROM completed_questionnaire'); $deleted['completed_questionnaires'] = (int)$pdo->exec('DELETE FROM completed_questionnaire');
$deleted['clients'] = (int)$pdo->exec('DELETE FROM client'); $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( $sess = $pdo->prepare(
"DELETE FROM session WHERE userID IN (SELECT userID FROM users WHERE role != 'admin')" "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(); $users->execute();
$deleted['users'] = $users->rowCount(); $deleted['users'] = $users->rowCount();
$deleted['coaches'] = (int)$pdo->exec('DELETE FROM coach'); $pdo->exec('PRAGMA foreign_keys = ON');
$deleted['supervisors'] = (int)$pdo->exec('DELETE FROM supervisor');
$pdo->commit(); $pdo->commit();
} catch (Throwable $e) { } catch (Throwable $e) {
if ($pdo->inTransaction()) { if ($pdo->inTransaction()) {
$pdo->rollBack(); $pdo->rollBack();
} }
try {
$pdo->exec('PRAGMA foreign_keys = ON');
} catch (Throwable $ignored) {
}
throw $e; throw $e;
} }