POST watching

This commit is contained in:
daru
2022-04-15 12:13:23 +02:00
parent 25259653e7
commit be195bed30
6 changed files with 257 additions and 143 deletions

56
nuss.go
View File

@@ -1,10 +1,8 @@
package main
import (
"encoding/binary"
"encoding/json"
"errors"
"fmt"
"github.com/xujiajun/nutsdb"
)
@@ -31,6 +29,41 @@ func SaveUser(user *UserData) error {
return err
}
func AddUserToAnime(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, 1)
} else {
// parse user list
users, err = parseUserList(e.Value)
if err != nil {
return err
}
}
// add user
users = append(users, WatchUser{
Username: username,
MalID: userId,
})
anime = Anime{
Anime: animeId,
Users: users,
}
newData, err := json.Marshal(users)
if err != nil {
return err
}
return tx.Put(bucketAnime, keyBytes, newData, nutsdb.Persistent)
})
return &anime, err
}
func ReadAnimes() ([]Anime, error) {
var animes []Anime
err := db.View(
@@ -41,20 +74,19 @@ func ReadAnimes() ([]Anime, error) {
}
animes = make([]Anime, len(entries))
// iterate entries
for _, entry := range entries {
for _, e := range entries {
// decode anime list
malId, c := binary.Varint(entry.Key)
if c <= 0 {
return fmt.Errorf("int64 decode error: %s %s", entry.Key, entry.Value)
animeId, err := BytesToInt64(e.Key)
if err != nil {
return err
}
// parse user list
var users []WatchUser
err = json.Unmarshal(entry.Value, &users)
users, err := parseUserList(e.Value)
if err != nil {
return err
}
anime := Anime{
Anime: malId,
Anime: animeId,
Users: users,
}
animes = append(animes, anime)
@@ -102,3 +134,9 @@ func DbDelete(bucket, key string, val []byte) error {
return tx.Delete(bucket, keyBytes)
})
}
func parseUserList(data []byte) ([]WatchUser, error) {
var users []WatchUser
err := json.Unmarshal(data, &users)
return users, err
}