forked from urdt/ussd
45 lines
904 B
Go
45 lines
904 B
Go
package storage
|
|
|
|
import (
|
|
"git.defalsify.org/vise.git/db"
|
|
"git.defalsify.org/vise.git/persist"
|
|
)
|
|
|
|
type Storage struct {
|
|
Persister *persist.Persister
|
|
UserdataDb db.Db
|
|
}
|
|
|
|
type StorageProvider interface {
|
|
Get(sessionId string) (*Storage, error)
|
|
Put(sessionId string, storage *Storage) error
|
|
Close() error
|
|
}
|
|
|
|
type SimpleStorageProvider struct {
|
|
*Storage
|
|
}
|
|
|
|
func NewSimpleStorageProvider(stateStore db.Db, userdataStore db.Db) StorageProvider {
|
|
pe := persist.NewPersister(stateStore)
|
|
pe = pe.WithFlush()
|
|
return &SimpleStorageProvider{
|
|
Storage: &Storage{
|
|
Persister: pe,
|
|
UserdataDb: userdataStore,
|
|
},
|
|
}
|
|
}
|
|
|
|
func (p *SimpleStorageProvider) Get(sessionId string) (*Storage, error) {
|
|
return p.Storage, nil
|
|
}
|
|
|
|
func (p *SimpleStorageProvider) Put(sessionId string, storage *Storage) error {
|
|
return nil
|
|
}
|
|
|
|
func (p *SimpleStorageProvider) Close() error {
|
|
return p.Storage.UserdataDb.Close()
|
|
}
|