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 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 { func DeleteAnime(tx *nutsdb.Tx, keyBytes []byte) error {
// clear appointments // clear appointments
appoints, err := tx.GetAll(bucketAppoint) appoints, err := tx.GetAll(bucketAppoint)

10
ober.go
View File

@@ -484,8 +484,14 @@ func UnRegister(ctx *fasthttp.RequestCtx) {
err = DeleteUserFromAnimes(register.MalID) err = DeleteUserFromAnimes(register.MalID)
if err != nil { if err != nil {
if err != nutsdb.ErrBucketEmpty { if err != nutsdb.ErrBucketEmpty {
ctx.WriteString(err.Error()) addErrorToCtx(ctx, err)
ctx.SetStatusCode(fasthttp.StatusNotFound) return
}
}
err = DeleteUserFromAppointmens(register.Username)
if err != nil {
if err != nutsdb.ErrBucketEmpty {
addErrorToCtx(ctx, err)
return return
} }
} }