diff --git a/cmd/store/generate/main.go b/cmd/store/generate/main.go index 60dcea9..a1b9a84 100644 --- a/cmd/store/generate/main.go +++ b/cmd/store/generate/main.go @@ -8,6 +8,7 @@ import ( "os" "path" + testdataloader "github.com/peteole/testdata-loader" "git.defalsify.org/vise.git/logging" "git.grassecon.net/grassrootseconomics/visedriver/config" "git.grassecon.net/grassrootseconomics/visedriver/storage" diff --git a/handlers/base.go b/handlers/base.go index 25c2d8a..d5b2d63 100644 --- a/handlers/base.go +++ b/handlers/base.go @@ -1,7 +1,13 @@ package handlers import ( + "context" + "fmt" + + "git.defalsify.org/vise.git/asm" "git.defalsify.org/vise.git/db" + "git.defalsify.org/vise.git/state" + "git.defalsify.org/vise.git/cache" "git.defalsify.org/vise.git/engine" "git.defalsify.org/vise.git/persist" "git.defalsify.org/vise.git/resource" @@ -9,7 +15,12 @@ import ( "git.grassecon.net/grassrootseconomics/visedriver/request" "git.grassecon.net/grassrootseconomics/visedriver/errors" + dbstorage "git.grassecon.net/grassrootseconomics/visedriver/storage/db" + "git.grassecon.net/grassrootseconomics/visedriver/common" "git.grassecon.net/grassrootseconomics/visedriver/storage" + "git.grassecon.net/grassrootseconomics/visedriver/remote" + "git.grassecon.net/grassrootseconomics/visedriver/models" + "git.grassecon.net/grassrootseconomics/visedriver/utils" ) var ( @@ -29,6 +40,47 @@ type Handlers struct { ReplaceSeparatorFunc func(string) string } +// NewHandlers creates a new instance of the Handlers struct with the provided dependencies. +func NewHandlers(appFlags *asm.FlagParser, userdataStore db.Db, adminstore *utils.AdminStore, accountService remote.AccountServiceInterface, replaceSeparatorFunc func(string) string) (*Handlers, error) { + if userdataStore == nil { + return nil, fmt.Errorf("cannot create handler with nil userdata store") + } + userDb := &common.UserDataStore{ + Db: userdataStore, + } + + // Instantiate the SubPrefixDb with "DATATYPE_USERDATA" prefix + prefix := common.ToBytes(db.DATATYPE_USERDATA) + prefixDb := dbstorage.NewSubPrefixDb(userdataStore, prefix) + + h := &Handlers{ + userdataStore: userDb, + flagManager: appFlags, + adminstore: adminstore, + accountService: accountService, + prefixDb: prefixDb, + profile: &models.Profile{Max: 6}, + ReplaceSeparatorFunc: replaceSeparatorFunc, + } + return h, nil +} + +func (h *Handlers) Exit() { + h.pe = nil +} + +func (h *Handlers) Init(ctx context.Context, sym string, input []byte) (resource.Result, error) { + return resource.Result{}, nil +} + +// WithPersister sets persister instance to the handlers. +func (h *Handlers) WithPersister(pe *persist.Persister) *Handlers { + if h.pe != nil { + panic("persister already set") + } + h.pe = pe + return h +} type BaseSessionHandler struct { cfgTemplate engine.Config rp request.RequestParser @@ -37,7 +89,7 @@ type BaseSessionHandler struct { provider storage.StorageProvider } -func NewBaseSessionHandler(cfg engine.Config, rs resource.Resource, stateDb db.Db, userdataDb db.Db, rp request.RequestParser, hn *application.Handlers) *BaseSessionHandler { +func NewBaseSessionHandler(cfg engine.Config, rs resource.Resource, stateDb db.Db, userdataDb db.Db, rp request.RequestParser, hn *Handlers) *BaseSessionHandler { return &BaseSessionHandler{ cfgTemplate: cfg, rs: rs, diff --git a/testutil/mocks/httpmocks/request_handler_mock.go b/testutil/mocks/httpmocks/request_handler_mock.go index f17abce..acd1a5a 100644 --- a/testutil/mocks/httpmocks/request_handler_mock.go +++ b/testutil/mocks/httpmocks/request_handler_mock.go @@ -4,21 +4,21 @@ import ( "git.defalsify.org/vise.git/engine" "git.defalsify.org/vise.git/persist" "git.defalsify.org/vise.git/resource" - "git.grassecon.net/urdt/ussd/internal/handlers" + "git.grassecon.net/grassrootseconomics/visedriver/request" ) -// MockRequestHandler implements handlers.RequestHandler interface for testing +// MockRequestHandler implements request.RequestHandler interface for testing type MockRequestHandler struct { - ProcessFunc func(handlers.RequestSession) (handlers.RequestSession, error) + ProcessFunc func(request.RequestSession) (request.RequestSession, error) GetConfigFunc func() engine.Config GetEngineFunc func(cfg engine.Config, rs resource.Resource, pe *persist.Persister) engine.Engine - OutputFunc func(rs handlers.RequestSession) (handlers.RequestSession, error) - ResetFunc func(rs handlers.RequestSession) (handlers.RequestSession, error) + OutputFunc func(rs request.RequestSession) (request.RequestSession, error) + ResetFunc func(rs request.RequestSession) (request.RequestSession, error) ShutdownFunc func() - GetRequestParserFunc func() handlers.RequestParser + GetRequestParserFunc func() request.RequestParser } -func (m *MockRequestHandler) Process(rqs handlers.RequestSession) (handlers.RequestSession, error) { +func (m *MockRequestHandler) Process(rqs request.RequestSession) (request.RequestSession, error) { return m.ProcessFunc(rqs) } @@ -30,11 +30,11 @@ func (m *MockRequestHandler) GetEngine(cfg engine.Config, rs resource.Resource, return m.GetEngineFunc(cfg, rs, pe) } -func (m *MockRequestHandler) Output(rs handlers.RequestSession) (handlers.RequestSession, error) { +func (m *MockRequestHandler) Output(rs request.RequestSession) (request.RequestSession, error) { return m.OutputFunc(rs) } -func (m *MockRequestHandler) Reset(rs handlers.RequestSession) (handlers.RequestSession, error) { +func (m *MockRequestHandler) Reset(rs request.RequestSession) (request.RequestSession, error) { return m.ResetFunc(rs) } @@ -42,6 +42,6 @@ func (m *MockRequestHandler) Shutdown() { m.ShutdownFunc() } -func (m *MockRequestHandler) GetRequestParser() handlers.RequestParser { +func (m *MockRequestHandler) GetRequestParser() request.RequestParser { return m.GetRequestParserFunc() } diff --git a/testutil/mocks/httpmocks/requesthandlermock.go b/testutil/mocks/httpmocks/requesthandlermock.go deleted file mode 100644 index acd1a5a..0000000 --- a/testutil/mocks/httpmocks/requesthandlermock.go +++ /dev/null @@ -1,47 +0,0 @@ -package httpmocks - -import ( - "git.defalsify.org/vise.git/engine" - "git.defalsify.org/vise.git/persist" - "git.defalsify.org/vise.git/resource" - "git.grassecon.net/grassrootseconomics/visedriver/request" -) - -// MockRequestHandler implements request.RequestHandler interface for testing -type MockRequestHandler struct { - ProcessFunc func(request.RequestSession) (request.RequestSession, error) - GetConfigFunc func() engine.Config - GetEngineFunc func(cfg engine.Config, rs resource.Resource, pe *persist.Persister) engine.Engine - OutputFunc func(rs request.RequestSession) (request.RequestSession, error) - ResetFunc func(rs request.RequestSession) (request.RequestSession, error) - ShutdownFunc func() - GetRequestParserFunc func() request.RequestParser -} - -func (m *MockRequestHandler) Process(rqs request.RequestSession) (request.RequestSession, error) { - return m.ProcessFunc(rqs) -} - -func (m *MockRequestHandler) GetConfig() engine.Config { - return m.GetConfigFunc() -} - -func (m *MockRequestHandler) GetEngine(cfg engine.Config, rs resource.Resource, pe *persist.Persister) engine.Engine { - return m.GetEngineFunc(cfg, rs, pe) -} - -func (m *MockRequestHandler) Output(rs request.RequestSession) (request.RequestSession, error) { - return m.OutputFunc(rs) -} - -func (m *MockRequestHandler) Reset(rs request.RequestSession) (request.RequestSession, error) { - return m.ResetFunc(rs) -} - -func (m *MockRequestHandler) Shutdown() { - m.ShutdownFunc() -} - -func (m *MockRequestHandler) GetRequestParser() request.RequestParser { - return m.GetRequestParserFunc() -}