mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-15 20:59:53 +01:00
Clear user appointments on unregister
This commit is contained in:
46
nuss.go
46
nuss.go
@@ -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
10
ober.go
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user