/
matusha
/
hist_center
Обзор
Документация
Войти
/
matusha
/
hist_center
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/api/user.py
72 строки
3 KB
Galimianov Matvey
ПЩ абаюдна
27 янв 2025, 22:56
27 янв 2025, 22:56
0fd85c4
Код
Авторство
О чём код?
from typing import Any, Coroutine from botocore.exceptions import ClientError from fastapi_controllers import Controller, get, post from pydantic import BaseModel from fastapi import Depends, Response, UploadFile, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from starlette.responses import FileResponse from src.database.models import Users from src.database.repository import UserRepository from src.database import get_db_session from src.database.repository.article_repository import ArticleRepository from src.domain.s3_storage_utils import S3Client class RegisterRequest(BaseModel): username: str first_name: str second_name: str | None password: str class ArticleRequest(BaseModel): title: str userID: int class UserController(Controller): prefix = "/auth" tags=["auth"] def __init__(self, session: AsyncSession = Depends(get_db_session)): self.session = session self.user_rep = UserRepository(session) self.article_rep = ArticleRepository(session) #ВНИМАНИЕ ТРЕБУЕТСЯ СЕРВИС, ПОКА ЭТО ТЕСТ @post("/register") async def register(self, request: RegisterRequest): try: await self.user_rep.register(request.username, request.password, request.first_name, request.second_name) except Exception as e: return Response(status_code=333, content="Ты че ебулдыга?????") await self.session.commit() return {"message": "OK"} #ВНИМАНИЕ ТРЕБУЕТСЯ СЕРВИС, ПОКА ЭТО ТЕСТ @post("/addArticle") async def addArticle(self, request: ArticleRequest): stmt = await self.user_rep.get_by_id(user_id=request.userID) await self.article_rep.create_article(request.title, stmt) await self.session.commit() return {"message": "OK"} @post("/addFile") async def addFile(self, UploadedFile: UploadFile): client = S3Client( access_key='YCAJEQFNHF41Navm0Ig26oJ7b', secret_key='YCPrjVHvv0Bzd_hBO1KKwAA69TSMe7FlOReRrTqT', endpoint_url='https://storage.yandexcloud.net', bucket_name='aaaa-test' ) await client.upload_file(UploadedFile) @post("/getFile") async def getFile(self, fileName: str) -> FileResponse: client = S3Client( access_key='YCAJEQFNHF41Navm0Ig26oJ7b', secret_key='YCPrjVHvv0Bzd_hBO1KKwAA69TSMe7FlOReRrTqT', endpoint_url='https://storage.yandexcloud.net', bucket_name='aaaa-test' ) return await client.get_file(fileName)