Size: a a a

Software Design/Architecture/Zen

2021 May 11

SP

Sergey Protko in Software Design/Architecture/Zen
у меня вот есть маленькая библиотечка для версионированного круда. И там вся логика в SQL зашита. А для разработчиков мега примитивный интерфейс что б они не парились. Это можно назвать в каком-то смысле "репозиторием". Просто мне не нравится любоей персистенс так называть.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
для меня репозиторий это get/add и может быть find/exists. Очень редко remove. А все остальное - это уже не репо
источник

SP

Sergey Protko in Software Design/Architecture/Zen
а по итогу я вижу людей которые ратуют за слои и у них по 50 методов в репозиториях (потому что других названий для DAO не придумали за 50 лет да) и какие-то сервисы-менеджеры
источник

k

knopkod4v in Software Design/Architecture/Zen
я вот пробовал ограничиваться get/add, но иногда find нужен. Мой кейс - применением промокода по коду самого промокода, а не по идентификатору
источник

SP

Sergey Protko in Software Design/Architecture/Zen
А комбинация того что люди имена паттернов не знают (все что в базу лезет репозиторий), и при этом пытаются их обязательно пихать в названия вещей (UserRepository или там ProductRepository) становится грустно
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну то есть промокоды в этой ситуации не учавствуют в "записи". Ты не над промокодом совершаешь операцию а "достаешь кого-то что бы у того спросить вещи".
источник

SP

Sergey Protko in Software Design/Architecture/Zen
в этом случае какой-нибудь findActivePromocode(promocode: string) не обязан быть прям в репозитории промокодов. Более того - скорее всего тебе не обязательно что бы этот метод возвращал Promocode который во врайт моделях используется, могут быть более специализированыные структуры
источник

k

knopkod4v in Software Design/Architecture/Zen
да, условно над заказом совершается действие применить промокод, а промокод только считает сумму (и ещё проверяет, что считать сумму для записи можно, потому что есть ограничения, я хз лойс или нет)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну то есть то что я наблюдаю - упрощение вида "репозиторий эта штука которая как бы представляет табличку - условный table gateway"
источник

N

Nikita in Software Design/Architecture/Zen
а если не в репо, то куда?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
it depends. я люблю такие штуки файндерами называть. Обычно это всякие выборки для UI.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
на запись же почти всегда достаточно get/find которые по айдишке достают нужные мне агрегаты. Как бы по ключу.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
грубо говоря - репозиторий можно заменить хэшмэпой. вот такое упрощение можно попробовать использовать
источник

N

Nikita in Software Design/Architecture/Zen
просто если для той же логики с промокодами где промокод нужно взять по айди, это же не для UI
источник

SP

Sergey Protko in Software Design/Architecture/Zen
но там не по ID
источник

SP

Sergey Protko in Software Design/Architecture/Zen
там по промокоду + статусу
источник

N

Nikita in Software Design/Architecture/Zen
*по имени, извиняюсь
источник

SP

Sergey Protko in Software Design/Architecture/Zen
важный нюанс - для меня репозитории полезны там где идет запись. То есть нам репозиторий нужен только для той вещи над которой мы операцию проделываем. В этом случае промокод не та штука на которую мы накидываем операции
источник

SP

Sergey Protko in Software Design/Architecture/Zen
более того - как правило применение промокода происходит ДО формирования заказа
источник

SP

Sergey Protko in Software Design/Architecture/Zen
соответственно в какой-то момент твои выборки для UI можно будет преобразовать просто в выборку по ключу если очень надо.
источник