Size: a a a

Saint P Ruby Community

2021 March 03

v

vveare138 in Saint P Ruby Community
Alexander Susikov
А если добавить чейн аля скоупы у ar, то можно и так:
Query = User.active.allowed_to_sign.page(5).per_page(10)
Users = user_repo.List(query)
репозиторий это абстракция которая инкапсулирует построение запроса и маппинг данных в/из датасета, билдить выражения и скармливать в репозиторий не нужно
источник

v

vveare138 in Saint P Ruby Community
смысла в этом нет
источник

AS

Alexander Susikov in Saint P Ruby Community
Anton Davydov
потому что это дата маппер
Возможно расхождения в терменилогии... у меня так эти понятия:
Репа - абстракция над источником данных - бд, файл, апи другого сервиса
Orm - маппинг данных из бд(релиционных) в объекты
Дата маппер - маппинг одних структур на другие
Поэтому если репа скрывает за собой реляционные бд почему мы не можем назвать ее orm?
источник

NB

Nikita Bulai in Saint P Ruby Community
vveare138
репозиторий это абстракция которая инкапсулирует построение запроса и маппинг данных в/из датасета, билдить выражения и скармливать в репозиторий не нужно
https://martinfowler.com/eaaCatalog/repository.html

> Client objects construct query specifications declaratively and submit them to Repository for satisfaction.
источник

v

vveare138 in Saint P Ruby Community
Nikita Bulai
https://martinfowler.com/eaaCatalog/repository.html

> Client objects construct query specifications declaratively and submit them to Repository for satisfaction.
и где противоречие?)
источник

AS

Alexander Susikov in Saint P Ruby Community
vveare138
смысла в этом нет
Смысл иметь в репе 4 метода, а вариативность отдать другой сущности. Иначе получаем безумное количество методов на все возможные комбинации условий
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
Nikita Bulai
https://martinfowler.com/eaaCatalog/repository.html

> Client objects construct query specifications declaratively and submit them to Repository for satisfaction.
Репозиторий слишком широкий термин, чтобы любое его упоминание автоматом относить к какому-то конкретному паттерну, на мой взгляд
источник

NB

Nikita Bulai in Saint P Ruby Community
vveare138
и где противоречие?)
Тут ты билдишь запрос и кормишь репе (из статьи)

А у тебя репа билдит запрос
источник

AS

Alexander Susikov in Saint P Ruby Community
Ну вообще это все субъективизм🙂 Если решение работает, то его можно назвать правильным🙂 Я рассказал про то решение, которое работает для меня. Антон про свое, ты про свое - есть из чего выбирать и это круто
источник

AD

Anton Davydov in Saint P Ruby Community
vveare138
репозиторий это абстракция которая инкапсулирует построение запроса и маппинг данных в/из датасета, билдить выражения и скармливать в репозиторий не нужно
Тоже тут поддержу
источник

AD

Anton Davydov in Saint P Ruby Community
Alexander Susikov
Возможно расхождения в терменилогии... у меня так эти понятия:
Репа - абстракция над источником данных - бд, файл, апи другого сервиса
Orm - маппинг данных из бд(релиционных) в объекты
Дата маппер - маппинг одних структур на другие
Поэтому если репа скрывает за собой реляционные бд почему мы не можем назвать ее orm?
Не, репо - абстракция над релейшеном, а релейшен это уже штука которая в бд ходит и схему бд мапит
источник

AD

Anton Davydov in Saint P Ruby Community
Alexander Susikov
Ну вообще это все субъективизм🙂 Если решение работает, то его можно назвать правильным🙂 Я рассказал про то решение, которое работает для меня. Антон про свое, ты про свое - есть из чего выбирать и это круто
Это факт
источник

AD

Anton Davydov in Saint P Ruby Community
Anton Davydov
Не, репо - абстракция над релейшеном, а релейшен это уже штука которая в бд ходит и схему бд мапит
В моем мире
источник

v

vveare138 in Saint P Ruby Community
Nikita Bulai
Тут ты билдишь запрос и кормишь репе (из статьи)

А у тебя репа билдит запрос
под запросом подразумевается “верни мне юзеров с активным статусом“, а не выражение построенное средствами orm или sql строка
источник

v

vveare138 in Saint P Ruby Community
это должно быть скрыто в репозитории
источник

v

vveare138 in Saint P Ruby Community
иначе тогда зачем этот репозиторий нужен, если можно сделать User.active.allowed_to_sign.page(5).per_page(10).all :)
источник

NB

Nikita Bulai in Saint P Ruby Community
Anton Davydov
Не, репо - абстракция над релейшеном, а релейшен это уже штука которая в бд ходит и схему бд мапит
О, кстати, еще вопрос: QueryObject вызывает репозиторий или репозиторий query object? Или пофигу?
источник

AD

Anton Davydov in Saint P Ruby Community
Nikita Bulai
О, кстати, еще вопрос: QueryObject вызывает репозиторий или репозиторий query object? Или пофигу?
Первое
источник

NB

Nikita Bulai in Saint P Ruby Community
vveare138
под запросом подразумевается “верни мне юзеров с активным статусом“, а не выражение построенное средствами orm или sql строка
Да, звучит разумно. Согласен
источник

AD

Anton Davydov in Saint P Ruby Community
Для меня квери - это ближе к cqrs разделений
источник