From bb2c400b66c3c7d31ae0a6b07859afa650dae51c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9F=83=E6=8B=89?= Date: Sun, 2 Jun 2024 11:26:10 +0800 Subject: [PATCH] fix: pod delete relations --- internal/model/challenge.go | 7 ++++++- internal/model/pod.go | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/internal/model/challenge.go b/internal/model/challenge.go index d3b26ab9..3e48c949 100644 --- a/internal/model/challenge.go +++ b/internal/model/challenge.go @@ -74,8 +74,13 @@ func (c *Challenge) BeforeDelete(db *gorm.DB) (err error) { db.Table("flags").Where("challenge_id = ?", c.ID).Delete(&Flag{}) db.Table("ports").Where("challenge_id = ?", c.ID).Delete(&Port{}) db.Table("envs").Where("challenge_id = ?", c.ID).Delete(&Env{}) - db.Table("pods").Where("challenge_id = ?", c.ID).Delete(&Pod{}) db.Table("submissions").Where("challenge_id = ?", c.ID).Delete(&Submission{}) db.Table("game_challenges").Where("challenge_id = ?", c.ID).Delete(&GameChallenge{}) + + var pods []Pod + db.Table("pods").Where("challenge_id = ?", c.ID).Find(&pods) + for _, pod := range pods { + db.Table("pods").Where("id = ?", pod.ID).Delete(&Pod{}) + } return nil } diff --git a/internal/model/pod.go b/internal/model/pod.go index bc2e5900..6b6cc7a3 100644 --- a/internal/model/pod.go +++ b/internal/model/pod.go @@ -1,5 +1,7 @@ package model +import "gorm.io/gorm" + type Pod struct { ID uint `json:"id"` GameID *uint `gorm:"index;null;default:null" json:"game_id"` @@ -19,3 +21,9 @@ func (p *Pod) Simplify() { p.Challenge.Simplify() } } + +func (p *Pod) BeforeDelete(db *gorm.DB) error { + db.Table("nats").Where("pod_id = ?", p.ID).Delete(&Nat{}) + db.Table("flag_gens").Where("pod_id = ?", p.ID).Delete(&FlagGen{}) + return nil +}