Выборка из репозитария по сложному условию

Когда нужно выбрать агрегаты из репозитария по условию, которое совпадает с вычисляемым полем у агрегата, получается некоторое "дублирование" кода.

Например

class Element
  status Status
  updated_at Time

  is_ready(): bool
    return status == Ready && updated_at < now().Sub(1 * time.Hour)

Нужно реализовать в репозитарии метод поиска "готовых" Element

class ElementRepository
  get_ready(): []Element

Для этого нужно реалзивать SQL запрос, с дублированием условий WHERE status = 'ready' AND updated_at < (NOW() - INTERVAL '1 hour') и если логика get_ready поменяется, то придется менять и sql запрос.

Есть ли способ описать логику эту в одном месте?


Ответы (0 шт):