Kurs löschen scheitert #28

Closed
opened 2023-02-03 11:57:25 +01:00 by savau · 8 comments
savau commented 2023-02-03 11:57:25 +01:00 (Migrated from gitlab.uniworx.de)

Problem: Ein Kurs soll gelöscht werden. Zuvor wurden alle Teilnehmer aus den Tutorien entfernt und vom Kurs abgemeldet (TODO: einfacher gestalten!) Die Aktion Kurs-löschen liefert die Fehlermeldung:

Ein interner Fehler ist aufgetreten
SqlError {sqlState = "23503", sqlExecStatus = FatalError, sqlErrorMsg = "update or delete on table "course" violates foreign key constraint "course_participant_course_fkey" on table "course_participant"", sqlErrorDetail = "Key (id)=(10) is still referenced from table "course_participant".", sqlErrorHint = ""}

Ein Blick in die Tabelle "course_participant" offenbart, dass es trotz Abmeldung und leerer Teilnehmerliste tatsächlich noch Teilnehmer gibt:
image

Fragen:

  • Reicht es im Modell cascades hinzuzufügen?
  • Warum wurden die Teilnehmer nicht vollständig abgemeldet?
  • Was bedeutet hier inactive? A: Anstatt löschen um Noten zu erhalten
  • Betrifft der Fehler dann nicht auch Uni2work? A: JA!
Problem: Ein Kurs soll gelöscht werden. Zuvor wurden alle Teilnehmer aus den Tutorien entfernt und vom Kurs abgemeldet (TODO: einfacher gestalten!) Die Aktion Kurs-löschen liefert die Fehlermeldung: > Ein interner Fehler ist aufgetreten > SqlError {sqlState = "23503", sqlExecStatus = FatalError, sqlErrorMsg = "update or delete on table \"course\" violates foreign key constraint \"course_participant_course_fkey\" on table \"course_participant\"", sqlErrorDetail = "Key (id)=(10) is still referenced from table \"course_participant\".", sqlErrorHint = ""} Ein Blick in die Tabelle "course_participant" offenbart, dass es trotz Abmeldung und leerer Teilnehmerliste tatsächlich noch Teilnehmer gibt: ![image](/uploads/d9023b7ec27793e0cd701af6ceb78ff2/image.png) **Fragen:** - [x] Reicht es im Modell cascades hinzuzufügen? - [x] Warum wurden die Teilnehmer nicht vollständig abgemeldet? - [x] Was bedeutet hier `inactive`? **A:** Anstatt löschen um Noten zu erhalten - [ ] Betrifft der Fehler dann nicht auch Uni2work? **A:** JA!
savau commented 2023-02-03 11:57:25 +01:00 (Migrated from gitlab.uniworx.de)

assigned to @vaupel

By Steffen Jost on 2023-02-03T11:57:25 (imported from GitLab)

assigned to @vaupel *By Steffen Jost on 2023-02-03T11:57:25 (imported from GitLab)*
savau commented 2023-03-24 10:06:57 +01:00 (Migrated from gitlab.uniworx.de)

mentioned in issue #2

By Steffen Jost on 2023-03-24T10:06:57 (imported from GitLab)

mentioned in issue #2 *By Steffen Jost on 2023-03-24T10:06:57 (imported from GitLab)*
savau commented 2023-03-24 11:13:44 +01:00 (Migrated from gitlab.uniworx.de)

marked the checklist item Warum wurden die Teilnehmer nicht vollständig abgemeldet? as completed

By Steffen Jost on 2023-03-24T11:13:44 (imported from GitLab)

marked the checklist item **Warum wurden die Teilnehmer nicht vollständig abgemeldet?** as completed *By Steffen Jost on 2023-03-24T11:13:44 (imported from GitLab)*
jost commented 2023-05-22 10:00:59 +02:00 (Migrated from gitlab.uniworx.de)

mentioned in issue #70

mentioned in issue #70
jost commented 2023-06-20 13:04:13 +02:00 (Migrated from gitlab.uniworx.de)

@savau Ich habe jetzt als Lösung einfach OnDeleteCascade bei CourseParticipant hinzugefügt, da ich den DelteHandler nicht verstanden habe.

Der richtige Weg wäre gewesen, vorher zu kontrollieren, ob alle Teilnehmer pseudo-gelöscht sind, korrekt?

@savau Ich habe jetzt als Lösung einfach `OnDeleteCascade` bei CourseParticipant hinzugefügt, da ich den [DelteHandler](src/Handler/Utils/Delete.hs) nicht verstanden habe. Der richtige Weg wäre gewesen, vorher zu kontrollieren, ob alle Teilnehmer pseudo-gelöscht sind, korrekt?
jost commented 2023-06-20 16:11:55 +02:00 (Migrated from gitlab.uniworx.de)

marked the checklist item Reicht es im Modell cascades hinzuzufügen? as completed

marked the checklist item **Reicht es im Modell cascades hinzuzufügen?** as completed
jost commented 2023-06-20 16:14:56 +02:00 (Migrated from gitlab.uniworx.de)

Lösung:

  • OnDeleteCascade wurde im Modell hinzugefügt
  • Es wird aber vorher geprüft ob:
    • keine aktiven Teilnehmer existieren
    • keine assoziierten Prüfungen existieren

In den beiden Problemfällen wird eine verständlich Fehlermeldung ausgegeben.

  • Teilnehmer können von Kursartverwaltern auf inaktiv gesetzt werden (Teilnehmer entfernen).
  • Prüfungen können derzeit nicht entfernt werden
# Lösung: - OnDeleteCascade wurde im Modell hinzugefügt - Es wird aber vorher geprüft ob: * keine _aktiven_ Teilnehmer existieren * keine assoziierten Prüfungen existieren In den beiden Problemfällen wird eine verständlich Fehlermeldung ausgegeben. - Teilnehmer können von Kursartverwaltern auf inaktiv gesetzt werden (Teilnehmer entfernen). - Prüfungen können derzeit nicht entfernt werden
jost (Migrated from gitlab.uniworx.de) closed this issue 2023-06-20 17:00:32 +02:00
jost commented 2023-07-03 12:53:17 +02:00 (Migrated from gitlab.uniworx.de)

mentioned in commit 9dfd91b2f8

mentioned in commit 9dfd91b2f864424cf940259890afb8bf8cb0fdcf
This repo is archived. You cannot comment on issues.
No project
No Assignees
1 Participants
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: fraport/fradrive-old#28
No description provided.