MAL progress fetch

This commit is contained in:
daru
2022-04-18 02:53:09 +02:00
parent 8fe7bf4d4b
commit 994bccb068
7 changed files with 125 additions and 18 deletions

35
nuss.go
View File

@@ -4,6 +4,7 @@ import (
"encoding/json"
"errors"
"fmt"
"time"
"github.com/xujiajun/nutsdb"
)
@@ -30,7 +31,7 @@ func SaveUser(user *UserData) error {
return err
}
func AddUserToAnime(username string, userId, animeId int64) (*AnimeUser, error) {
func AddUserToAnime(username string, userId, animeId int64, progress int, updated time.Time) (*AnimeUser, error) {
var anime AnimeUser
err := db.Update(
func(tx *nutsdb.Tx) error {
@@ -62,6 +63,8 @@ func AddUserToAnime(username string, userId, animeId int64) (*AnimeUser, error)
users = append(users, WatchUser{
Username: username,
MalID: userId,
Progress: progress,
Updated: updated,
})
anime = AnimeUser{
Anime: animeId,
@@ -164,6 +167,36 @@ func DeleteUserFromAnimes(userId int64) error {
})
}
func UpdateUserAnimeProgress(animeId, userId int64, progress int, updated time.Time) error {
return db.Update(
func(tx *nutsdb.Tx) error {
keyBytes := Int64ToByte(animeId)
e, err := tx.Get(bucketAnime, keyBytes)
if err != nil {
return err
}
// parse user list
users, err := parseWatchUserList(e.Value)
if err != nil {
return err
}
// find user
for i, u := range users {
// early terminate
if u.MalID == userId {
users[i].Progress = progress
users[i].Updated = updated
newData, err := json.Marshal(users)
if err != nil {
return err
}
return tx.Put(bucketAnime, keyBytes, newData, nutsdb.Persistent)
}
}
return fmt.Errorf("%d schaut nicht %d", userId, animeId)
})
}
func ReadRegisteredUsers() ([]UserData, error) {
var users []UserData
err := db.View(