mirror of
https://github.com/flibusta-apps/telegram_files_server.git
synced 2025-12-06 12:35:39 +01:00
Add create_file endpoint
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user