Size: a a a

Saint P Ruby Community

2021 March 03

AD

Anton Davydov in Saint P Ruby Community
Пишешь только то, что надо и под нужную цепочку бизнес процесса. Потом рефакторишь, если что
источник

AS

Alexander Susikov in Saint P Ruby Community
Есть идея про спецификации - ими ты задаешь условия и передаешь их в метод репозитария. В ecto elixir так реализовано - собираем query по условиям и передаем в метрл repo. Что-то типо такого query = Model.where(id > 10).limit(10); records = repo.List(query)
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
Nikita Bulai
Возможно вы меня не поняли, но я про chained (а-ля из AR - where().where().joins()... и т.д.)
В чём проблема так сделать? Сделай опциональным аргументом конструктора стартовую коллекцию, возвращай из метода новый репо и чейни)
источник

NB

Nikita Bulai in Saint P Ruby Community
Ну так речь шла за то, что это не ок подход же
источник

NB

Nikita Bulai in Saint P Ruby Community
Alexander Susikov
Есть идея про спецификации - ими ты задаешь условия и передаешь их в метод репозитария. В ecto elixir так реализовано - собираем query по условиям и передаем в метрл repo. Что-то типо такого query = Model.where(id > 10).limit(10); records = repo.List(query)
о, надо глянуть как у них. Спасибо за наводку
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
Речь шла за какой то сферический репозиторий в вакууме
источник

NB

Nikita Bulai in Saint P Ruby Community
Мне казалось речь шла про достаточно обрисованный репозиторий, даж с примерами
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
Репозиторий - это объект, в котором лежит какая-то коллекция
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
А дальше придумываешь сам, как и для чего он тебе нужен
источник

NB

Nikita Bulai in Saint P Ruby Community
Ого, это откуда такое определение? 🤔
источник

AS

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

NB

Nikita Bulai in Saint P Ruby Community
а, коллекция = датасет. Ок
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
Nikita Bulai
Ого, это откуда такое определение? 🤔
Я его только что придумал
источник

NB

Nikita Bulai in Saint P Ruby Community
Да, у Ecto интересно
https://hexdocs.pm/ecto/Ecto.Repo.html#summary
источник

NB

Nikita Bulai in Saint P Ruby Community
Спасибо всем 🙇
источник

AP

Aleksandr Pilishenko in Saint P Ruby Community
Да тут почти orm. Кажется, обычно репозитории делают для упрощения интерфейса
источник

AS

Alexander Susikov in Saint P Ruby Community
А почему репозиторий не orm?
источник

AS

Alexander Susikov in Saint P Ruby Community
Точнее так - почему репозиторий не может быть orm?
источник

NB

Nikita Bulai in Saint P Ruby Community
Дык репозиторий для доступа к данным, а не о маппинге обьектов
источник

AD

Anton Davydov in Saint P Ruby Community
Alexander Susikov
Точнее так - почему репозиторий не может быть orm?
потому что это дата маппер
источник