chore: add experiments with validation
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user