budget-go/cmd/server/server.go
2024-09-17 15:00:21 +02:00

53 lines
1.3 KiB
Go

package main
import (
"errors"
"flag"
"fmt"
"log"
"net/http"
"text/template"
rice "github.com/GeertJohan/go.rice"
"github.com/go-playground/validator"
"github.com/gorilla/sessions"
"github.com/labstack/echo-contrib/session"
"github.com/labstack/echo/v4"
"gitnet.fr/deblan/budget/config"
"gitnet.fr/deblan/budget/database/manager"
"gitnet.fr/deblan/budget/database/model"
"gitnet.fr/deblan/budget/web/router"
)
type TemplateRenderer struct {
templates *template.Template
}
type AppValidator struct {
validator *validator.Validate
}
func (cv *AppValidator) Validate(i interface{}) error {
return cv.validator.Struct(i)
}
func main() {
ini := flag.String("c", "config.ini", "Path to config.ini")
conf := config.Get()
conf.Load(*ini)
manager.Get().Db.AutoMigrate(&model.User{})
e := echo.New()
e.Use(session.Middleware(sessions.NewCookieStore([]byte("secret"))))
e.Validator = &AppValidator{validator: validator.New()}
e.Static("/static", "static")
assetHandler := http.FileServer(rice.MustFindBox("../../web/view/static").HTTPBox())
e.GET("/static/*", echo.WrapHandler(http.StripPrefix("/static/", assetHandler)))
router.RegisterControllers(e)
if err := e.Start(fmt.Sprintf("%s:%d", conf.Server.Address, conf.Server.Port)); err != nil && !errors.Is(err, http.ErrServerClosed) {
log.Fatal(err)
}
}