diff --git a/app/main.py b/app/main.py index 49d45fd..6c8ef7c 100644 --- a/app/main.py +++ b/app/main.py @@ -4,34 +4,42 @@ import asyncio from schemas.api_schemas import * from mongo_worker import MongoWorker -from typing import Annotated - -from fastapi import FastAPI, Depends, UploadFile, File +from fastapi import FastAPI, Depends, Response, status app = FastAPI() -@app.get("/check_user") -async def check_user(user_id: int, +@app.get("/check_user", status_code=200) +async def check_user(user_id: NonNegativeInt, mongo: MongoWorker = Depends(MongoWorker)) -> BaseResponse: result = mongo.check_user(user_id) return BaseResponse(result=result) -@app.get("/get_user") -async def get_user(user_id: int, +@app.get("/get_user", status_code=200) +async def get_user(user_id: NonNegativeInt, + response: Response, mongo: MongoWorker = Depends(MongoWorker)) -> BaseResponse: - result = mongo.get_user(user_id) - return BaseResponse(result=result) + if mongo.check_user(user_id): + result = mongo.get_user(user_id) + return BaseResponse(result=result) + else: + response.status_code = status.HTTP_404_NOT_FOUND + return BaseResponse(result="User doesn't exist", error=True) -@app.post("/add_user") +@app.post("/add_user", status_code=201) async def add_user(new_user: AddUserBody, + response: Response, mongo: MongoWorker = Depends(MongoWorker)) -> BaseResponse: - result = mongo.add_user(new_user.user_id, - new_user.username, - new_user.first_name, - new_user.last_name, - new_user.photo_url) - return BaseResponse(result=result) + if not mongo.check_user(new_user.user_id): + result = mongo.add_user(new_user.user_id, + new_user.username, + new_user.first_name, + new_user.last_name, + new_user.photo_url) + return BaseResponse(result=result) + else: + response.status_code = status.HTTP_409_CONFLICT + return BaseResponse(result="User already exist", error=True) async def main(): diff --git a/app/schemas/api_schemas.py b/app/schemas/api_schemas.py index 386a51a..5b117e1 100644 --- a/app/schemas/api_schemas.py +++ b/app/schemas/api_schemas.py @@ -1,6 +1,6 @@ import typing -from pydantic import BaseModel +from pydantic import BaseModel, NonNegativeInt class BaseResponse(BaseModel): @@ -8,7 +8,7 @@ class BaseResponse(BaseModel): error: bool = False class AddUserBody(BaseModel): - user_id: int + user_id: NonNegativeInt username: str first_name: str