51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
from pydantic import BaseModel, Field, ConfigDict
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
|
|
|
|
# FILE
|
|
class FileSchema(BaseModel):
|
|
id: str = Field(..., title="id")
|
|
filename: str = Field(..., title="filename")
|
|
type: str = Field(..., title="type")
|
|
filesize_kb: float = Field(..., title="filesize_kb")
|
|
source: str = Field(..., title="source")
|
|
status: str = Field(..., title="status")
|
|
service: Optional[str] = Field(None, title="service")
|
|
date_created: datetime = Field(..., title="date_created")
|
|
date_modified: datetime = Field(..., title="date_modified")
|
|
|
|
# This enables ORM mode
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
# CREATE
|
|
# REQUEST
|
|
class CreateFileRequest(BaseModel):
|
|
source: str = Field(..., title="source")
|
|
type: str = Field(..., title="type")
|
|
# optional
|
|
service: Optional[str] = Field(None, title="Service")
|
|
filename: Optional[str] = Field(None, title="Filename")
|
|
|
|
# RESPONSE
|
|
class CreateFileResponse(BaseModel):
|
|
status_code: int = Field(..., title="status_code")
|
|
success: bool = Field(..., title="success")
|
|
files: list[FileSchema] = Field(..., title="files")
|
|
|
|
# GET
|
|
# RESPONSE
|
|
class GetFileResponse(BaseModel):
|
|
status_code: int = Field(..., title="status_code")
|
|
success: bool = Field(..., title="success")
|
|
files: list[FileSchema] = Field(..., title="files")
|
|
# QUERY PARAMS
|
|
class GetFileQueryParams(BaseModel):
|
|
status: Optional[str] = Field(None, title="status")
|
|
|
|
# DELETE
|
|
# RESPONSE
|
|
class DeleteFileResponse(BaseModel):
|
|
status_code: int = Field(..., title="status_code")
|
|
success: bool = Field(..., title="success")
|
|
files: list[FileSchema] = Field(..., title="files") |