diff options
Diffstat (limited to 'src/queries')
-rw-r--r-- | src/queries/__init__.py | 1 | ||||
-rw-r--r-- | src/queries/base_query.py | 10 | ||||
-rw-r--r-- | src/queries/comments_query.py | 19 |
3 files changed, 30 insertions, 0 deletions
diff --git a/src/queries/__init__.py b/src/queries/__init__.py new file mode 100644 index 0000000..08f4a8b --- /dev/null +++ b/src/queries/__init__.py @@ -0,0 +1 @@ +from src.queries.comments_query import CommentsQuery diff --git a/src/queries/base_query.py b/src/queries/base_query.py new file mode 100644 index 0000000..70cf776 --- /dev/null +++ b/src/queries/base_query.py @@ -0,0 +1,10 @@ +import sqlalchemy as sa +from src.database import db + + +class BaseQuery: + def __init__(self, model): + self._model = model + + def get(self, primary_key): + return db.session.get(self._model, primary_key) diff --git a/src/queries/comments_query.py b/src/queries/comments_query.py new file mode 100644 index 0000000..834bd6a --- /dev/null +++ b/src/queries/comments_query.py @@ -0,0 +1,19 @@ +from src.database import db +from src.database.models import Comment +from src.queries.base_query import BaseQuery + + +class CommentsQuery(BaseQuery): + def __init__(self): + super().__init__(Comment) + + def all_comments(self, page=1, per_page=10, max_per_page=15): + return db.paginate(db.select(Comment), page=page, per_page=per_page, + max_per_page=max_per_page) + + def comments_of_post(self, post, page=1, per_page=10, max_per_page=15): + return db.paginate( + db.select(Comment).where(Comment.post == post), + page=page, per_page=per_page, + max_per_page=max_per_page + ) |