This commit is contained in:
2021-11-10 13:13:33 +03:00
commit 4c7af00ac3
22 changed files with 1663 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
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