add validation

This commit is contained in:
kandrusyak
2023-08-02 15:57:56 +03:00
parent 481bd0b788
commit a1705758df
3 changed files with 18 additions and 9 deletions

View File

@@ -12,6 +12,8 @@ import (
"gorm.io/gorm/logger"
"log"
"os"
"reflect"
"strings"
"time"
)
@@ -40,6 +42,13 @@ func main() {
db.AutoMigrate(&model.Event{})
validate := validator.New()
validate.RegisterTagNameFunc(func(fld reflect.StructField) string {
name := strings.SplitN(fld.Tag.Get("json"), ",", 2)[0]
if name == "-" {
return ""
}
return name
})
var h = &handler.Handler{DB: db, Validator: validate}

View File

@@ -21,8 +21,8 @@ type Event struct {
}
type CreateEvent struct {
Start time.Time `json:"start" validate:"required"`
End time.Time `json:"end" validate:"required"`
Person PersonalInformation `json:"person" validate:"required"`
Start time.Time `json:"start" validate:"required,gt"`
End time.Time `json:"end" validate:"required,gtfield=Start"`
Person *PersonalInformation `json:"person" validate:"required,dive"`
MedicId uuid.UUID `json:"medic_id" validate:"required"`
}

View File

@@ -3,11 +3,11 @@ package model
import "github.com/google/uuid"
type PersonalInformation struct {
ID uuid.UUID `json:"id,omitempty"`
FirstName string `json:"first_name,omitempty"`
LastName string `json:"last_name,omitempty"`
Patronymic string `json:"patronymic,omitempty"`
Phone string `json:"phone,omitempty"`
ID uuid.UUID `json:"id,omitempty" validate:"required_without_all=FirstName LastName Patronymic Phone"`
FirstName string `json:"first_name,omitempty" validate:"required_without=ID"`
LastName string `json:"last_name,omitempty" validate:"required_without=ID"`
Patronymic string `json:"patronymic,omitempty" validate:"required_without=ID"`
Phone string `json:"phone,omitempty" validate:"required_without=ID"`
}
type PersonalInformationCreate struct {