chore: add experiments with validation

This commit is contained in:
2023-03-20 04:55:46 +01:00
parent d15e6106ee
commit 4103159066
3 changed files with 62 additions and 10 deletions
+30 -2
View File
@@ -2,6 +2,7 @@ package main
import (
"fmt"
"github.com/go-playground/validator/v10"
"github.com/xuri/excelize/v2"
"reflect"
"strconv"
@@ -9,18 +10,45 @@ import (
type User struct {
Id int `xlsx:"id"`
FirstName string `xlsx:"first_name"`
FirstName string `xlsx:"first_name" validate:"required"`
LastName string `xlsx:"last_name"`
Email string `xlsx:"email"`
Gender bool `xlsx:"gender"`
Balance float32 `xlsx:"balance"`
}
var validate *validator.Validate
func main() {
validate = validator.New()
data := excelToStruct[User]("Book1.xlsx", "Sheet1")
fmt.Println(data)
ok, errList := someValidation(data)
if ok {
fmt.Println("Data is valid")
fmt.Println(data)
} else {
fmt.Println("Data is not valid")
fmt.Println(errList)
}
}
func someValidation[T any](data []T) (bool, []error) {
var errList []error
for _, v := range data {
err := validate.Struct(v)
if err != nil {
errList = append(errList, err)
}
}
if len(errList) > 0 {
return false, errList
} else {
return true, nil
}
}
func excelToStruct[T any](bookPath, sheetName string) (dataExcel []T) {