57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
|
package serve
|
||
|
|
||
|
import (
|
||
|
echosession "github.com/labstack/echo-contrib/session"
|
||
|
"github.com/labstack/echo/v4"
|
||
|
echomiddleware "github.com/labstack/echo/v4/middleware"
|
||
|
"github.com/uptrace/bun/extra/bundebug"
|
||
|
"github.com/urfave/cli/v2"
|
||
|
"go.neonxp.ru/framework/pkg/config"
|
||
|
"go.neonxp.ru/framework/pkg/db"
|
||
|
"go.neonxp.ru/framework/pkg/handler"
|
||
|
"go.neonxp.ru/framework/pkg/handler/user"
|
||
|
"go.neonxp.ru/framework/pkg/middleware"
|
||
|
"go.neonxp.ru/framework/pkg/middleware/session"
|
||
|
userservice "go.neonxp.ru/framework/pkg/service/user"
|
||
|
"go.neonxp.ru/framework/static"
|
||
|
)
|
||
|
|
||
|
func Run(c *cli.Context) error {
|
||
|
configFile := c.String("config")
|
||
|
|
||
|
cfg, err := config.New(configFile)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
dbClient := db.New(cfg.DB)
|
||
|
dbClient.AddQueryHook(bundebug.NewQueryHook(bundebug.WithVerbose(cfg.Debug)))
|
||
|
|
||
|
store, err := session.New(dbClient, cfg.Keypairs)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
e := echo.New()
|
||
|
e.HTTPErrorHandler = handler.ErrorHandler
|
||
|
e.Use(
|
||
|
echomiddleware.Recover(),
|
||
|
echomiddleware.Logger(),
|
||
|
echomiddleware.RemoveTrailingSlash(),
|
||
|
echosession.Middleware(store),
|
||
|
middleware.Context("config", cfg),
|
||
|
middleware.User(),
|
||
|
)
|
||
|
|
||
|
userService := userservice.NewService(dbClient)
|
||
|
|
||
|
router := handler.Router{
|
||
|
"/user": user.NewHandler(userService),
|
||
|
}
|
||
|
router.Register(e)
|
||
|
|
||
|
e.StaticFS("/", static.FS)
|
||
|
|
||
|
return e.Start(cfg.Listen)
|
||
|
}
|