order and api and more
This commit is contained in:
@ -8,18 +8,16 @@ from app.schemas.box import BoxCreate, BoxUpdate, BoxDelete, BoxList, OpenBoxCre
|
||||
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
|
||||
from app.routes.set_label_routes import router as set_label_router
|
||||
from app.routes.order_routes import router as order_router
|
||||
|
||||
router = APIRouter(prefix="/api")
|
||||
|
||||
# Initialize services
|
||||
card_service = CardService()
|
||||
order_service = OrderService()
|
||||
file_processing_service = FileProcessingService()
|
||||
tcgplayer_inventory_service = TCGPlayerInventoryService()
|
||||
# Include set label routes
|
||||
router.include_router(set_label_router)
|
||||
|
||||
# Include order routes
|
||||
router.include_router(order_router)
|
||||
|
||||
# ============================================================================
|
||||
# Health Check & Root Endpoints
|
||||
@ -32,80 +30,6 @@ async def root():
|
||||
async def health():
|
||||
return {"status": "ok"}
|
||||
|
||||
# ============================================================================
|
||||
# Card Management Endpoints
|
||||
# ============================================================================
|
||||
@router.get("/cards", response_model=CardList)
|
||||
async def get_cards(
|
||||
db: Session = Depends(get_db),
|
||||
page: int = 1,
|
||||
limit: int = 10,
|
||||
type: str = None,
|
||||
id: int = None
|
||||
):
|
||||
skip = (page - 1) * limit
|
||||
cards = card_service.get_all(db, skip=skip, limit=limit)
|
||||
total = db.query(CardModel).count()
|
||||
return {
|
||||
"cards": cards,
|
||||
"total": total,
|
||||
"page": page,
|
||||
"limit": limit
|
||||
}
|
||||
|
||||
@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())
|
||||
return created_card
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
@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:
|
||||
raise HTTPException(status_code=404, detail="Card not found")
|
||||
try:
|
||||
updated_card = card_service.update(db, db_card, card.dict(exclude_unset=True))
|
||||
return updated_card
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
@router.delete("/cards/{card_id}", response_model=CardDelete)
|
||||
async def delete_card(card_id: int, db: Session = Depends(get_db)):
|
||||
success = card_service.delete(db, card_id)
|
||||
if not success:
|
||||
raise HTTPException(status_code=404, detail="Card not found")
|
||||
return {"message": "Card deleted successfully"}
|
||||
|
||||
# ============================================================================
|
||||
# Order Management Endpoints
|
||||
# ============================================================================
|
||||
@router.post("/orders")
|
||||
async def create_order(order_data: dict, card_ids: list[int], db: Session = Depends(get_db)):
|
||||
try:
|
||||
order = order_service.create_order_with_cards(db, order_data, card_ids)
|
||||
return order
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@router.get("/orders")
|
||||
async def get_orders(
|
||||
db: Session = Depends(get_db),
|
||||
page: int = 1,
|
||||
limit: int = 10
|
||||
):
|
||||
skip = (page - 1) * limit
|
||||
orders = order_service.get_orders_with_cards(db, skip=skip, limit=limit)
|
||||
return {
|
||||
"orders": orders,
|
||||
"page": page,
|
||||
"limit": limit
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
# File Management Endpoints
|
||||
# ============================================================================
|
||||
|
Reference in New Issue
Block a user