summaryrefslogtreecommitdiff
path: root/src/queries/comments_query.py
blob: 5312cca890f2d375549da85b02fa1730061591d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from src.database import db
from src.database.models import Comment, Reply
from src.queries.base_query import BaseQuery


class CommentsQuery(BaseQuery):
    def __init__(self):
        super().__init__(Comment)

    def all_comments(self):
        return db.paginate(db.select(Comment))

    def comments_of_post(self, post, page=1):
        try:
            if page is not None and isinstance(page, str):
                page = int(page)
        except ValueError:
            page = 1

        return db.paginate(
            db.select(Comment).where(Comment.post == post).order_by(Comment.created_at.desc()),
            page=page, max_per_page=5
        )

    def replies_of(self, comment_id):
        return db.paginate(
            db.select(Reply).where(Reply.comment_id == comment_id).order_by(Reply.created_at.desc())
        )