mirror of
https://github.com/flibusta-apps/telegram_files_server.git
synced 2025-12-06 12:35:39 +01:00
48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
from fastapi import File, UploadFile
|
|
from starlette import status
|
|
from fastapi import APIRouter, HTTPException
|
|
|
|
from app.serializers import UploadedFile
|
|
from app import models
|
|
from app.services.file_uploader import FileUploader
|
|
|
|
|
|
router = APIRouter(
|
|
prefix="/api/v1",
|
|
)
|
|
|
|
|
|
@router.get("/files", response_model=list[UploadedFile])
|
|
async def get_files():
|
|
return await models.UploadedFile.objects.all()
|
|
|
|
|
|
@router.get("/files/{file_id}", response_model=UploadedFile, responses={
|
|
404: {},
|
|
})
|
|
async def get_file(file_id: int):
|
|
uploaded_file = await models.UploadedFile.objects.get_or_none(id=file_id)
|
|
|
|
if not uploaded_file:
|
|
raise HTTPException(status.HTTP_404_NOT_FOUND)
|
|
|
|
return uploaded_file
|
|
|
|
|
|
@router.post("/files", response_model=UploadedFile)
|
|
async def upload_file(file: UploadFile = File({})):
|
|
return await FileUploader.upload(file)
|
|
|
|
|
|
@router.delete("/files/{file_id}", response_model=UploadedFile, responses={
|
|
400: {}
|
|
})
|
|
async def delete_file(file_id: int):
|
|
uploaded_file = await models.UploadedFile.objects.get_or_none(id=file_id)
|
|
|
|
if not uploaded_file:
|
|
raise HTTPException(status.HTTP_400_BAD_REQUEST)
|
|
|
|
await uploaded_file.delete()
|
|
return uploaded_file
|