Многие golang framework-и с валидацией, так вот как вы пишете валидацию и sql запросы?
Пример 1:
//создаем структ регистрации формы
type UserRegister struct {
Email string `validate:"required,max=20,min=8"`
Password string `validate:"required,max=20,min=8"`
Captcha string `validate:"required,captcha"`
}
//Создаем метод вставки в базу юзера
func (u *UserRegister) Insert() {
//код вставки
}
//Проверяем вставляем
func Controller(n *N) {
var userRegister UserRegister
err := validator.Validate(&userRegister)
if err == nil {
userRegister.Insert()
}
}
Пример 2:
//Основной структ юзера
type User struct {
Id int
Email string
Password string
Active int
//еще какието столбцы таблицы юзера
}
//методы для работы с юзером user.Insert(), user.SelectById() и т.д.
func (u *UserRegister) Insert() {
//код вставки
}
func (u *UserRegister) IsUniqueEmail() {
//код проверки
}
//
type UserRegister struct {
Email string `validate:"required,max=20,min=8"`
Password string `validate:"required,max=20,min=8"`
Captcha string `validate:"required,captcha"`
}
//Валидация userRegister - переносим после валидации в основной struct юзер - вставляем
var userLogin UserRegister
err := validator.Validate(&userRegister)
if err == nil {
//Переносим данные в основной юзер структ
user := User{
Email: userRegister.Email,
Password: userRegister.Password,
...
}
//Вставляем
user.Insert()
}
То есть, из примера 1 - создаем структ и методы для работы с этим структом ИЛИ ЖЕ из примера 2 -
создаем основной структ юзер с методами, а другие структы (userRegister к примеру) только для валидации и после валидации копируем данные в основной структ для работы с базой!? Как правильно(лучше, удобней, почему)? Может как-то по другому?