Hello, LOR
Пишу веб сервис на typescript. Прислушавшись к громкому меньшинству, принял решение не испоьзовать ORM, а писать прям SQL-запросы (строковыми литералами).
Сперва все пошло более-менее ровно, пока не появился JOIN. Та самая хваленая оптимизация, делающая один запрос там, где какая-нибудь ORM делает N+1
Условно, есть таблица «товары» и таблица «свойства_товара». Наивным способом сначала загружаем список товаров, затем в цикле SELECT-им свойства каждого по uid.
Но мы же крутые. Обладая всей мощью SQL, делаем «товары LEFT JOIN свойства_товара». И получаем.. Херню мы получаем! Длинный ряд столбцов. С повторяющимися именами (в этих таблицах есть одноименные столбцы). А с учетом того, что заботливый драйвер postgres превращает ряды в словари, одинаковые имена просто схлопываются
Погуглил что предлагает коллективный надмозг. Надмозг предлагает жесть. Разделять столбцы разделителями и потом програмно собирать эту змею в объекты:
---- foo, bar из первой таблицы. baz, bang из второй
SELECT foo, bar, '|', baz, bang
Подскажите, есть ли более лучший способ? Postgresql декларируется как фичастый и объектный. Должен же быть способ получше? Как вернуть из базы ответ в более структурированном виде? Может есть способ при селекте как-то скомбинировать поля и вернуть одним полем. Или еще как-то?