diff --git a/cmd/africastalking/main.go b/cmd/africastalking/main.go index 2975d03..a1a5b27 100644 --- a/cmd/africastalking/main.go +++ b/cmd/africastalking/main.go @@ -133,6 +133,7 @@ func main() { rp := &at.ATRequestParser{} bsh := request.NewBaseRequestHandler(cfg, rs, stateStore, userdataStore, rp, hl) + bsh = bsh.WithEngineFunc(lhs.GetEngine) sh := at.NewATRequestHandler(bsh) mux := http.NewServeMux() diff --git a/cmd/async/main.go b/cmd/async/main.go index a55a19b..e40caa4 100644 --- a/cmd/async/main.go +++ b/cmd/async/main.go @@ -145,6 +145,8 @@ func main() { sessionId: sessionId, } sh := request.NewBaseRequestHandler(cfg, rs, stateStore, userdataStore, rp, hl) + sh = sh.WithEngineFunc(lhs.GetEngine) + cfg.SessionId = sessionId rqs := request.RequestSession{ Ctx: ctx, diff --git a/cmd/http/main.go b/cmd/http/main.go index e691254..a2732eb 100644 --- a/cmd/http/main.go +++ b/cmd/http/main.go @@ -133,6 +133,7 @@ func main() { rp := &httprequest.DefaultRequestParser{} bsh := request.NewBaseRequestHandler(cfg, rs, stateStore, userdataStore, rp, hl) + bsh = bsh.WithEngineFunc(lhs.GetEngine) sh := httprequest.NewHTTPRequestHandler(bsh) s := &http.Server{ Addr: fmt.Sprintf("%s:%s", host, strconv.Itoa(int(port))), diff --git a/cmd/main.go b/cmd/main.go index 360f8af..408d2b3 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -16,7 +16,6 @@ import ( "git.grassecon.net/grassrootseconomics/sarafu-vise/args" "git.grassecon.net/grassrootseconomics/sarafu-vise/config" "git.grassecon.net/grassrootseconomics/sarafu-vise/handlers" - "git.grassecon.net/grassrootseconomics/sarafu-vise/services" "git.grassecon.net/grassrootseconomics/visedriver/storage" ) @@ -79,6 +78,7 @@ func main() { OutputSize: uint32(size), FlagCount: uint32(128), MenuSeparator: menuSeparator, + EngineDebug: engineDebug, } menuStorageService := storage.NewMenuStorageService(conns) @@ -123,18 +123,7 @@ func main() { os.Exit(1) } - accountService := services.New(ctx, menuStorageService) - hl, err := lhs.GetHandler(accountService) - if err != nil { - fmt.Fprintf(os.Stderr, "get accounts service handler: %v\n", err) - os.Exit(1) - } - - en := lhs.GetEngine() - en = en.WithFirst(hl.Init) - if engineDebug { - en = en.WithDebug(nil) - } + en := lhs.GetEngine(cfg, rs, pe) cint := make(chan os.Signal) cterm := make(chan os.Signal) diff --git a/go.mod b/go.mod index 9be5609..54e6967 100644 --- a/go.mod +++ b/go.mod @@ -3,10 +3,10 @@ module git.grassecon.net/grassrootseconomics/sarafu-vise go 1.23.4 require ( - git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9 + git.defalsify.org/vise.git v0.2.3-0.20250204132233-2bffe532f21e git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1 - git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa + git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244 git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694 github.com/alecthomas/assert/v2 v2.2.2 github.com/gofrs/uuid v4.4.0+incompatible diff --git a/go.sum b/go.sum index b2e2876..3e16a53 100644 --- a/go.sum +++ b/go.sum @@ -1,15 +1,11 @@ -git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9 h1:sPcqXQcywxA8W3W+9qQncLPmsrgqTIlec7vmD4/7vyA= -git.defalsify.org/vise.git v0.2.3-0.20250120121301-10739fb4a8c9/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= +git.defalsify.org/vise.git v0.2.3-0.20250204132233-2bffe532f21e h1:gtB9OdX6x5gQRM3W824dEurXuuf/YPInqgtv2KAp5Zo= +git.defalsify.org/vise.git v0.2.3-0.20250204132233-2bffe532f21e/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d h1:5mzLas+jxTUtusOKx4XvU+n2QvrV/mH17MnJRy46siQ= git.grassecon.net/grassrootseconomics/common v0.0.0-20250121134736-ba8cbbccea7d/go.mod h1:wgQJZGIS6QuNLHqDhcsvehsbn5PvgV7aziRebMnJi60= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1 h1:BJHfokTHzrw9QjQ+4s2HmSER0iBPuE7byW5oQC2zLIQ= git.grassecon.net/grassrootseconomics/sarafu-api v0.0.0-20250123142805-2181388f5bf1/go.mod h1:gOn89ipaDcDvmQXRMQYKUqcw/sJcwVOPVt2eC6Geip8= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa h1:yQLKwby3eD/zNjNw/INU5lGiLuWPEHdsgASwMA4UptE= -git.grassecon.net/grassrootseconomics/visedriver v0.8.0-beta.10.0.20250124100946-03d19283f6fa/go.mod h1:pjKp9L/ZsWW3kMB0UoIl1yv9TBIuU33mn9Aghxp7vGk= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84 h1:VoBmqsjlRdz+IPbtKsAkc1IrMepjR+QlesZT31Jokrk= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121135340-ca97e23e8c84/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121153115-bfb16bd5a57a h1:jyS1Q8ktEGnH8R5ne/1GN7SyuDPtEGTrGtC8Px3fVJc= -git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250121153115-bfb16bd5a57a/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ= +git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244 h1:BXotWSKg04U97sf/xeWJuUTSVgKk2aEK+5BtBrnafXQ= +git.grassecon.net/grassrootseconomics/visedriver v0.9.0-beta.1.0.20250204132347-1eb0b1555244/go.mod h1:6B6ByxXOiRY0NR7K02Bf3fEu7z+2c/6q8PFVNjC5G8w= git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694 h1:DjJlBSz0S13acft5XZDWk7ZYnzElym0xLMYEVgyNJ+E= git.grassecon.net/grassrootseconomics/visedriver-africastalking v0.0.0-20250129070628-5a539172c694/go.mod h1:DpibtYpnT3nG4Kn556hRAkdu4+CtiI/6MbnQHal51mQ= github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= diff --git a/handlers/local.go b/handlers/local.go index 77e3980..5cbaa9d 100644 --- a/handlers/local.go +++ b/handlers/local.go @@ -24,6 +24,7 @@ type LocalHandlerService struct { UserdataStore *db.Db Cfg engine.Config Rs resource.Resource + first resource.EntryFunc } func NewLocalHandlerService(ctx context.Context, fp string, debug bool, dbResource *resource.DbResource, cfg engine.Config, rs resource.Resource) (*LocalHandlerService, error) { @@ -118,13 +119,19 @@ func (ls *LocalHandlerService) GetHandler(accountService remote.AccountService) ls.DbRs.AddLocalFunc("update_all_profile_items", appHandlers.UpdateAllProfileItems) ls.DbRs.AddLocalFunc("set_back", appHandlers.SetBack) ls.DbRs.AddLocalFunc("show_blocked_account", appHandlers.ShowBlockedAccount) + ls.first = appHandlers.Init return appHandlers, nil } -// TODO: enable setting of sessionId on engine init time -func (ls *LocalHandlerService) GetEngine() *engine.DefaultEngine { - en := engine.NewEngine(ls.Cfg, ls.Rs) - en = en.WithPersister(ls.Pe) +func (ls *LocalHandlerService) GetEngine(cfg engine.Config, rs resource.Resource, pr *persist.Persister) engine.Engine { + en := engine.NewEngine(cfg, rs) + if ls.first != nil { + en = en.WithFirst(ls.first) + } + en = en.WithPersister(pr) + if cfg.EngineDebug { + en = en.WithDebug(nil) + } return en } diff --git a/ssh/ssh.go b/ssh/ssh.go index 81d7835..9e6b76f 100644 --- a/ssh/ssh.go +++ b/ssh/ssh.go @@ -17,7 +17,7 @@ import ( "git.defalsify.org/vise.git/resource" "git.defalsify.org/vise.git/state" "git.grassecon.net/grassrootseconomics/sarafu-vise/handlers" - "git.grassecon.net/grassrootseconomics/sarafu-vise/services" +// "git.grassecon.net/grassrootseconomics/sarafu-vise/services" "git.grassecon.net/grassrootseconomics/visedriver/storage" ) @@ -177,20 +177,8 @@ func (s *SshRunner) GetEngine(sessionId string) (engine.Engine, func(), error) { return nil, nil, err } - // TODO: clear up why pointer here and by-value other cmds - accountService := services.New(ctx, menuStorageService) - - hl, err := lhs.GetHandler(accountService) - if err != nil { - return nil, nil, err - } - - en := lhs.GetEngine() - en = en.WithFirst(hl.Init) - if s.Debug { - en = en.WithDebug(nil) - } // TODO: this is getting very hacky! + en := lhs.GetEngine(lhs.Cfg, rs, pe) closer := func() { err := menuStorageService.Close(ctx) if err != nil { diff --git a/testutil/engine.go b/testutil/engine.go index a179b5d..167ad5a 100644 --- a/testutil/engine.go +++ b/testutil/engine.go @@ -137,14 +137,14 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) { panic("Unknown account service type") } - hl, err := lhs.GetHandler(testtag.AccountService) + // TODO: triggers withfirst assignment + _, err = lhs.GetHandler(testtag.AccountService) if err != nil { fmt.Fprintf(os.Stderr, err.Error()) os.Exit(1) } - en := lhs.GetEngine() - en = en.WithFirst(hl.Init) + en := lhs.GetEngine(lhs.Cfg, rs, pe) cleanFn := func() { err := en.Finish(ctx) if err != nil {