so much stuff lol
This commit is contained in:
@ -1,17 +1,25 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
from app.db.database import get_db
|
||||
from app.models.file import File, FileCreate, FileUpdate, FileDelete, FileList
|
||||
from app.models.box import Box, BoxCreate, BoxUpdate, BoxDelete, BoxList, OpenBox, OpenBoxCreate, OpenBoxUpdate, OpenBoxDelete, OpenBoxList
|
||||
from app.models.game import Game, GameCreate, GameUpdate, GameDelete, GameList
|
||||
from app.models.card import Card, CardCreate, CardUpdate, CardDelete, CardList
|
||||
from app.models.file import File as FileModel
|
||||
from app.schemas.file import FileCreate, FileUpdate, FileDelete, FileList, FileInDB
|
||||
from app.models.box import Box as BoxModel, OpenBox as OpenBoxModel
|
||||
from app.schemas.box import BoxCreate, BoxUpdate, BoxDelete, BoxList, OpenBoxCreate, OpenBoxUpdate, OpenBoxDelete, OpenBoxList, BoxInDB, OpenBoxInDB
|
||||
from app.models.game import Game as GameModel
|
||||
from app.schemas.game import GameCreate, GameUpdate, GameDelete, GameList, GameInDB
|
||||
from app.models.card import Card as CardModel
|
||||
from app.schemas.card import CardCreate, CardUpdate, CardDelete, CardList, CardInDB
|
||||
from app.services import CardService, OrderService
|
||||
from app.services.file_processing_service import FileProcessingService
|
||||
from app.services.external_api.tcgplayer.tcgplayer_inventory_service import TCGPlayerInventoryService
|
||||
|
||||
router = APIRouter(prefix="/api")
|
||||
|
||||
# Initialize services
|
||||
card_service = CardService()
|
||||
order_service = OrderService()
|
||||
file_processing_service = FileProcessingService()
|
||||
tcgplayer_inventory_service = TCGPlayerInventoryService()
|
||||
|
||||
# ============================================================================
|
||||
# Health Check & Root Endpoints
|
||||
@ -37,7 +45,7 @@ async def get_cards(
|
||||
):
|
||||
skip = (page - 1) * limit
|
||||
cards = card_service.get_all(db, skip=skip, limit=limit)
|
||||
total = db.query(Card).count()
|
||||
total = db.query(CardModel).count()
|
||||
return {
|
||||
"cards": cards,
|
||||
"total": total,
|
||||
@ -45,7 +53,7 @@ async def get_cards(
|
||||
"limit": limit
|
||||
}
|
||||
|
||||
@router.post("/cards", response_model=Card)
|
||||
@router.post("/cards", response_model=CardInDB)
|
||||
async def create_card(card: CardCreate, db: Session = Depends(get_db)):
|
||||
try:
|
||||
created_card = card_service.create(db, card.dict())
|
||||
@ -53,7 +61,7 @@ async def create_card(card: CardCreate, db: Session = Depends(get_db)):
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
@router.put("/cards/{card_id}", response_model=Card)
|
||||
@router.put("/cards/{card_id}", response_model=CardInDB)
|
||||
async def update_card(card_id: int, card: CardUpdate, db: Session = Depends(get_db)):
|
||||
db_card = card_service.get(db, card_id)
|
||||
if not db_card:
|
||||
@ -105,11 +113,11 @@ async def get_orders(
|
||||
async def get_files(page: int = 1, limit: int = 10, type: str = None, id: int = None):
|
||||
return {"files": [], "total": 0, "page": page, "limit": limit}
|
||||
|
||||
@router.post("/files", response_model=File)
|
||||
@router.post("/files", response_model=FileInDB)
|
||||
async def create_file(file: FileCreate):
|
||||
return {"message": "File created successfully"}
|
||||
|
||||
@router.put("/files/{file_id}", response_model=File)
|
||||
@router.put("/files/{file_id}", response_model=FileInDB)
|
||||
async def update_file(file_id: int, file: FileUpdate):
|
||||
return {"message": "File updated successfully"}
|
||||
|
||||
@ -124,11 +132,11 @@ async def delete_file(file_id: int):
|
||||
async def get_boxes(page: int = 1, limit: int = 10, type: str = None, id: int = None):
|
||||
return {"boxes": [], "total": 0, "page": page, "limit": limit}
|
||||
|
||||
@router.post("/boxes", response_model=Box)
|
||||
@router.post("/boxes", response_model=BoxInDB)
|
||||
async def create_box(box: BoxCreate):
|
||||
return {"message": "Box created successfully"}
|
||||
|
||||
@router.put("/boxes/{box_id}", response_model=Box)
|
||||
@router.put("/boxes/{box_id}", response_model=BoxInDB)
|
||||
async def update_box(box_id: int, box: BoxUpdate):
|
||||
return {"message": "Box updated successfully"}
|
||||
|
||||
@ -143,11 +151,11 @@ async def delete_box(box_id: int):
|
||||
async def get_open_boxes(page: int = 1, limit: int = 10, type: str = None, id: int = None):
|
||||
return {"open_boxes": [], "total": 0, "page": page, "limit": limit}
|
||||
|
||||
@router.post("/open_boxes", response_model=OpenBox)
|
||||
@router.post("/open_boxes", response_model=OpenBoxInDB)
|
||||
async def create_open_box(open_box: OpenBoxCreate):
|
||||
return {"message": "Open box created successfully"}
|
||||
|
||||
@router.put("/open_boxes/{open_box_id}", response_model=OpenBox)
|
||||
@router.put("/open_boxes/{open_box_id}", response_model=OpenBoxInDB)
|
||||
async def update_open_box(open_box_id: int, open_box: OpenBoxUpdate):
|
||||
return {"message": "Open box updated successfully"}
|
||||
|
||||
@ -162,11 +170,11 @@ async def delete_open_box(open_box_id: int):
|
||||
async def get_games(page: int = 1, limit: int = 10, type: str = None, id: int = None):
|
||||
return {"games": [], "total": 0, "page": page, "limit": limit}
|
||||
|
||||
@router.post("/games", response_model=Game)
|
||||
@router.post("/games", response_model=GameInDB)
|
||||
async def create_game(game: GameCreate):
|
||||
return {"message": "Game created successfully"}
|
||||
|
||||
@router.put("/games/{game_id}", response_model=Game)
|
||||
@router.put("/games/{game_id}", response_model=GameInDB)
|
||||
async def update_game(game_id: int, game: GameUpdate):
|
||||
return {"message": "Game updated successfully"}
|
||||
|
||||
@ -174,3 +182,26 @@ async def update_game(game_id: int, game: GameUpdate):
|
||||
async def delete_game(game_id: int):
|
||||
return {"message": "Game deleted successfully"}
|
||||
|
||||
@router.post("/tcgplayer/process-export")
|
||||
async def process_tcgplayer_export(export_type: str, db: Session = Depends(get_db)):
|
||||
"""
|
||||
Download and process a TCGPlayer export file.
|
||||
|
||||
Args:
|
||||
export_type: Type of export to process (staged, live, or pricing)
|
||||
db: Database session
|
||||
"""
|
||||
try:
|
||||
# Download the file
|
||||
file_bytes = await tcgplayer_inventory_service.get_tcgplayer_export(export_type)
|
||||
|
||||
# Process the file and load into database
|
||||
stats = await file_processing_service.process_tcgplayer_export(db, file_bytes)
|
||||
|
||||
return {
|
||||
"message": "Export processed successfully",
|
||||
"stats": stats
|
||||
}
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
Reference in New Issue
Block a user