53 lines
2.1 KiB
Python
53 lines
2.1 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("/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),
|
|
shoud_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
|