Виктор
Ок, допустим я "обезличил" комментарии. Теперь это просто класс Comment, а getParent возвращает какой-нибудь GalleryEntityInterface. Вывожу последние. Нужны ссылки на родителей. Как мне их формировать? Проверять для каждого коммента класс родителя (Album/Photo/...)?
Павел
Есть модуль комментов.
У него 4 контракта для других модулей:
create(type, parentId, text)
remove(id)
update(id, newtext)
getList(type, parentId)
Павел
И другие модули вертят этими контарктами как хотят
Павел
Павел
The Ant
Его тоже могут переименовать
Павел
Представь что это микросервис комментов. Пацаны его сделали и он работает, его даже не поддерживают. Комманда распустилась
Зачем там вводить ограничение на type?
Павел
Это даст ровно нихера, кроме случайной ошибки, на которую тоже пофиг
The Ant
Зачем он там вообще? ) это проблема внешних сервисов, идентифицировать у себя там чтото
Павел
Павел
Без коллизий
The Ant
В сервисе комментов не нужно. Достаточно просто по иду пачку записей запросить
Павел
Павел
Тем более что parentId может быть не uuid
The Ant
Зависит от частоты, да
Павел
Сделай просто type и не парься
The Ant
Хз 🤷
Павел
Один сервис будет ходить и хранить по
getList('album', uuidId1)
другой по
getList('user', intId1)
Павел
Можно и int и что угодно передавать
Павел
Но правда в строковом формате
The Ant
На самом деле коллизии с типом тоже будут возможны, с ууидом)
Павел
Павел
Что он может отдать некорректные данные
The Ant
Вот со счётчиком проблема да. Но решаема лишним запросом в сервис с последующим кешированием. В остальном хз.
Ну м.б. ещё показать 1-2 последних коммента
Павел
The Ant
Может мое тож нормально. Сходу накинулся )
Павел
Может мое тож нормально. Сходу накинулся )
Да ты сам уже несколько проблем подтвердил )) но ты все равно ишешь варианты как это использовать и решать проблемы, когда можно просто их не создавать изначально)))
Павел
The Ant
Хз, я сам не уверен можно ли считать за каплинг зависмость в атрибутах... 😄
Павел
В модуле комментов нет никаких связей ко внешним модулям
Павел
Павел
Там просто еще один пропс, который #[column(type='string')]
Павел
Павел
С точки зрения модуля комментов, добавляется только #[column(type='string')] string $type
Павел
Там не будет разных сущностей
Павел
Только одна Comment
The Ant
Выше уже говорил, просто стринг поддерживать тяжко будет.
Надо будет поменять тип и чо делать? Миграцию писать?
Павел
The Ant
Или отдельные апи ендпоинты
Павел
сделай 2 стринга 256
string type
string parentId
и покроешь 99,9 кейсов наверное
Павел
The Ant
Ну вот мне надо будет поменять значение в поле type, как?
Павел
The Ant
Хз, приспичит
Павел
Это тоже самое, что поменять названия констант, енамов, а потом думать что делать с БД
The Ant
Назвал тип неудачно. Или появилась похожая сущность или ещё какая дичь.
Павел
The Ant
Павел
Про это и речн
ой ладн, уже какой то бред пошел. Придумываю несуществующие проблемы
Павел
Ты type='sdfdsf234234' хоть так назови, в коде прост сделай const TYPE= ''sdfdsf234234'
Павел
И тебе никогда не нужно будет знать что он sdfdsf234234
Павел
А если уж пошло за треш, то именно модуль комментов может выдавать type чтобы гаранировать уникальность
Павел
т.е. сделать в нем регистрацию и он выдаст client_id (type)
Павел
Как делают все внешние сервисы когда ты передаешь его
The Ant
Обычно все по другому ) и заранее не думают. Вот как ты сейчас, говоришь что это бред ) назвал бы article и все. Потом позже появился бы ещё один такой тип, и ты захочешь поменять. Тип articlefoo, articlebar
The Ant
Именно так и будешь думать
The Ant
The Ant
Будет все "по фен-шую", вдруг я в прод базу полезу, и должен буду понимать чё там
Павел
type может быть и uuid и что угодно. Человекчитаемым он быть не должен, да и никому не нужно
Павел
С точки зрения комментов - им не нужено знать какой коммент к чему относится, с точки зрения поиска - им дадут конреный тип
The Ant
Может да, но будет человекочитаемым с вероятностью 99.99% )
Павел
Короче я хз че мы тут обсуждаем)) проблемы которые ты хочешь сделать но можно легко их не делать?)
The Ant
Ладно крч. Уже рили хуйней страдаем. Но я как нить все равно попробую без типа 😄 при возможности
Юра
Павел
The Ant
С комментариями в целом все сложнее чем кажется на первый взгляд. Все очень зависит от задачи. Если просто отсортировать по счётчику комментов это одно, если надо наиболее цитируемое за последние сутки, то вообще другая реализация будет.
Для последних комментов на сайте отдельный пиздец. В обзоре показать под постом последние 3 коммента тоже будет не просто.
Павел