Kirill
какой?
Kirill
это вообще реализация
Павел
Вот поэтому я и не делю на папочки домена,апп и инфры, потому что одни сплошные бессмысленные драки)))
Kirill
да причём тут драки, я вообще анта не понимаю)))
Kirill
он что-то сам себе выдумал и предьявы кидает какие-то)
Павел
да причём тут драки, я вообще анта не понимаю)))
А потому что всегда будет "я считаю что в этой папочке должно, а он считает что в другой"
Павел
А приложению от этого насрать)))
Kirill
Да хз, в домене я к домену обращаюсь
Kirill
Kirill
вон репки из домена
Павел
Да хз, в домене я к домену обращаюсь
Да ты недавно сам спрашивал в другом чате в какой лучше папочке лежать должно)
Павел
Ну точнее к какому слою относить, а в твоем случае в папочке
Kirill
и понял что апп слой самый наркоманский
Павел
ага, пытался нарезать апп и домен нормально
Ну вот смотри, я пишу без интерфейсов на репозиторий. В какую папочку мне положить репо?)
Павел
После этой дилемы я нахер выкинул эту идею
Kirill
задача репы абстрагироваться от систем хранения
Kirill
в идеале конечно по 1 интерфейсу на 1 метод получения/сохранения
Павел
Поспрашивал еще несколько компетентных людей, сказали тоже нахер.
The Ant
Теперь понял )
The Ant
Но у тебя все равно в домене инфра 🤣🤣🤣 я про хешер
The Ant
Он от фрейма
Kirill
но это интерфейс, так что не страшно
Nikolay
Он от фрейма
Кто-то в домене и uuid хранит
Павел
Кто-то в домене и uuid хранит
ммм а чем userId не доменная штука?
Nikolay
ммм а чем userId не доменная штука?
Имеется ввиду инфраструктурный компонент сам
Павел
Ну в целом это вообще муть. Усложнение ради усложнения.
Kirill
так просто не надо оверинжинерить и всё)
Kirill
по минималке норм
Павел
понимаю...
По итогу это все равно будет зависеть от какой то инфры
Павел
так просто не надо оверинжинерить и всё)
Ага, сказал у кого уже овер)
Kirill
По итогу это все равно будет зависеть от какой то инфры
ну вообще да, лол, только сейчас это понял
Павел
Это субъективно всё
The Ant
Я вот думаю что эти домены фигня полная. И обмазываться интерфейсами на репозиториях чёт гемор какойто
Kirill
да вообще не гемор, пара минут же
Kirill
а вообще сложить репку в инфру и подрубить через DI в домен и норм, на интерфейс и потом можно поменять когда понадобится
The Ant
Да ну просто у репо одна реализация. И интерфейс туда корячишь просто так
The Ant
Чтобы было
Kirill
у меня по несколько бывает
The Ant
А сколько?
The Ant
И зачем?
Kirill
там где, например, кеш в оперативе для быстрой выборки словарей
The Ant
Декоратор юзать, не?
Павел
Декоратор юзать, не?
Декоратор в идеале через интерфейс)
The Ant
🤷😄
The Ant
Проголосую против
Ну вот кстати, видел чтобы кто-то юзал доктриновских сущности кроме сохранения в бд ещё как-то?
Павел
Только так и используем
The Ant
Это как?
The Ant
Рич модел типа?
Павел
Если ты пишешь через рич стиль, или агрегаты у тебя только 2 варианта: - писать в энтити доктрины - писать ещё один слой моделей и маппинг с доктрины и обратно
Павел
2ой слишком сложно и мало смысла
Kirill
ну так можно и без суперрич всяких
Павел
Ну вот кстати, видел чтобы кто-то юзал доктриновских сущности кроме сохранения в бд ещё как-то?
Представь есть баланс пользователя и инвариант что он не может быть меньше 0. Валидатор и какой нить balanceCheckerService можно и забыть вызвать. А если это в сущности, то не забудешь при новом сценарии, который будет трогать баланс
Kirill
на уровне сущности это инвариант
Kirill
на внешнем уровне - валидация внешняя
Kirill
а ещё должна быть доменная
The Ant
Представь есть баланс пользователя и инвариант что он не может быть меньше 0. Валидатор и какой нить balanceCheckerService можно и забыть вызвать. А если это в сущности, то не забудешь при новом сценарии, который будет трогать баланс
Честно говоря, это вилами на воде. Баланс в приложухе может быть больше нуля, и логика тип работает. По факту баланс ноль в бд. Потому что кто-то устроил дюп на баланс. Или как оно правильно называется, когда миллиард запросов параллельно ) Тебе придется хендлить ошибку в бд, роллбечить транзы, писать лог, трейс и ТД. Так или иначе нужен будет сервис, который занимается процессингом заказа.
Kirill
и опять же, внешняя валидация вполне может допустить balance < 0, потому что ей важны только данные, а не то в каком состоянии приложение
Kirill
*внешняя == презентейшн/реквест дто
Павел
имхо, ты не прав
Так я вроде так и написал. Просто расписал какие варианты реализовать условие от бизнеса "баланс не может быть меньше 0" То что я назвал его инвариантов, говорит о том, что это нерушимое правила, а не говорит где оно находится
Павел
на уровне сущности это инвариант
Ты делишь по своим каким то слоям и тп а я рассматриваю задачу
Kirill
Павел
а ещё то, что оно в проде может быть отключено)
Инвариант - это то что не может нарушаться нигде и никак.
Kirill
всё же инварианты - это терминология DbC, а контракты на проде отключаются
Павел
Это решается локами.
Если есть проблемы с ними, значит уже смотреть в сторону как перформанс нагнать
The Ant
Инвариант - это то что не может нарушаться нигде и никак.
Истина хранится в базе. Там и реализуется этот инвариант ) пишешь ансигнед инт и все 🤣