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 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):
|
class UploadedFile(BaseModel):
|
||||||
|
|||||||
@@ -3,24 +3,24 @@ from starlette import status
|
|||||||
from fastapi import APIRouter, HTTPException
|
from fastapi import APIRouter, HTTPException
|
||||||
|
|
||||||
from app.models import UploadedFile as UploadedFileDB
|
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.services.file_uploader import FileUploader
|
||||||
from app.depends import check_token
|
from app.depends import check_token
|
||||||
|
|
||||||
|
|
||||||
router = APIRouter(
|
router = APIRouter(
|
||||||
prefix="/api/v1",
|
prefix="/api/v1/files",
|
||||||
dependencies=[Depends(check_token)],
|
dependencies=[Depends(check_token)],
|
||||||
tags=["files"]
|
tags=["files"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/files", response_model=list[UploadedFile])
|
@router.get("/", response_model=list[UploadedFile])
|
||||||
async def get_files():
|
async def get_files():
|
||||||
return await UploadedFileDB.objects.all()
|
return await UploadedFileDB.objects.all()
|
||||||
|
|
||||||
|
|
||||||
@router.get("/files/{file_id}", response_model=UploadedFile, responses={
|
@router.get("/{file_id}", response_model=UploadedFile, responses={
|
||||||
404: {},
|
404: {},
|
||||||
})
|
})
|
||||||
async def get_file(file_id: int):
|
async def get_file(file_id: int):
|
||||||
@@ -32,12 +32,19 @@ async def get_file(file_id: int):
|
|||||||
return uploaded_file
|
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({})):
|
async def upload_file(file: UploadFile = File({})):
|
||||||
return await FileUploader.upload(file)
|
return await FileUploader.upload(file)
|
||||||
|
|
||||||
|
|
||||||
@router.delete("/files/{file_id}", response_model=UploadedFile, responses={
|
@router.delete("/{file_id}", response_model=UploadedFile, responses={
|
||||||
400: {}
|
400: {}
|
||||||
})
|
})
|
||||||
async def delete_file(file_id: int):
|
async def delete_file(file_id: int):
|
||||||
|
|||||||
Reference in New Issue
Block a user