Так как лайки могут быть как к эпизоду, так и к комментарию, а также возможно потребуется возможность получения всех лайков по юзеру, мы реализуем эту систему следующим образом:
Создаём таблицу users_ratings с уникальным uuid, uuid пользователя, object_type (пока "episode" или "comment"), object_id (id эпизода или комментария), type (boolean, 0 - dislike, 1 - like), created_at.
Нужно сделать транзакцию в likesService, в которой, в зависимости от object_type, в нужном энтити увеличивалось количество лайков или дизлайков на 1. При ошибке этого инкрементирования или добавления новой оценки, транзакция обрывается и одно из действий отменяется.
Эндпоинты пока не делать, сделаем когда добавим эпизоды и комментарии. Тесты также.
Так как лайки могут быть как к эпизоду, так и к комментарию, а также возможно потребуется возможность получения всех лайков по юзеру, мы реализуем эту систему следующим образом:
Создаём таблицу users_ratings с уникальным uuid, uuid пользователя, object_type (пока "episode" или "comment"), object_id (id эпизода или комментария), type (boolean, 0 - dislike, 1 - like), created_at.
Нужно сделать транзакцию в likesService, в которой, в зависимости от object_type, в нужном энтити увеличивалось количество лайков или дизлайков на 1. При ошибке этого инкрементирования или добавления новой оценки, транзакция обрывается и одно из действий отменяется.
Эндпоинты пока не делать, сделаем когда добавим эпизоды и комментарии. Тесты также.