diff options
author | HombreLaser <sebastian-440@live.com> | 2024-02-03 17:26:35 -0600 |
---|---|---|
committer | HombreLaser <sebastian-440@live.com> | 2024-02-03 17:26:35 -0600 |
commit | d23f8f83161f7e354ae3049dffdda6dd071be341 (patch) | |
tree | 2f2875828b3b21376b187d810ab93e2d5cbfe965 /src | |
parent | 5d0055bd6f9cecda0b96d61a25118c989c4b44ff (diff) |
Add comment creation service
Diffstat (limited to 'src')
-rw-r--r-- | src/controllers/comments_controller.py | 16 | ||||
-rw-r--r-- | src/services/__init__.py | 1 | ||||
-rw-r--r-- | src/services/create_comment_service.py | 32 |
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 |