diff --git a/auth/api/main.go b/auth/main.go similarity index 83% rename from auth/api/main.go rename to auth/main.go index 94c3c2fb..aa2ecf5a 100644 --- a/auth/api/main.go +++ b/auth/main.go @@ -9,6 +9,7 @@ import ( "github.com/zoriya/kyoo/keibi/dbc" + "github.com/go-playground/validator/v10" "github.com/golang-migrate/migrate" "github.com/golang-migrate/migrate/database/postgres" "github.com/labstack/echo/v4" @@ -30,6 +31,17 @@ func ErrorHandler(err error, c echo.Context) { }{Errors: []string{message}}) } +type Validator struct { + validator *validator.Validate +} + +func (v *Validator) Validate(i interface{}) error { + if err := v.validator.Struct(i); err != nil { + return echo.NewHTTPError(http.StatusBadRequest, err.Error()) + } + return nil +} + func OpenDatabase() (*sql.DB, error) { con := fmt.Sprintf( "postgresql://%v:%v@%v:%v/%v?application_name=gocoder&sslmode=disable", @@ -79,9 +91,10 @@ type Handler struct { func main() { e := echo.New() e.Use(middleware.Logger()) + e.Validator = &Validator{validator: validator.New(validator.WithRequiredStructEnabled())} e.HTTPErrorHandler = ErrorHandler - db, err := OpenDatabase(); + db, err := OpenDatabase() if err != nil { e.Logger.Fatal(err) return