diff --git a/go.mod b/go.mod index 9ff0167..280886c 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.grassecon.net/grassrootseconomics/visedriver go 1.23.0 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/joho/godotenv v1.5.1 ) diff --git a/go.sum b/go.sum index 4b777aa..4ac7f7f 100644 --- a/go.sum +++ b/go.sum @@ -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.20250119084238-8ad1d92d2127/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250119102754-11da04233e73 h1:WOLAF8STyDxy/4qcOpmmHUinJQLm+Ze5riwcVrZRl3k= +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/go.mod h1:rGod7o6KPeJ+hyBpHfhi4v7blx9sf+QsHsA7KAsdN6U= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/request/base.go b/request/base.go index 7390364..7a38851 100644 --- a/request/base.go +++ b/request/base.go @@ -51,7 +51,7 @@ func(f *BaseRequestHandler) Process(rqs RequestSession) (RequestSession, error) 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 { logg.ErrorCtxf(rqs.Ctx, "", "storage get error", err) 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) en, ok := eni.(*engine.DefaultEngine) 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 if perr != nil { 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) 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 if perr != nil { 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) { - 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) } diff --git a/request/http/server_test.go b/request/http/server_test.go index f7ef778..64fc420 100644 --- a/request/http/server_test.go +++ b/request/http/server_test.go @@ -88,7 +88,7 @@ func TestRequestHandler_ServeHTTP(t *testing.T) { OutputFunc: func(rs request.RequestSession) (request.RequestSession, error) { 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 }, GetRequestParserFunc: func() request.RequestParser { diff --git a/storage/storage.go b/storage/storage.go index 8638863..c4a69bb 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -21,8 +21,8 @@ func (s *Storage) Close(ctx context.Context) error { } type StorageProvider interface { - Get(sessionId string) (*Storage, error) - Put(sessionId string, storage *Storage) error + Get(ctx context.Context, sessionId string) (*Storage, error) + Put(ctx context.Context, sessionId string, storage *Storage) 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 } -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 }