diff --git a/fastapi_file_server/app/serializers.py b/fastapi_file_server/app/serializers.py index 7380146..8a4e1e2 100644 --- a/fastapi_file_server/app/serializers.py +++ b/fastapi_file_server/app/serializers.py @@ -1,6 +1,12 @@ from datetime import datetime -from pydantic import BaseModel +from pydantic import BaseModel, constr + + +class CreateUploadedFile(BaseModel): + backend: constr(max_length=16) # type: ignore + data: dict + upload_time: datetime class UploadedFile(BaseModel): diff --git a/fastapi_file_server/app/views.py b/fastapi_file_server/app/views.py index fc43e8d..1b0e4f6 100644 --- a/fastapi_file_server/app/views.py +++ b/fastapi_file_server/app/views.py @@ -3,24 +3,24 @@ from starlette import status from fastapi import APIRouter, HTTPException from app.models import UploadedFile as UploadedFileDB -from app.serializers import UploadedFile +from app.serializers import UploadedFile, CreateUploadedFile from app.services.file_uploader import FileUploader from app.depends import check_token router = APIRouter( - prefix="/api/v1", + prefix="/api/v1/files", dependencies=[Depends(check_token)], tags=["files"] ) -@router.get("/files", response_model=list[UploadedFile]) +@router.get("/", response_model=list[UploadedFile]) async def get_files(): return await UploadedFileDB.objects.all() -@router.get("/files/{file_id}", response_model=UploadedFile, responses={ +@router.get("/{file_id}", response_model=UploadedFile, responses={ 404: {}, }) async def get_file(file_id: int): @@ -32,12 +32,19 @@ async def get_file(file_id: int): return uploaded_file -@router.post("/files", response_model=UploadedFile) +@router.post("/", response_model=UploadedFile) +async def create_file(data: CreateUploadedFile): + return await UploadedFileDB.objects.create( + **data.dict() + ) + + +@router.post("/upload/", response_model=UploadedFile) async def upload_file(file: UploadFile = File({})): return await FileUploader.upload(file) -@router.delete("/files/{file_id}", response_model=UploadedFile, responses={ +@router.delete("/{file_id}", response_model=UploadedFile, responses={ 400: {} }) async def delete_file(file_id: int):