From a824fa90a5a319059e5bed7007d47f199b7ab000 Mon Sep 17 00:00:00 2001 From: Prad N Date: Fri, 9 May 2025 13:21:59 -0400 Subject: [PATCH] feat: introduce controller layer for application logic --- cmd/front/main.go | 14 +++++--------- cmd/vault/main.go | 11 +++++------ controller/controller.go | 36 ++++++++++++++++++++++++++++++++++++ controller/vault/options.go | 2 +- handlers/default_expired.go | 11 +++++++++++ handlers/default_initial.go | 11 +++++++++++ handlers/default_valid.go | 11 +++++++++++ handlers/login_check.go | 11 +++++++++++ handlers/login_finish.go | 11 +++++++++++ handlers/login_initial.go | 11 +++++++++++ handlers/login_start.go | 11 +++++++++++ handlers/register_check.go | 11 +++++++++++ handlers/register_finish.go | 11 +++++++++++ handlers/register_initial.go | 11 +++++++++++ handlers/register_start.go | 11 +++++++++++ routes/routes.go | 25 +++++++++++++++++++++++++ 16 files changed, 193 insertions(+), 16 deletions(-) create mode 100644 handlers/default_expired.go create mode 100644 handlers/default_initial.go create mode 100644 handlers/default_valid.go create mode 100644 handlers/login_check.go create mode 100644 handlers/login_finish.go create mode 100644 handlers/login_initial.go create mode 100644 handlers/login_start.go create mode 100644 handlers/register_check.go create mode 100644 handlers/register_finish.go create mode 100644 handlers/register_initial.go create mode 100644 handlers/register_start.go create mode 100644 routes/routes.go diff --git a/cmd/front/main.go b/cmd/front/main.go index 0b4ac70..38374be 100644 --- a/cmd/front/main.go +++ b/cmd/front/main.go @@ -4,24 +4,20 @@ package main import ( - "github.com/sonr-io/motr/handlers/auth" - "github.com/sonr-io/motr/handlers/landing" + "github.com/sonr-io/motr/controller" "github.com/sonr-io/motr/internal/config" "github.com/sonr-io/motr/internal/middleware" + "github.com/sonr-io/motr/routes" ) func main() { // Setup config e, c := config.New() e.Use(middleware.UseSession(c), middleware.UseCloudflareCache(c)) - - // Register controllers - if err := landing.Register(c, e); err != nil { + cn, err := controller.New(c, e) + if err != nil { panic(err) } - if err := auth.Register(c, e); err != nil { - panic(err) - } - // Start server + routes.SetupRoutes(cn) e.Serve() } diff --git a/cmd/vault/main.go b/cmd/vault/main.go index 59d6437..38374be 100644 --- a/cmd/vault/main.go +++ b/cmd/vault/main.go @@ -4,21 +4,20 @@ package main import ( - "github.com/sonr-io/motr/handlers/auth" + "github.com/sonr-io/motr/controller" "github.com/sonr-io/motr/internal/config" "github.com/sonr-io/motr/internal/middleware" + "github.com/sonr-io/motr/routes" ) func main() { // Setup config e, c := config.New() e.Use(middleware.UseSession(c), middleware.UseCloudflareCache(c)) - - // Register controllers - if err := auth.Register(c, e); err != nil { + cn, err := controller.New(c, e) + if err != nil { panic(err) } - - // Start server + routes.SetupRoutes(cn) e.Serve() } diff --git a/controller/controller.go b/controller/controller.go index b0b429f..e4f9543 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -1 +1,37 @@ +//go:build js && wasm +// +build js,wasm + package controller + +import ( + "github.com/sonr-io/motr/internal/config" + "github.com/sonr-io/motr/internal/sink/models" + "github.com/syumai/workers/cloudflare/kv" +) + +type Controller struct { + DB models.Querier + Handles *kv.Namespace + Sessions *kv.Namespace + Server *config.Server +} + +func New(cfg config.Config, s *config.Server) (*Controller, error) { + q, err := cfg.DB.GetQuerier() + if err != nil { + return nil, err + } + hkv, err := cfg.KV.GetHandles() + if err != nil { + return nil, err + } + skv, err := cfg.KV.GetSessions() + if err != nil { + return nil, err + } + return create(q, hkv, skv, s), nil +} + +func create(q models.Querier, hkv *kv.Namespace, skv *kv.Namespace, srv *config.Server) *Controller { + return &Controller{DB: q, Handles: hkv, Sessions: skv, Server: srv} +} diff --git a/controller/vault/options.go b/controller/vault/options.go index 7e68ac7..4d456ca 100644 --- a/controller/vault/options.go +++ b/controller/vault/options.go @@ -1,6 +1,6 @@ package vault -import "github.com/sonr-io/motr/controllers/credential" +import "github.com/sonr-io/motr/controller/credential" type LoginOptions struct { Account string diff --git a/handlers/default_expired.go b/handlers/default_expired.go new file mode 100644 index 0000000..8ce72c1 --- /dev/null +++ b/handlers/default_expired.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleDefaultExpired(c echo.Context) error { + return middleware.Render(c, views.HomeView()) +} diff --git a/handlers/default_initial.go b/handlers/default_initial.go new file mode 100644 index 0000000..b683ad0 --- /dev/null +++ b/handlers/default_initial.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleDefaultInitial(c echo.Context) error { + return middleware.Render(c, views.HomeView()) +} diff --git a/handlers/default_valid.go b/handlers/default_valid.go new file mode 100644 index 0000000..3c7dada --- /dev/null +++ b/handlers/default_valid.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleDefaultValid(c echo.Context) error { + return middleware.Render(c, views.HomeView()) +} diff --git a/handlers/login_check.go b/handlers/login_check.go new file mode 100644 index 0000000..c159b71 --- /dev/null +++ b/handlers/login_check.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleLoginCheck(c echo.Context) error { + return middleware.Render(c, views.LoginView()) +} diff --git a/handlers/login_finish.go b/handlers/login_finish.go new file mode 100644 index 0000000..50dd16e --- /dev/null +++ b/handlers/login_finish.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleLoginFinish(c echo.Context) error { + return middleware.Render(c, views.LoginView()) +} diff --git a/handlers/login_initial.go b/handlers/login_initial.go new file mode 100644 index 0000000..97cf6be --- /dev/null +++ b/handlers/login_initial.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleLoginInitial(c echo.Context) error { + return middleware.Render(c, views.LoginView()) +} diff --git a/handlers/login_start.go b/handlers/login_start.go new file mode 100644 index 0000000..05478f7 --- /dev/null +++ b/handlers/login_start.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleLoginStart(c echo.Context) error { + return middleware.Render(c, views.LoginView()) +} diff --git a/handlers/register_check.go b/handlers/register_check.go new file mode 100644 index 0000000..25cddf0 --- /dev/null +++ b/handlers/register_check.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleRegisterCheck(c echo.Context) error { + return middleware.Render(c, views.RegisterView()) +} diff --git a/handlers/register_finish.go b/handlers/register_finish.go new file mode 100644 index 0000000..b98c612 --- /dev/null +++ b/handlers/register_finish.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleRegisterFinish(c echo.Context) error { + return middleware.Render(c, views.RegisterView()) +} diff --git a/handlers/register_initial.go b/handlers/register_initial.go new file mode 100644 index 0000000..f94b4d1 --- /dev/null +++ b/handlers/register_initial.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleRegisterInitial(c echo.Context) error { + return middleware.Render(c, views.RegisterView()) +} diff --git a/handlers/register_start.go b/handlers/register_start.go new file mode 100644 index 0000000..f7d6be3 --- /dev/null +++ b/handlers/register_start.go @@ -0,0 +1,11 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/components/views" + "github.com/sonr-io/motr/internal/middleware" +) + +func HandleRegisterStart(c echo.Context) error { + return middleware.Render(c, views.RegisterView()) +} diff --git a/routes/routes.go b/routes/routes.go new file mode 100644 index 0000000..fbb4dd7 --- /dev/null +++ b/routes/routes.go @@ -0,0 +1,25 @@ +//go:build js && wasm +// +build js,wasm + +package routes + +import ( + "github.com/sonr-io/motr/controller" + "github.com/sonr-io/motr/handlers" +) + +func SetupRoutes(c *controller.Controller) { + c.Server.GET("/", handlers.HandleDefaultInitial) + c.Server.GET("/expired", handlers.HandleDefaultExpired) + c.Server.GET("/valid", handlers.HandleDefaultValid) + + c.Server.GET("/login", handlers.HandleLoginInitial) + c.Server.GET("/login/:handle", handlers.HandleLoginStart) + c.Server.POST("/login/:handle/check", handlers.HandleLoginCheck) + c.Server.POST("/login/:handle/finish", handlers.HandleLoginFinish) + + c.Server.GET("/register", handlers.HandleRegisterInitial) + c.Server.GET("/register/:handle", handlers.HandleRegisterStart) + c.Server.POST("/register/:handle/check", handlers.HandleRegisterCheck) + c.Server.POST("/register/:handle/finish", handlers.HandleRegisterFinish) +}