возвращает объект dto? или лучше объявить внутри репозитория структуру которая будет возвращатся и потом конвертировать ее в dto объект? там в целом нет какой то особенной бизнес логики, нужно просто взять из базы таблицу с джойнами и отправить ее jsonом. я сделал структуру дто и планировал ее отправлять, но мне почему то показалось что прокидование дто структуры в слой репозитория это как-то плохо, или нет?
у нас было, что репозиторий принимает модель одного слоя, конвертирует её в модель дб, делает операции, после снова через дто конвертирует и возвращает назад из репо
я реализовывал отдельно модель, отдельно дто. во-первых посчитал, что разделение уместное. во-вторых у меня были типы аля sql.NullString. а в дто такого не хотелось, ну а проверять это все в репозитории как-то не комильфо, поэтому выносил отдельно. итого репозиторий возвращает модель, а в сервисе уже варится дто но вопрос интересен. интересно что скажут профессионалы)
вместо sql.NullString можно использовать просто ссылку - я даже в видео про работу с PSQL говорил об этом
либа, с которой я работаю с базой github.com/jmoiron/sqlx
sqlx это расширение интерфейсов database/sql
в целом элеГантно, но порой в коде торчат места вида t := "abc" a.NULLAwareField = &t. Неприятненько
а что не приятного? тебе подсказывают где тебе так надо сделать, а делается это 1 символом. красота )
да, красиво. Но фломастеры тоже разные на вкус. К тому же, если надо выплюнуть в json, да & не велик накладной расход. Однако, если надо работать с этой штукой тогда if a.NULLAwareField != nil && *a.NULLAwareField != "" {...} вылезают как грибы после дождя. Для меня это не проблема, но джунов такое сбивает с толку и такая мешанина получается. Но при всём при этом sql.Null[Int64,String] ещё меньше нравится :)
так если sql.NullString, то там выходит вместо if a.NULLaware будет if a.Valid а те самые джуны, как вы говорите, засунут эти NullString в основную модель и сделают жесткую зависимость
Да. Но это явное обращение. Жёсткая зависимость от stdlib не такая уж и жОсткая. И повторюсь *String в моделях я употребляю чаще, так что не пойму отчего спорю :D
Обсуждают сегодня