Если в двух словах, то апи будет:
1. в запросе принимать id юзера, id поста
2. проверять, есть ли в бд есть запись с id юзера и id поста
3. если записи нет, то добавлять в бд
4. прочие инсерты и апдейты в бд, по типу "начислить баллов пользователю (обновить баланс и добавить запись в таблицу user_points_changes)"
и все это в рамках одной транзакции с блокировками строк
Общее правило - делать подписку на значение как можно ближе к месту использования этого значения.
а можно где-нибудь почитать об этом? есть название у этого подхода?
почему спрашиваю: долго разрабатываю по принципу "берем данные из стора в контейнере/на странице и далее пробрасываем через пропсы уже в конкретные компоненты". Думал, использовать useDispatch и useSelector в самих компонентах плохая практика, тк они перестают быть чистыми
ну вот например есть таблица posts: id, title, categoryId, userId, isActive, type, rating (условно)
И есть разные запросы на выборку. WHERE у всех их содержит общую часть: WHERE isActive = :val AND rating > :val2
Дальше запросы могут быть по title, categoryId, userId, isActive:
WHERE ... AND title LIKE :val3
WHERE ... AND userId LIKE :val4
WHERE ... AND title LIKE :val3 AND userId LIKE :val4
WHERE ... AND categoryId = :val5
WHERE ... AND type = :val6 AND id > :val7
в таком случае лучше сделать 1 композитный индекс на title, categoryId, userId, isActive, isMarked, rating или один композитный на isActive и rating и одиночные на остальные столбцы?
Спасибо! А не подскажите, как соединить контейнеры которые указал выше? Как только не пробовал - не получается. То ERR_EMPTY_RESPONSE, то не создается сертификат то еще что-то