данных для http слоя генерируются из сваггера. Когда выносите логику из http в отдельный слой вы создаете свои структуры данных для этого слоя и конвертите, или используете прямо из сваггера?
так
type UserService interface {
CreateUser(*swagger.User) error
}
или так
type InternalUser struct {
...
}
func ToInternalUser(*swagger.User) *InternalUser {
...
}
type AnotherUserService interface {
CreateUser(*InternalUser) error
}
Конвертим и наши приложения на треть состоят из перекладывания структур)
Конвертим. А потом ещё раз, в структуры dal
погугли шаблон Data Mapper
Я на скотском серьезе
Присоединюсь к вопросу. Если структуры совпадают, то насколько приемлимо задекларировать Account = api.AccountRequest, и конвертировать "саму в себя"? Надеюсь идея достаточно понятна, но если нет, то я поясню кодом.
через = если определять, то и конвертить не надо
Я бы конструктор определил, с заделом на будущее.
Этот алиас проживет до первого изменения протокола и/или бизнес-логики
Да, поэтому и предлагаю всё-таки делать это через конструктор. Херня?
Конвертер - да, так и делаем
Именно алиас интересует... Как раз сейчас такой проект... круд-круд, отличий быть не может, но архитектуру хочется делать нормальную. Вот и думаю как на два стула сесть.
Если crud - отдельных структур для бизнес-логики не надо, но для DAL нужны обязательно
Представьте, что каждая часть это независимый пакет. Поэтому и разные структуры.
Обсуждают сегодня