CRUD comments
This commit is contained in:
@@ -5,6 +5,7 @@ from resolvers.zine import create_shout, get_shout_by_slug, top_month, top_overa
|
||||
from resolvers.profile import get_user_by_slug, get_current_user
|
||||
from resolvers.topics import topic_subscribe, topic_unsubscribe, topics_by_author, \
|
||||
topics_by_community, topics_by_slugs
|
||||
from resolvers.comments import create_comment
|
||||
|
||||
__all__ = [
|
||||
"login",
|
||||
|
57
resolvers/comments.py
Normal file
57
resolvers/comments.py
Normal file
@@ -0,0 +1,57 @@
|
||||
from orm import Comment, CommentRating
|
||||
from orm.base import local_session
|
||||
from resolvers.base import mutation, query, subscription
|
||||
from auth.authenticate import login_required
|
||||
import asyncio
|
||||
from datetime import datetime
|
||||
|
||||
@mutation.field("createComment")
|
||||
@login_required
|
||||
async def create_comment(_, info, body, shout, replyTo = None):
|
||||
auth = info.context["request"].auth
|
||||
user_id = auth.user_id
|
||||
|
||||
comment = Comment.create(
|
||||
author = user_id,
|
||||
body = body,
|
||||
shout = shout,
|
||||
replyTo = replyTo
|
||||
)
|
||||
|
||||
return {"comment": comment}
|
||||
|
||||
@mutation.field("updateComment")
|
||||
@login_required
|
||||
async def update_comment(_, info, id, body):
|
||||
auth = info.context["request"].auth
|
||||
user_id = auth.user_id
|
||||
|
||||
with local_session() as session:
|
||||
comment = session.query(Comment).filter(Comment.id == id).first()
|
||||
if not comment:
|
||||
return {"error": "invalid comment id"}
|
||||
if comment.author != user_id:
|
||||
return {"error": "access denied"}
|
||||
|
||||
comment.body = body
|
||||
comment.updatedAt = datetime.now()
|
||||
|
||||
session.commit()
|
||||
|
||||
@mutation.field("deleteComment")
|
||||
@login_required
|
||||
async def delete_comment(_, info, id):
|
||||
auth = info.context["request"].auth
|
||||
user_id = auth.user_id
|
||||
|
||||
with local_session() as session:
|
||||
comment = session.query(Comment).filter(Comment.id == id).first()
|
||||
if not comment:
|
||||
return {"error": "invalid comment id"}
|
||||
if comment.author != user_id:
|
||||
return {"error": "access denied"}
|
||||
|
||||
comment.deletedAt = datetime.now()
|
||||
session.commit()
|
||||
|
||||
return {}
|
Reference in New Issue
Block a user