82 lines
2.2 KiB
Go
82 lines
2.2 KiB
Go
|
package utils
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"git.defalsify.org/vise.git/db"
|
||
|
"git.defalsify.org/vise.git/lang"
|
||
|
)
|
||
|
|
||
|
type DataStore interface {
|
||
|
SetPrefix(prefix uint8)
|
||
|
SetSession(sessionId string)
|
||
|
Get(ctx context.Context, key []byte) ([]byte, error)
|
||
|
ReadEntry(ctx context.Context, sessionId string, typ DataTyp) ([]byte, error)
|
||
|
WriteEntry(ctx context.Context, sessionId string, typ DataTyp, value []byte) error
|
||
|
Connect(ctx context.Context, connStr string) error
|
||
|
SetLanguage(*lang.Language)
|
||
|
Close() error
|
||
|
Prefix() uint8
|
||
|
Put(ctx context.Context, key []byte, val []byte) error
|
||
|
Safe() bool
|
||
|
SetLock(typ uint8, locked bool) error
|
||
|
}
|
||
|
|
||
|
type UserDataStore struct {
|
||
|
Store db.Db
|
||
|
}
|
||
|
|
||
|
func (store UserDataStore) SetPrefix(prefix uint8) {
|
||
|
store.Store.SetPrefix(prefix)
|
||
|
}
|
||
|
|
||
|
func (store UserDataStore) SetLanguage(lang *lang.Language) {
|
||
|
store.Store.SetLanguage(lang)
|
||
|
}
|
||
|
|
||
|
func (store UserDataStore) SetLock(typ uint8, locked bool) error {
|
||
|
return store.Store.SetLock(typ, locked)
|
||
|
}
|
||
|
func (store UserDataStore) Safe() bool {
|
||
|
return store.Store.Safe()
|
||
|
}
|
||
|
|
||
|
func (store UserDataStore) Put(ctx context.Context, key []byte, val []byte) error {
|
||
|
return store.Store.Put(ctx, key, val)
|
||
|
}
|
||
|
|
||
|
func (store UserDataStore) Connect(ctx context.Context, connectionStr string) error {
|
||
|
return store.Store.Connect(ctx, connectionStr)
|
||
|
}
|
||
|
|
||
|
func (store UserDataStore) Close() error {
|
||
|
return store.Store.Close()
|
||
|
}
|
||
|
|
||
|
func (store UserDataStore) Prefix() uint8 {
|
||
|
return store.Store.Prefix()
|
||
|
}
|
||
|
|
||
|
func (store UserDataStore) SetSession(sessionId string) {
|
||
|
store.Store.SetSession(sessionId)
|
||
|
}
|
||
|
|
||
|
func (store UserDataStore) Get(ctx context.Context, key []byte) ([]byte, error) {
|
||
|
return store.Store.Get(ctx, key)
|
||
|
}
|
||
|
|
||
|
// ReadEntry retrieves an entry from the store based on the provided parameters.
|
||
|
func (store UserDataStore) ReadEntry(ctx context.Context, sessionId string, typ DataTyp) ([]byte, error) {
|
||
|
store.Store.SetPrefix(db.DATATYPE_USERDATA)
|
||
|
store.Store.SetSession(sessionId)
|
||
|
k := PackKey(typ, []byte(sessionId))
|
||
|
return store.Get(ctx, k)
|
||
|
}
|
||
|
|
||
|
func (store UserDataStore) WriteEntry(ctx context.Context, sessionId string, typ DataTyp, value []byte) error {
|
||
|
store.Store.SetPrefix(db.DATATYPE_USERDATA)
|
||
|
store.Store.SetSession(sessionId)
|
||
|
k := PackKey(typ, []byte(sessionId))
|
||
|
return store.Store.Put(ctx, k, value)
|
||
|
}
|