@kvxz2114

Как лучше всего замапить запрос в структуру?

У меня есть простенькая струкутра, которая представляет собой юзера
type UserGetModel struct {
	Id    int    `json:"id"`
	Email string `json:"email"`
	Name  string `json:"name"`
}

В таблице бд есть ещё поле password, но для ответа он не нужен.

Я делаю запрос к бд:
var user model.UserGetModel

err := r.Db.QueryRow(ctx, "SELECT * FROM users WHERE user_id=$1", userID).Scan(&user.Id, &user.Email, &user.Name)

Однако в итоге запроса возвращается ещё и password и соответственно вызывает ошибку. Собственно вопрос в том, как можно без костылей и без использования orm замапить результаты запроса в структуру, в которой нет всех полей из запроса?

Спасибо)
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
Для слоя базы данных лучше всего иметь отдельные структуры, из которых потом данные перекладывать в слой бизнес-логики. Причем, лучше всего чтобы перекладыванием занимался пакет, ответственный за базу данных.
Для слоя АПИ тоже лучше свои отдельные структуры, в них перекладывать должен слой АПИ.
Слой бизнес-логики (модель) должен быть чистым от любых транспортных имплементаций и не импортить никакие пакеты базы или АПИ. Это наоборот, база и АПИ должны импортить в себя структуры бизнес-слоя, чтобы их возвращать и принимать.
Короче, это я кратко про букву D в слове SOLID.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы