from uuid import uuid4 import mariadb from fastapi import APIRouter, status, HTTPException from fastapi.openapi.utils import status_code_ranges from sqlalchemy import select from app.models.media import MediaFileResponse, Link from app.schema import MediaFile, __session__ router = APIRouter( prefix="/media", tags=["media"] ) @router.get("/update-titles") def update_titles() -> list[MediaFileResponse]: results: list[MediaFileResponse] = [] with __session__() as session: files = session.query(MediaFile).filter(MediaFile.review == 1).all() for mediafile in files: mediafile.update_title() session.add(mediafile) response = MediaFileResponse(id=mediafile.id, title=mediafile.title, file_name=mediafile.file_name, cloud_link= mediafile.cloud_link, url=str(mediafile.url), review=(mediafile.review == 1), should_download=(mediafile.should_download == 1)) results.append(response) session.commit() return results @router.get("/files") def get_files() -> list[MediaFileResponse]: results: list[MediaFileResponse] = [] with __session__() as session: files = session.scalars(select(MediaFile)).all() for mediafile in files: response = MediaFileResponse(id=mediafile.id, title=mediafile.title, file_name=mediafile.file_name, cloud_link= mediafile.cloud_link, url=str(mediafile.url), review=(mediafile.review == 1), should_download=(mediafile.should_download == 1)) results.append(response) return results @router.post("/files", status_code=status.HTTP_201_CREATED) def add_file(new_link: Link) -> MediaFileResponse: print(new_link.url) try: with __session__() as session: mediaFile: MediaFile = MediaFile() setattr(mediaFile, "url", new_link.url) setattr(mediaFile, "review", True) setattr(mediaFile, "should_download", True) session.add(mediaFile) session.commit() except : raise HTTPException(status_code=409, detail="Link duplicate") response = MediaFileResponse(id=uuid4(), title=mediaFile.title, file_name=mediaFile.file_name, cloud_link=mediaFile.cloud_link, url=new_link.url, review=(mediaFile.review == 1), shoud_download=(mediaFile.should_download==1)) return response