data model change and some new services

This commit is contained in:
2025-02-04 00:01:34 -05:00
parent 37a5dac06a
commit 85510a4671
15 changed files with 998 additions and 130 deletions

View File

@@ -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: