59 lines
1.6 KiB
Go
59 lines
1.6 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"
|
|
"github.com/labstack/echo/v4/middleware"
|
|
"gitnet.fr/deblan/budget/config"
|
|
"gitnet.fr/deblan/budget/database/manager"
|
|
"gitnet.fr/deblan/budget/database/model"
|
|
"gitnet.fr/deblan/budget/backend/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{})
|
|
manager.Get().Db.AutoMigrate(&model.BankAccount{})
|
|
manager.Get().Db.AutoMigrate(&model.SavingAccount{})
|
|
manager.Get().Db.AutoMigrate(&model.Transaction{})
|
|
manager.Get().Db.AutoMigrate(&model.Category{})
|
|
manager.Get().Db.AutoMigrate(&model.CategoryRule{})
|
|
|
|
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("../../backend/view/static").HTTPBox())
|
|
e.GET("/static/*", echo.WrapHandler(http.StripPrefix("/static/", assetHandler)))
|
|
e.Use(middleware.Logger())
|
|
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)
|
|
}
|
|
}
|