✨ Recycle realm channels when hear realm deleted
This commit is contained in:
parent
40f752259c
commit
dd8f6d933e
@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
|
|
||||||
"git.solsynth.dev/hypernet/messaging/pkg/internal/database"
|
"git.solsynth.dev/hypernet/messaging/pkg/internal/database"
|
||||||
|
"git.solsynth.dev/hypernet/messaging/pkg/internal/models"
|
||||||
"git.solsynth.dev/hypernet/messaging/pkg/internal/services"
|
"git.solsynth.dev/hypernet/messaging/pkg/internal/services"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -43,10 +44,24 @@ func (v *Server) BroadcastEvent(ctx context.Context, in *proto.EventInfo) (*prot
|
|||||||
for _, model := range database.AutoMaintainRange {
|
for _, model := range database.AutoMaintainRange {
|
||||||
switch model.(type) {
|
switch model.(type) {
|
||||||
default:
|
default:
|
||||||
tx.Delete(model, "account_id = ?", data)
|
tx.Delete(model, "account_id = ?", data.ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tx.Commit()
|
tx.Commit()
|
||||||
|
case "realm":
|
||||||
|
var data struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
}
|
||||||
|
if err := jsoniter.Unmarshal(in.GetData(), &data); err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
var channels []models.Channel
|
||||||
|
if err := database.C.Where("realm_id = ?", data.ID).Find(&channels).Error; err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
for _, channel := range channels {
|
||||||
|
_ = services.DeleteChannel(channel)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user