summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/controllers/comments_controller.py16
-rw-r--r--src/services/__init__.py1
-rw-r--r--src/services/create_comment_service.py32
3 files changed, 45 insertions, 4 deletions
diff --git a/src/controllers/comments_controller.py b/src/controllers/comments_controller.py
index 9077ba1..20fe3c4 100644
--- a/src/controllers/comments_controller.py
+++ b/src/controllers/comments_controller.py
@@ -1,12 +1,20 @@
-from flask import Blueprint, request
+from flask import Blueprint, request, abort, render_template
+from sqlalchemy import select
from src.database.models import Blog, Comment
+from src.database import db
+from src.services import CreateCommentService
comments_blueprint = Blueprint('comments_controller',
'__comments_controller__')
-@comments_blueprint.post('/<post>/comments/')
+@comments_blueprint.post('/<path:post>/comments/')
def create(post):
- breakpoint()
- print(request.form)
+ service = CreateCommentService(request.get_json(), post)
+ status_code = service.call()
+
+ if status_code == 404:
+ abort(404)
+
+ return render_template('comments/index.jinja')
diff --git a/src/services/__init__.py b/src/services/__init__.py
new file mode 100644
index 0000000..bf71a33
--- /dev/null
+++ b/src/services/__init__.py
@@ -0,0 +1 @@
+from src.services.create_comment_service import CreateCommentService
diff --git a/src/services/create_comment_service.py b/src/services/create_comment_service.py
new file mode 100644
index 0000000..b995b25
--- /dev/null
+++ b/src/services/create_comment_service.py
@@ -0,0 +1,32 @@
+from sqlalchemy import select
+from src.database.models import Blog, Comment
+from src.database import db
+
+
+class CreateCommentService:
+ def __init__(self, comment_data, post):
+ self._post = post
+ self._domain = comment_data.get('domain')
+ self._content = comment_data.get('content')
+ self._email = comment_data.get('email')
+ self._author = comment_data.get('author')
+ self._blog_id = self._get_blog_id()
+
+ def _get_blog_id(self):
+ search_blog_statement = select(Blog.id).where(
+ Blog.domain == self._domain
+ )
+
+ return db.session.execute(search_blog_statement).scalars().first()
+
+ def call(self):
+ if self._blog_id is None:
+ return 404
+
+ comment = Comment(blog_id=self._blog_id, content=self._content,
+ email=self._email, author=self._author,
+ post=self._post, language='en')
+ db.session.add(comment)
+ db.session.commit()
+
+ return 200