Apply session on the menuhandler store returns
This commit is contained in:
parent
60ff1b0ab3
commit
874edb3da6
@ -62,7 +62,6 @@ func ApplyConn(connStr *string, stateConnStr *string, resourceConnStr *string, u
|
|||||||
}
|
}
|
||||||
|
|
||||||
if dbConn == "?" {
|
if dbConn == "?" {
|
||||||
logg.Warnf("no db connection found, using memdb for everything")
|
|
||||||
dbConn = ""
|
dbConn = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/jackc/pgx/v5/pgxpool"
|
"github.com/jackc/pgx/v5/pgxpool"
|
||||||
"git.defalsify.org/vise.git/db"
|
"git.defalsify.org/vise.git/db"
|
||||||
fsdb "git.defalsify.org/vise.git/db/fs"
|
fsdb "git.defalsify.org/vise.git/db/fs"
|
||||||
|
memdb "git.defalsify.org/vise.git/db/mem"
|
||||||
"git.defalsify.org/vise.git/db/postgres"
|
"git.defalsify.org/vise.git/db/postgres"
|
||||||
"git.defalsify.org/vise.git/lang"
|
"git.defalsify.org/vise.git/lang"
|
||||||
"git.defalsify.org/vise.git/logging"
|
"git.defalsify.org/vise.git/logging"
|
||||||
@ -28,7 +29,6 @@ type StorageService interface {
|
|||||||
GetResource(ctx context.Context) (resource.Resource, error)
|
GetResource(ctx context.Context) (resource.Resource, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Support individual backend for each store (conndata)
|
|
||||||
type MenuStorageService struct {
|
type MenuStorageService struct {
|
||||||
conns Conns
|
conns Conns
|
||||||
poResource resource.Resource
|
poResource resource.Resource
|
||||||
@ -70,7 +70,7 @@ func (ms *MenuStorageService) checkDb(ctx context.Context,typ int8) db.Db {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
ms.store[typ] = ms.store[v]
|
ms.store[typ] = ms.store[v]
|
||||||
logg.InfoCtxf(ctx, "found existing db", "typ", typ, "srctyp", v, "store", ms.store[typ], "srcstore", ms.store[v])
|
logg.DebugCtxf(ctx, "found existing db", "typ", typ, "srctyp", v, "store", ms.store[typ], "srcstore", ms.store[v])
|
||||||
return ms.store[typ]
|
return ms.store[typ]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,6 +79,7 @@ func (ms *MenuStorageService) getOrCreateDb(ctx context.Context, section string,
|
|||||||
|
|
||||||
newDb := ms.checkDb(ctx, typ)
|
newDb := ms.checkDb(ctx, typ)
|
||||||
if newDb != nil {
|
if newDb != nil {
|
||||||
|
logg.InfoCtxf(ctx, "using existing db", "typ", typ, "db", newDb)
|
||||||
return newDb, nil
|
return newDb, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,10 +108,11 @@ func (ms *MenuStorageService) getOrCreateDb(ctx context.Context, section string,
|
|||||||
newDb = fsdb.NewFsDb().WithBinary()
|
newDb = fsdb.NewFsDb().WithBinary()
|
||||||
} else if dbTyp == DBTYPE_MEM {
|
} else if dbTyp == DBTYPE_MEM {
|
||||||
logg.WarnCtxf(ctx, "using volatile storage (memdb)")
|
logg.WarnCtxf(ctx, "using volatile storage (memdb)")
|
||||||
|
newDb = memdb.NewMemDb()
|
||||||
} else {
|
} else {
|
||||||
return nil, fmt.Errorf("unsupported connection string: '%s'\n", connData.String())
|
return nil, fmt.Errorf("unsupported connection string: '%s'\n", connData.String())
|
||||||
}
|
}
|
||||||
logg.DebugCtxf(ctx, "connecting to db", "conn", connData, "typ", typ)
|
logg.InfoCtxf(ctx, "connecting to db", "conn", connData, "typ", typ)
|
||||||
err = newDb.Connect(ctx, connStr)
|
err = newDb.Connect(ctx, connStr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@ -159,11 +161,24 @@ func ensureSchemaExists(ctx context.Context, conn ConnData) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func applySession(ctx context.Context, store db.Db) error {
|
||||||
|
sessionId, ok := ctx.Value("SessionId").(string)
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("missing session to apply to store: %v", store)
|
||||||
|
}
|
||||||
|
store.SetSession(sessionId)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (ms *MenuStorageService) GetPersister(ctx context.Context) (*persist.Persister, error) {
|
func (ms *MenuStorageService) GetPersister(ctx context.Context) (*persist.Persister, error) {
|
||||||
stateStore, err := ms.GetStateStore(ctx)
|
stateStore, err := ms.GetStateStore(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
err = applySession(ctx, stateStore)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
pr := persist.NewPersister(stateStore)
|
pr := persist.NewPersister(stateStore)
|
||||||
logg.TraceCtxf(ctx, "menu storage service", "persist", pr, "store", stateStore)
|
logg.TraceCtxf(ctx, "menu storage service", "persist", pr, "store", stateStore)
|
||||||
@ -171,7 +186,16 @@ func (ms *MenuStorageService) GetPersister(ctx context.Context) (*persist.Persis
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ms *MenuStorageService) GetUserdataDb(ctx context.Context) (db.Db, error) {
|
func (ms *MenuStorageService) GetUserdataDb(ctx context.Context) (db.Db, error) {
|
||||||
return ms.getOrCreateDb(ctx, "userdata.gdbm", STORETYPE_USER)
|
userStore, err := ms.getOrCreateDb(ctx, "userdata.gdbm", STORETYPE_USER)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = applySession(ctx, userStore)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return userStore, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *MenuStorageService) GetResource(ctx context.Context) (resource.Resource, error) {
|
func (ms *MenuStorageService) GetResource(ctx context.Context) (resource.Resource, error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user