You've already forked reloading-manager
Reviewed-on: rrise/reloading-manager#1 Co-authored-by: Ron Rise <ron@siteworxpro.com> Co-committed-by: Ron Rise <ron@siteworxpro.com>
115 lines
2.9 KiB
Go
115 lines
2.9 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"git.siteworxpro.com/packages/go/utilities/Env"
|
|
"git.siteworxpro.com/reloading-manager/backend/database"
|
|
"git.siteworxpro.com/reloading-manager/backend/handlers/bullets"
|
|
"git.siteworxpro.com/reloading-manager/backend/handlers/cartridge"
|
|
"git.siteworxpro.com/reloading-manager/backend/handlers/loads"
|
|
"git.siteworxpro.com/reloading-manager/backend/handlers/manufacturer"
|
|
"git.siteworxpro.com/reloading-manager/backend/handlers/powder"
|
|
"git.siteworxpro.com/reloading-manager/backend/handlers/primers"
|
|
"github.com/go-playground/validator"
|
|
"github.com/labstack/echo/v4"
|
|
"github.com/labstack/echo/v4/middleware"
|
|
"github.com/labstack/gommon/log"
|
|
"net/http"
|
|
)
|
|
|
|
const (
|
|
Port Env.EnvironmentVariable = "PORT"
|
|
)
|
|
|
|
type (
|
|
CustomValidator struct {
|
|
validator *validator.Validate
|
|
}
|
|
)
|
|
|
|
func (cv *CustomValidator) Validate(i interface{}) error {
|
|
if err := cv.validator.Struct(i); err != nil {
|
|
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func main() {
|
|
e := echo.New()
|
|
|
|
e.Validator = &CustomValidator{validator: validator.New()}
|
|
|
|
e.HideBanner = true
|
|
e.HidePort = true
|
|
|
|
e.Logger.SetLevel(log.DEBUG)
|
|
|
|
e.Use(database.CreateDatabaseMiddleware())
|
|
e.Use(middleware.Recover())
|
|
e.Use(middleware.Logger())
|
|
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
|
|
AllowOrigins: []string{"http://localhost:5173", "http://127.0.0.1:5173"},
|
|
AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE"},
|
|
}))
|
|
|
|
migrate(e)
|
|
|
|
// Bullets
|
|
e.GET("/bullet", bullets.Get)
|
|
e.GET("/bullet/:id", bullets.Get)
|
|
e.GET("/bullet/:id/photo", bullets.Photo)
|
|
e.POST("/bullet", bullets.Post)
|
|
e.POST("/bullet/:id", bullets.Put)
|
|
e.DELETE("/bullet/:id", bullets.Delete)
|
|
|
|
// Manufacturers
|
|
e.GET("/manufacturer", manufacturer.Get)
|
|
e.GET("/manufacturer/:id", manufacturer.Get)
|
|
e.POST("/manufacturer", manufacturer.Post)
|
|
e.POST("/manufacturer/:id", manufacturer.Post)
|
|
e.DELETE("/manufacturer/:id", manufacturer.Delete)
|
|
|
|
// Powders
|
|
e.GET("/powder", powder.Get)
|
|
e.GET("/powder/:id", powder.Get)
|
|
e.GET("/powder/:id/photo", powder.Photo)
|
|
e.POST("/powder", powder.Post)
|
|
e.POST("/powder/:id", powder.Post)
|
|
e.DELETE("/powder/:id", powder.Delete)
|
|
|
|
// Primers
|
|
e.GET("/primer", primers.Get)
|
|
e.GET("/primer/:id", primers.Get)
|
|
e.GET("/primer/:id/photo", primers.Photo)
|
|
e.POST("/primer", primers.Post)
|
|
e.POST("/primer/:id", primers.Post)
|
|
e.DELETE("/primer/:id", primers.Delete)
|
|
|
|
// cartridge
|
|
e.GET("/cartridge", cartridge.Get)
|
|
e.POST("/cartridge", cartridge.Post)
|
|
e.DELETE("/cartridge/:id", cartridge.Delete)
|
|
|
|
// loads
|
|
e.GET("/load", loads.Get)
|
|
e.POST("/load", loads.Post)
|
|
|
|
addr := fmt.Sprintf("0.0.0.0:%s", Port.GetEnvString("8080"))
|
|
|
|
e.Logger.Info("Starting Server...")
|
|
e.Logger.Infof("Listening on %v", addr)
|
|
e.Logger.Fatal(e.Start(addr))
|
|
}
|
|
|
|
func migrate(e *echo.Echo) {
|
|
e.Logger.Info("Starting migrations...")
|
|
|
|
db := database.GetNewDatabase()
|
|
|
|
defer db.Db.Close(context.Background())
|
|
|
|
db.Migrate()
|
|
e.Logger.Info("Done!")
|
|
}
|