Chat feature

This commit is contained in:
daru
2022-05-14 18:31:58 +02:00
parent 22179e38c8
commit e660b52bd4
4 changed files with 113 additions and 7 deletions

37
nuss.go
View File

@@ -10,7 +10,7 @@ import (
)
func ReadUser(username string) (*UserData, error) {
data, err := DbRead(bucketUsers, username)
data, err := DbRead(bucketUsers, []byte(username))
if err != nil {
return nil, err
}
@@ -108,7 +108,7 @@ func DeleteUserFromAnime(username string, userId, animeId int64) (*AnimeUser, er
Users: users,
}
if len(users) == 0 {
return tx.Delete(bucketAnime, keyBytes)
return DeleteAnime(tx, keyBytes)
}
newData, err := json.Marshal(users)
if err != nil {
@@ -144,7 +144,7 @@ func DeleteUserFromAnimes(userId int64) error {
users = users[:len(users)-1]
// check if anime needs recycling
if len(users) == 0 {
err = tx.Delete(bucketAnime, e.Key)
err = DeleteAnime(tx, e.Key)
if err != nil {
return err
}
@@ -167,6 +167,11 @@ func DeleteUserFromAnimes(userId int64) error {
})
}
func DeleteAnime(tx *nutsdb.Tx, keyBytes []byte) error {
tx.Delete(bucketChat, keyBytes)
return tx.Delete(bucketAnime, keyBytes)
}
func UpdateUserAnimeProgress(animeId, userId int64, progress int, updated time.Time) error {
return db.Update(
func(tx *nutsdb.Tx) error {
@@ -286,6 +291,29 @@ func ReadAppointments() ([]Appointment, error) {
return appoints, err
}
func ReadChat(animeId int64) (string, error) {
data, err := DbRead(bucketChat, Int64ToByte(animeId))
return string(data), err
}
func SaveChat(animeId int64, username, newMessage string) (string, error) {
var chat string
err := db.Update(
func(tx *nutsdb.Tx) error {
keyBytes := Int64ToByte(animeId)
e, err := tx.Get(bucketChat, keyBytes)
if err != nil {
chat = ""
} else {
chat = string(e.Value)
}
// add to chat message
chat = AddToChat(chat, newMessage, username)
return tx.Put(bucketChat, keyBytes, []byte(chat), nutsdb.Persistent)
})
return chat, err
}
func DbClean() error {
return db.Update(
func(tx *nutsdb.Tx) error {
@@ -301,11 +329,10 @@ func DbSave(bucket, key string, val []byte) error {
})
}
func DbRead(bucket, key string) ([]byte, error) {
func DbRead(bucket string, keyBytes []byte) ([]byte, error) {
var val []byte
err := db.View(
func(tx *nutsdb.Tx) error {
keyBytes := []byte(key)
e, err := tx.Get(bucket, keyBytes)
if err != nil {
return err