summaryrefslogtreecommitdiff
path: root/src/queries
diff options
context:
space:
mode:
Diffstat (limited to 'src/queries')
-rw-r--r--src/queries/__init__.py1
-rw-r--r--src/queries/base_query.py10
-rw-r--r--src/queries/comments_query.py19
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
+ )