data model change and some new services
This commit is contained in:
@@ -7,7 +7,11 @@ from services.upload import UploadService
|
||||
from services.box import BoxService
|
||||
from services.tcgplayer import TCGPlayerService
|
||||
from services.data import DataService
|
||||
from dependencies import get_data_service, get_upload_service, get_tcgplayer_service, get_box_service
|
||||
from services.file import FileService
|
||||
from services.product import ProductService
|
||||
from schemas.file import FileMetadata, FileUploadResponse, GetPreparedFilesResponse, FileDeleteResponse
|
||||
from schemas.box import CreateBoxResponse, CreateBoxRequestData
|
||||
from dependencies import get_data_service, get_upload_service, get_tcgplayer_service, get_box_service, get_file_metadata, get_file_service, get_product_service
|
||||
|
||||
|
||||
import logging
|
||||
@@ -15,30 +19,55 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
router = APIRouter(prefix="/api", tags=["cards"])
|
||||
|
||||
## health check
|
||||
@router.get("/health", response_model=dict)
|
||||
async def health_check() -> dict:
|
||||
"""
|
||||
Health check endpoint
|
||||
"""
|
||||
logger.info("Health check")
|
||||
return {"status": "ok"}
|
||||
|
||||
## test endpoint - logs all detail about request
|
||||
@router.post("/test", response_model=dict)
|
||||
async def test_endpoint(request: Request, file:UploadFile = File(...)) -> dict:
|
||||
"""
|
||||
Test endpoint
|
||||
"""
|
||||
content = await file.read()
|
||||
# log filename
|
||||
logger.info(f"file received: {file.filename}")
|
||||
# print first 100 characters of file content
|
||||
logger.info(f"file content: {content[:100]}")
|
||||
# FILE
|
||||
@router.post("/file/uploadManabox", response_model=FileUploadResponse)
|
||||
async def upload_file(
|
||||
background_tasks: BackgroundTasks,
|
||||
file: UploadFile = File(...),
|
||||
file_service: FileService = Depends(get_file_service),
|
||||
product_service: ProductService = Depends(get_product_service),
|
||||
metadata: FileMetadata = Depends(get_file_metadata)) -> FileUploadResponse:
|
||||
try:
|
||||
content = await file.read()
|
||||
metadata.service = 'product'
|
||||
result = file_service.upload_file(content, file.filename, metadata)
|
||||
background_tasks.add_task(product_service.bg_process_manabox_file, result.id)
|
||||
return result
|
||||
except Exception as e:
|
||||
logger.error(f"File upload failed: {str(e)}")
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
return {"status": "ok"}
|
||||
|
||||
@router.get("/file/getPreparedFiles", response_model=GetPreparedFilesResponse)
|
||||
async def get_prepared_files(file_service: FileService = Depends(get_file_service)) -> GetPreparedFilesResponse:
|
||||
try:
|
||||
response = file_service.get_prepared_files()
|
||||
return response
|
||||
except Exception as e:
|
||||
logger.error(f"Get prepared files failed: {str(e)}")
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
@router.post("/file/deleteFile", response_model=FileDeleteResponse)
|
||||
async def delete_file(file_id: str, file_service: FileService = Depends(get_file_service)) -> FileDeleteResponse:
|
||||
try:
|
||||
response = file_service.delete_file(file_id)
|
||||
return response
|
||||
except Exception as e:
|
||||
logger.error(f"Delete file failed: {str(e)}")
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
@router.post("/box/createBox", response_model=CreateBoxResponse)
|
||||
async def create_box(file_ids: list[str], create_box_data: CreateBoxRequestData, box_service: BoxService = Depends(get_box_service)) -> CreateBoxResponse:
|
||||
try:
|
||||
create_box_data = create_box_data.dict()
|
||||
response = box_service.create_box(create_box_data, file_ids)
|
||||
return response
|
||||
except Exception as e:
|
||||
logger.error(f"Create box failed: {str(e)}")
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
## all old below
|
||||
|
||||
@router.post("/upload/manabox", response_model=dict)
|
||||
async def upload_manabox(
|
||||
@@ -55,6 +84,8 @@ async def upload_manabox(
|
||||
# Read the file content
|
||||
content = await file.read()
|
||||
filename = file.filename
|
||||
file_size = len(content)
|
||||
file_size_kb = file_size / 1024
|
||||
if not content:
|
||||
logger.error("Empty file content")
|
||||
raise HTTPException(status_code=400, detail="Empty file content")
|
||||
@@ -64,7 +95,7 @@ async def upload_manabox(
|
||||
logger.error("File must be a CSV")
|
||||
raise HTTPException(status_code=400, detail="File must be a CSV")
|
||||
|
||||
result = upload_service.process_manabox_upload(content, filename)
|
||||
result = upload_service.process_manabox_upload(content, filename, file_size_kb)
|
||||
background_tasks.add_task(data_service.bg_set_manabox_tcg_relationship, upload_id=result[1])
|
||||
return result[0]
|
||||
except Exception as e:
|
||||
|
Reference in New Issue
Block a user