смаппить связь one-to-many на структуру или всегда необходимо делать доп.запрос? с помощью sqlx какого-нибудь или какой-либо другой либы
type User Struct {
Id int64
Name string
Posts []Post // one to many
}
вы определитесь, вам нужен ОРМ или нет. Потому что то, чего вы хотите - это основной функционал ОРМ и есть
в целом для моих задач ОРМ как правило избыточен, но иногда необходимо написать метод, возвращающий, например, пользователя и список его адресов. после большого кол-во времени использования ОРМ в других языках, первое, что приходит на ум - как раз подход ОРМ))
посмотрите все же в сторону gorm, это скорее query builder, чем прямо ОРМ, скорее всего, вам зайдет
вообще забавно. в ряде случаев люди приходят к мысли. что их задачи орм уже не тащит. (селекты)
так тут одно из двух: либо твои задачи слишком простые для того, чтобы использовать орм (какой-нибудь простой селект с маршалингом в структуру), либо слишком сложные (34575934857 джоинов)
Что плохого в ОРМ при сложном запросе, если с ним билдер справляется? Никакого оверхеда то на создание запроса нет.
то что вам нужно называется eager loading и ORM именно делает обычно несколько запросов
когда джойнов прям оч много обычным sql проще
Это потом поддерживать надо. Мне приятнее, когда инструмент при рефакторинге связывает элементы запроса с кодом. Вот на порядки приятнее)
последнее понимаю. но не понимаю смысла использования орм в таком случае, если либы вроде sqlx с маппингом в структуры справляется. ради queryBuilder’а?
sqlx не сходит за вас в таблицы, если одна часть структуры лежит в одной таблице, а другая в другой
если между таблицами есть связь - то можно сделать так, что сходит, нет? если это, конечно, не one-to-many, как я описывал ранее
То есть если я хочу писать sql руками, но чтобы структуры сами мапились в джоинах, мне придётся тащить gorm или на каждый запрос делать свой тип и руками джойнить данные в коде?
Загугли sqlc и не парься
ну да, написать джойн
ну или ent
Ну это кодогенерация, такого тоже хотелось бы избежать
sqlx маппит строки в структуры это все что он делает
Лол, это наоборот прекрасно, руками ниче делать не надо
Есть что-то внутри меня, что отталкивает кодогенерацию. Отчасти из-за того, что я только погружаюсь в го, поэтому этот механизм мне чужд
Советую разобраться в кодогенерации
Да уж придётся, видимо
У меня доклад недавно был на эту тему https://youtu.be/jkKwtNOR8C0
Блин, Контур тоже на го пишет? Там же шарписты раньше были (
Я в контуре на го пишу практически один) Кстати, ко мне в команду в Казани нужен разработчик)
Обсуждают сегодня