diff --git a/internal/utils/userStore.go b/internal/utils/userStore.go new file mode 100644 index 0000000..e8fbbf4 --- /dev/null +++ b/internal/utils/userStore.go @@ -0,0 +1,81 @@ +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) +}