Conversation
|
💩 Code linting failed, use |
Coverage Report
Summary
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Zimovchik
left a comment
There was a problem hiding this comment.
нужно и в ручке get comments тоже это сделать
rating_api/models/db.py
Outdated
| @classmethod | ||
| def reactions_for_comments(cls, user_id: int, session, comments): | ||
| if not user_id or not comments: | ||
| return {} | ||
| comments_uuid = [c.uuid for c in comments] | ||
| reactions = ( | ||
| session.query(CommentReaction) | ||
| .filter(CommentReaction.user_id == user_id, CommentReaction.comment_uuid.in_(comments_uuid)) | ||
| .all() | ||
| ) | ||
| return {r.comment_uuid: r.reaction for r in reactions} |
There was a problem hiding this comment.
ты можешь сделать это методами алхимии, групнув сджойненые таблички например и посмотрев 1 0 или -1
|
💩 Code linting failed, use |
|
Сейчас такая проблема: ты добавил новую схему CommentGetWithLike, наследующуяся от CommentGet. Сперва кажется что решение красивое, но появляется масса проблем при новое схеме. Ты не учел, например, что в ручках получения лекторов тоже есть вывод комментариев, который остался со старой логикой CommentGet. Также пришлось добавлять новые схемы, что неудобно. Не понял, кстати, зачем ты закомменченные схемы добавил? Если на будущее, то об этом лучше писать в чат бэкенда как идея на будущее. |
rating_api/routes/comment.py
Outdated
|
|
||
| @comment.get("", response_model=Union[CommentGetAll, CommentGetAllWithAllInfo, CommentGetAllWithStatus]) | ||
| @comment.get( | ||
| "", response_model=Union[CommentGetAll, CommentGetAllWithLike, CommentGetAllWithAllInfo, CommentGetAllWithStatus] |
There was a problem hiding this comment.
здесь надо привезти это к одной строке обратно
rating_api/routes/comment.py
Outdated
|
|
||
| `asc_order` -Если передано true, сортировать в порядке возрастания. Иначе - в порядке убывания | ||
| """ | ||
| user = {"id": 101, "session_scopes": []} # тестовый user_id # пустые скоупы = обычный пользователь |
There was a problem hiding this comment.
:)
если это для тестов у тебя было, рекомендую убрать))
rating_api/schemas/models.py
Outdated
|
|
||
|
|
||
| """ | ||
| class CommentGetWithLikeAndStatus(CommentGetWithLike): |
There was a problem hiding this comment.
зачем?
ты хочешь добавить ревью на лайки/дизлайки?) это точно не надо делать будет
rating_api/schemas/models.py
Outdated
|
|
||
|
|
||
| """ | ||
| class CommentGetWithAllInfoAndLike(CommentGetWithLike): |
rating_api/schemas/models.py
Outdated
| total: int | ||
|
|
||
|
|
||
| """ |
rating_api/schemas/models.py
Outdated
| total: int | ||
|
|
||
|
|
||
| """ |
rating_api/schemas/models.py
Outdated
| total: int | ||
|
|
||
|
|
||
| class CommentGetAllWithLike(Base): |
There was a problem hiding this comment.
чувствуешь как усложнилась логика из-за добавления схемы CommentGetWithLike?
tests/test_routes/test_comment.py
Outdated
| if reaction_data: | ||
| user_id, reaction_type = reaction_data | ||
| reaction = CommentReaction(user_id=user_id, comment_uuid=comment.uuid, reaction=reaction_type) | ||
| dbsession.add(reaction) |
There was a problem hiding this comment.
все что связано с обращением к базе данных должно быть вынесено в conftest.py
Если есть вопросы как это делать напиши мне, помогу. А так можешь чекнуть аналогичные соседние тесты или в рентал апи зайти и посмотреть как там
|
|
||
| result.total = len(result.comments) | ||
| result.comments = [comment_validator.model_validate(comment) for comment in result.comments] | ||
| comments_with_like = [] |
There was a problem hiding this comment.
здесь пока логику не проверил, чекну как только исправишь что я написал
3858a9d to
533a554
Compare
|
💩 Code linting failed, use |
Что сделано:
GET /comment/{uuid}теперь возвращаются флагиis_likedиis_disliked, которые показывают поставил ли текущий пользователь лайк/дизлайк на комментарий.has_reaction()в моделиCommentдля эффективной проверки реакций пользователь.Детали реализации
Check-List
blackиisortдля Back-End илиPrettierдля Front-End?