From 2246e009486fc412b09329bd696ed1c2a55c6291 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Thu, 2 Sep 2021 02:25:18 +0200 Subject: [PATCH] fic: Fix exercice deletion --- libfic/db.go | 2 +- libfic/exercice.go | 2 ++ libfic/flag_key.go | 2 ++ libfic/mcq.go | 2 ++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libfic/db.go b/libfic/db.go index f6c130e4..81789b26 100644 --- a/libfic/db.go +++ b/libfic/db.go @@ -261,7 +261,7 @@ CREATE TABLE IF NOT EXISTS exercice_hints_omcq_deps( id_hint INTEGER NOT NULL, id_mcq_dep INTEGER NOT NULL, FOREIGN KEY(id_hint) REFERENCES exercice_hints(id_hint), - FOREIGN KEY(id_mcq_dep) REFERENCES exercice_flags(id_flag) + FOREIGN KEY(id_mcq_dep) REFERENCES exercice_mcq(id_mcq) ) DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin; `); err != nil { return err diff --git a/libfic/exercice.go b/libfic/exercice.go index ce44e1c7..813c439b 100644 --- a/libfic/exercice.go +++ b/libfic/exercice.go @@ -243,6 +243,8 @@ func (e Exercice) DeleteCascade() (int64, error) { return 0, err } else if _, err := DBExec("DELETE FROM exercice_hints_okey_deps WHERE id_hint IN (SELECT id_hint FROM exercice_hints WHERE id_exercice = ?)", e.Id); err != nil { return 0, err + } else if _, err := DBExec("DELETE FROM exercice_hints_omcq_deps WHERE id_hint IN (SELECT id_hint FROM exercice_hints WHERE id_exercice = ?)", e.Id); err != nil { + return 0, err } else if _, err := DBExec("DELETE FROM exercice_hints WHERE id_exercice = ?", e.Id); err != nil { return 0, err } else if _, err := DBExec("DELETE FROM exercice_flags_deps WHERE id_flag IN (SELECT id_flag FROM exercice_flags WHERE id_exercice = ?)", e.Id); err != nil { diff --git a/libfic/flag_key.go b/libfic/flag_key.go index d52ec382..b05e9f3b 100644 --- a/libfic/flag_key.go +++ b/libfic/flag_key.go @@ -198,6 +198,8 @@ func (k FlagKey) Delete() (int64, error) { return 0, err } else if _, err := DBExec("DELETE FROM exercice_flags_deps WHERE id_flag = ? OR id_flag_dep = ?", k.Id, k.Id); err != nil { return 0, err + } else if _, err := DBExec("DELETE FROM exercice_hints_okey_deps WHERE id_flag_dep = ?", k.Id); err != nil { + return 0, err } else if _, err := DBExec("DELETE FROM flag_choices WHERE id_flag = ?", k.Id); err != nil { return 0, err } else if res, err := DBExec("DELETE FROM exercice_flags WHERE id_flag = ?", k.Id); err != nil { diff --git a/libfic/mcq.go b/libfic/mcq.go index c47ab504..a7a12514 100644 --- a/libfic/mcq.go +++ b/libfic/mcq.go @@ -172,6 +172,8 @@ func (m MCQ) Delete() (int64, error) { return 0, err } else if _, err := DBExec("DELETE FROM exercice_flags_omcq_deps WHERE id_mcq_dep = ?", m.Id); err != nil { return 0, err + } else if _, err := DBExec("DELETE FROM exercice_hints_omcq_deps WHERE id_mcq_dep = ?", m.Id); err != nil { + return 0, err } else if res, err := DBExec("DELETE FROM exercice_mcq WHERE id_mcq = ?", m.Id); err != nil { return 0, err } else if nb, err := res.RowsAffected(); err != nil {