diff --git a/app/main.py b/app/main.py index 2fd3573..4687ec5 100644 --- a/app/main.py +++ b/app/main.py @@ -1,24 +1,38 @@ import uvicorn import asyncio -from schemas import * - -from fastapi import FastAPI, Depends +from schemas.api_schemas import * from mongo_worker import MongoWorker +from typing import Annotated + +from fastapi import FastAPI, Depends, UploadFile, File + app = FastAPI() @app.get("/check_user") -async def check_user(user_id: int, mongo: MongoWorker = Depends(MongoWorker)) -> BaseResponse: +async def check_user(user_id: int, + 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, mongo: MongoWorker = Depends(MongoWorker)) -> BaseResponse: +async def get_user(user_id: int, + mongo: MongoWorker = Depends(MongoWorker)) -> BaseResponse: result = mongo.get_user(user_id) return BaseResponse(result=result) +@app.post("/add_user") +async def add_user(user_id: int, + username: str, + first_name: str, + last_name: str, + photo_url: str, + mongo: MongoWorker = Depends(MongoWorker)) -> BaseResponse: + result = mongo.add_user(user_id, username, first_name, last_name, photo_url) + return BaseResponse(result=result) + async def main(): config = uvicorn.Config("main:app", port=5000, log_level="info") diff --git a/app/mongo_worker.py b/app/mongo_worker.py index 7f6c80d..3b10c56 100644 --- a/app/mongo_worker.py +++ b/app/mongo_worker.py @@ -2,7 +2,7 @@ import os import pymongo -from schemas import * +from schemas.base_schemas import * from datetime import datetime from dotenv import load_dotenv @@ -19,28 +19,23 @@ class MongoWorker: self.users_data = self.db["users_data"] self.game_data = self.db["game_data"] - def get_mongodb_info(self) -> None: - print(self.client.list_database_names()) - print(self.db.list_collection_names()) - def check_user(self, user_id: int) -> bool: if self.users_data.find_one({"user_id": user_id}): return True else: return False - def add_user(self, user_id: int, username: str, first_name: str, last_name: str, photo_id: str) -> User: + def add_user(self, user_id: int, username: str, first_name: str, last_name: str, photo_url: str) -> User: new_user = User(user_id=user_id, username=username, first_name=first_name, last_name=last_name, - photo_id=photo_id, + photo_url=photo_url, registration_date=datetime.now().isoformat()) try: - res = self.users_data.insert_one(new_user.model_dump()) + self.users_data.insert_one(new_user.model_dump()) return new_user except Exception as exception: - print(exception) return new_user def get_user(self, user_id: int) -> User: diff --git a/app/schemas/api_schemas.py b/app/schemas/api_schemas.py new file mode 100644 index 0000000..562312c --- /dev/null +++ b/app/schemas/api_schemas.py @@ -0,0 +1,8 @@ +import typing + +from pydantic import BaseModel + + +class BaseResponse(BaseModel): + result: typing.Any + error: bool = False diff --git a/app/schemas.py b/app/schemas/base_schemas.py similarity index 66% rename from app/schemas.py rename to app/schemas/base_schemas.py index 9e2b63a..1940af1 100644 --- a/app/schemas.py +++ b/app/schemas/base_schemas.py @@ -1,5 +1,3 @@ -import typing - from pydantic import BaseModel @@ -9,15 +7,11 @@ class User(BaseModel): first_name: str last_name: str - photo_id: str + photo_url: str activity: int = 0 liked_post_ids: list[int] = list() disliked_post_ids: list[int] = list() comments_ids: list[int] = list() - registration_date: str - -class BaseResponse(BaseModel): - result: typing.Any - error: bool = False + registration_date: str \ No newline at end of file