DELETE watching

This commit is contained in:
daru
2022-04-16 01:14:34 +02:00
parent 6ba9176ca7
commit 940fc5008d
3 changed files with 78 additions and 36 deletions

45
nuss.go
View File

@@ -3,6 +3,7 @@ package main
import (
"encoding/json"
"errors"
"fmt"
"github.com/xujiajun/nutsdb"
)
@@ -75,6 +76,50 @@ func AddUserToAnime(username string, userId, animeId int64) (*Anime, error) {
return &anime, err
}
func DeleteUserFromAnime(username string, userId, animeId int64) (*Anime, error) {
var anime Anime
err := db.Update(
func(tx *nutsdb.Tx) error {
keyBytes := Int64ToByte(animeId)
e, err := tx.Get(bucketAnime, keyBytes)
var users []WatchUser
if err != nil {
users = make([]WatchUser, 0)
} else {
// parse user list
users, err = parseUserList(e.Value)
if err != nil {
return err
}
}
// check if user already part
for i, u := range users {
// early terminate
if u.MalID == userId {
// delete user from list
users[i] = users[len(users)-1]
users = users[:len(users)-1]
// check if anime needs recycling
anime = Anime{
Anime: animeId,
Users: users,
}
if len(users) == 0 {
return tx.Delete(bucketAnime, keyBytes)
}
newData, err := json.Marshal(users)
if err != nil {
return err
}
return tx.Put(bucketAnime, keyBytes, newData, nutsdb.Persistent)
}
}
return fmt.Errorf("%s %d schaut nicht %d", username, userId, animeId)
})
return &anime, err
}
func ReadAnimes() ([]Anime, error) {
var animes []Anime
err := db.View(