Clear user appointments on unregister

This commit is contained in:
daru
2022-05-28 14:28:58 +02:00
parent 864aa5695a
commit d9ab365ae4
2 changed files with 54 additions and 2 deletions

46
nuss.go
View File

@@ -256,6 +256,52 @@ func DeleteUserFromAppointment(username string, animeId int64, meeting time.Time
return &appoint, err
}
func DeleteUserFromAppointmens(username string) error {
return db.Update(
func(tx *nutsdb.Tx) error {
entries, err := tx.GetAll(bucketAppoint)
if err != nil {
return err
}
// iterate entries
for _, e := range entries {
// parse user list
users, err := parseAppointmentUserList(e.Value)
if err != nil {
return err
}
// check if user already part
for i, u := range users {
if u == username {
// delete user from list
users[i] = users[len(users)-1]
users = users[:len(users)-1]
// check if appointment needs recycling
if len(users) == 0 {
err = tx.Delete(bucketAppoint, e.Key)
if err != nil {
return err
}
} else {
newData, err := json.Marshal(users)
if err != nil {
return err
}
err = tx.Put(bucketAppoint, e.Key, newData, nutsdb.Persistent)
if err != nil {
return err
}
}
break
}
}
}
return nil
})
}
func DeleteAnime(tx *nutsdb.Tx, keyBytes []byte) error {
// clear appointments
appoints, err := tx.GetAll(bucketAppoint)