Implement context for get and put provider

This commit is contained in:
lash 2025-01-19 10:38:41 +00:00
parent c9b92191f3
commit b8a377befb
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
5 changed files with 14 additions and 12 deletions

2
go.mod
View File

@ -3,7 +3,7 @@ module git.grassecon.net/grassrootseconomics/visedriver
go 1.23.0 go 1.23.0
require ( require (
git.defalsify.org/vise.git v0.2.3-0.20250119084238-8ad1d92d2127 git.defalsify.org/vise.git v0.2.3-0.20250119102754-11da04233e73
github.com/jackc/pgx/v5 v5.7.1 github.com/jackc/pgx/v5 v5.7.1
github.com/joho/godotenv v1.5.1 github.com/joho/godotenv v1.5.1
) )

4
go.sum
View File

@ -1,5 +1,5 @@
git.defalsify.org/vise.git v0.2.3-0.20250119084238-8ad1d92d2127 h1:4AZoazfzGAHGNMn3kAWsXZQGO3Sme4PYLV8gvMjIZ0A= git.defalsify.org/vise.git v0.2.3-0.20250119102754-11da04233e73 h1:WOLAF8STyDxy/4qcOpmmHUinJQLm+Ze5riwcVrZRl3k=
git.defalsify.org/vise.git v0.2.3-0.20250119084238-8ad1d92d2127/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.defalsify.org/vise.git v0.2.3-0.20250119102754-11da04233e73/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck=
github.com/barbashov/iso639-3 v0.0.0-20211020172741-1f4ffb2d8d1c h1:H9Nm+I7Cg/YVPpEV1RzU3Wq2pjamPc/UtHDgItcb7lE= github.com/barbashov/iso639-3 v0.0.0-20211020172741-1f4ffb2d8d1c h1:H9Nm+I7Cg/YVPpEV1RzU3Wq2pjamPc/UtHDgItcb7lE=
github.com/barbashov/iso639-3 v0.0.0-20211020172741-1f4ffb2d8d1c/go.mod h1:rGod7o6KPeJ+hyBpHfhi4v7blx9sf+QsHsA7KAsdN6U= github.com/barbashov/iso639-3 v0.0.0-20211020172741-1f4ffb2d8d1c/go.mod h1:rGod7o6KPeJ+hyBpHfhi4v7blx9sf+QsHsA7KAsdN6U=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

View File

@ -51,7 +51,7 @@ func(f *BaseRequestHandler) Process(rqs RequestSession) (RequestSession, error)
logg.InfoCtxf(rqs.Ctx, "new request", "data", rqs) logg.InfoCtxf(rqs.Ctx, "new request", "data", rqs)
rqs.Storage, err = f.provider.Get(rqs.Config.SessionId) rqs.Storage, err = f.provider.Get(rqs.Ctx, rqs.Config.SessionId)
if err != nil { if err != nil {
logg.ErrorCtxf(rqs.Ctx, "", "storage get error", err) logg.ErrorCtxf(rqs.Ctx, "", "storage get error", err)
return rqs, errors.ErrStorage return rqs, errors.ErrStorage
@ -65,7 +65,7 @@ func(f *BaseRequestHandler) Process(rqs RequestSession) (RequestSession, error)
eni := f.GetEngine(rqs.Config, f.rs, rqs.Storage.Persister) eni := f.GetEngine(rqs.Config, f.rs, rqs.Storage.Persister)
en, ok := eni.(*engine.DefaultEngine) en, ok := eni.(*engine.DefaultEngine)
if !ok { if !ok {
perr := f.provider.Put(rqs.Config.SessionId, rqs.Storage) perr := f.provider.Put(rqs.Ctx, rqs.Config.SessionId, rqs.Storage)
rqs.Storage = nil rqs.Storage = nil
if perr != nil { if perr != nil {
logg.ErrorCtxf(rqs.Ctx, "", "storage put error", perr) logg.ErrorCtxf(rqs.Ctx, "", "storage put error", perr)
@ -80,7 +80,7 @@ func(f *BaseRequestHandler) Process(rqs RequestSession) (RequestSession, error)
r, err = rqs.Engine.Exec(rqs.Ctx, rqs.Input) r, err = rqs.Engine.Exec(rqs.Ctx, rqs.Input)
if err != nil { if err != nil {
perr := f.provider.Put(rqs.Config.SessionId, rqs.Storage) perr := f.provider.Put(rqs.Ctx, rqs.Config.SessionId, rqs.Storage)
rqs.Storage = nil rqs.Storage = nil
if perr != nil { if perr != nil {
logg.ErrorCtxf(rqs.Ctx, "", "storage put error", perr) logg.ErrorCtxf(rqs.Ctx, "", "storage put error", perr)
@ -99,7 +99,7 @@ func(f *BaseRequestHandler) Output(rqs RequestSession) (RequestSession, error)
} }
func(f *BaseRequestHandler) Reset(ctx context.Context, rqs RequestSession) (RequestSession, error) { func(f *BaseRequestHandler) Reset(ctx context.Context, rqs RequestSession) (RequestSession, error) {
defer f.provider.Put(rqs.Config.SessionId, rqs.Storage) defer f.provider.Put(ctx, rqs.Config.SessionId, rqs.Storage)
return rqs, rqs.Engine.Finish(ctx) return rqs, rqs.Engine.Finish(ctx)
} }

View File

@ -88,7 +88,7 @@ func TestRequestHandler_ServeHTTP(t *testing.T) {
OutputFunc: func(rs request.RequestSession) (request.RequestSession, error) { OutputFunc: func(rs request.RequestSession) (request.RequestSession, error) {
return rs, tt.outputErr return rs, tt.outputErr
}, },
ResetFunc: func(rs request.RequestSession) (request.RequestSession, error) { ResetFunc: func(ctx context.Context, rs request.RequestSession) (request.RequestSession, error) {
return rs, tt.resetErr return rs, tt.resetErr
}, },
GetRequestParserFunc: func() request.RequestParser { GetRequestParserFunc: func() request.RequestParser {

View File

@ -21,8 +21,8 @@ func (s *Storage) Close(ctx context.Context) error {
} }
type StorageProvider interface { type StorageProvider interface {
Get(sessionId string) (*Storage, error) Get(ctx context.Context, sessionId string) (*Storage, error)
Put(sessionId string, storage *Storage) error Put(ctx context.Context, sessionId string, storage *Storage) error
Close(ctx context.Context) error Close(ctx context.Context) error
} }
@ -41,11 +41,13 @@ func NewSimpleStorageProvider(stateStore db.Db, userdataStore db.Db) StorageProv
} }
} }
func (p *SimpleStorageProvider) Get(sessionId string) (*Storage, error) { func (p *SimpleStorageProvider) Get(ctx context.Context, sessionId string) (*Storage, error) {
p.Storage.UserdataDb.Start(ctx)
return p.Storage, nil return p.Storage, nil
} }
func (p *SimpleStorageProvider) Put(sessionId string, storage *Storage) error { func (p *SimpleStorageProvider) Put(ctx context.Context, sessionId string, storage *Storage) error {
storage.UserdataDb.Stop(ctx)
return nil return nil
} }