mirror of
https://github.com/ultrasn0w/huso.git
synced 2025-12-13 12:19:54 +01:00
Chat feature
This commit is contained in:
37
nuss.go
37
nuss.go
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user