Prebuild release 1.0 #2

Merged
IgorVolochay merged 48 commits from frontend into prebuild 2026-08-13 09:04:08 +00:00
4 changed files with 60 additions and 4 deletions
Showing only changes of commit f092e189c2 - Show all commits
+18
View File
@@ -148,6 +148,24 @@ async def dislike_card(dislike_data: ReactionCard,
response.status_code = status.HTTP_404_NOT_FOUND
return result
@app.post("/comment", status_code=201)
async def comment(comment_info: AddCommentBody,
response: Response,
mongo: MongoWorker = Depends(MongoWorker)) -> BaseResponse:
if not moderate_text(comment_info.comment_text):
response.status_code = status.HTTP_400_BAD_REQUEST
return BaseResponse(result="Comment has not passed base moderation", error=True)
result = mongo.add_comment(comment_info.author_id, comment_info.card_id, comment_info.comment_text)
if result.error and result.result in ["User doesn't exist", "Card doesn't exist"]:
response.status_code = status.HTTP_404_NOT_FOUND
return result
elif result.error:
response.status_code = status.HTTP_400_BAD_REQUEST
return result
else:
return result
async def main():
config = uvicorn.Config("main:app", port=5000, log_level="debug")
+25 -2
View File
@@ -16,13 +16,13 @@ class MongoWorker:
self.client = pymongo.MongoClient(host = os.getenv('MONGO_HOST'),
port = int(os.getenv('MONGO_PORT')),
username = os.getenv('MONGO_USER'),
password = os.getenv('MONGO_PASS'),
uuidRepresentation="standard")
password = os.getenv('MONGO_PASS'))
self.db = self.client["data"]
self.users_data = self.db["users"]
self.visited_data = self.db["visited"]
self.counters = self.db["counters"]
self.game_data = self.db["cards"]
self.comments_data = self.db["comments"]
def check_user(self, user_id: int) -> bool:
@@ -189,6 +189,29 @@ class MongoWorker:
return BaseResponse(result=True, error=False)
else:
return BaseResponse(result="User doesn't exist", error=True)
def add_comment(self, user_id: int, card_id: int, comment_text: str) -> BaseResponse:
if self.check_user(user_id):
if self.get_card(card_id):
new_comment = Comment(comment_id=self.get_and_update_counter(counter_name="comment"),
author_id=user_id,
card_id=card_id,
commet_text=comment_text,
creation_date=datetime.now().isoformat())
result = self.comments_data.insert_one(new_comment.model_dump())
if result:
update_user_comments = self.users_data.find_one_and_update({"user_id": user_id},
{"$addToSet": {"comments_ids": new_comment.comment_id}})
if update_user_comments:
return BaseResponse(result=new_comment)
else:
return BaseResponse(result="Difficulty adding comment_id to user", error=True)
else:
return BaseResponse(result="Add comment error", error=True)
else:
return BaseResponse(result="Card doesn't exist", error=True)
else:
return BaseResponse(result="User doesn't exist", error=True)
if __name__ == "__main__":
+7 -1
View File
@@ -29,4 +29,10 @@ class SelectChoice(BaseModel):
class ReactionCard(BaseModel):
user_id: NonNegativeInt
card_id: NonNegativeInt
card_id: NonNegativeInt
class AddCommentBody(BaseModel):
author_id: NonNegativeInt
card_id: NonNegativeInt
comment_text: str
+10 -1
View File
1
@@ -36,4 +36,13 @@ class Card(BaseModel):
author_id: int
creation_date: str
moderation_date: str = "Not moderated"
active_status: bool = False
active_status: bool = False
class Comment(BaseModel):
comment_id: int
author_id: int
card_id: int
commet_text: str
creation_date: str