Answer the question
In order to leave comments, you need to log in
How to properly organize structures with validation, methods?
Many golang frameworks have validation, so how do you write validation and sql queries?
Example 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()
}
}
//Основной структ юзера
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()
}
Answer the question
In order to leave comments, you need to log in
Transferring data from structure to structure causes a bunch of allocations - minus performance.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question