Files
kontor/fastapi/app/routers/media.py
T
2025-04-15 01:29:08 +02:00

72 lines
3.0 KiB
Python

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