giga_tcg/dependencies.py
2025-02-05 21:51:22 -05:00

114 lines
4.2 KiB
Python

from sqlalchemy.orm import Session
from services.data import DataService
from services.upload import UploadService
from services.box import BoxService
from services.tcgplayer import TCGPlayerService
from services.pricing import PricingService
from services.file import FileService
from services.product import ProductService
from services.inventory import InventoryService
from services.task import TaskService
from services.storage import StorageService
from fastapi import Depends, Form
from db.database import get_db
from schemas.file import CreateFileRequest
from schemas.box import CreateBoxRequest, UpdateBoxRequest, CreateOpenBoxRequest
## file
# file
def get_file_service(db: Session = Depends(get_db)) -> FileService:
"""Dependency injection for FileService"""
return FileService(db)
# metadata
def get_create_file_metadata(
type: str = Form(...),
source: str = Form(...),
service: str = Form(None),
filename: str = Form(None)
) -> CreateFileRequest:
"""Dependency injection for FileMetadata"""
return CreateFileRequest(type=type, source=source, service=service, filename=filename)
def get_box_data(
type: str = Form(...),
sku: str = Form(None),
set_code: str = Form(...),
num_cards_expected: int = Form(None)
) -> CreateBoxRequest:
"""Dependency injection for BoxData"""
return CreateBoxRequest(type=type, sku=sku, set_code=set_code, num_cards_expected=num_cards_expected)
def get_box_update_data(
type: str = Form(None),
sku: str = Form(None),
set_code: str = Form(None),
num_cards_expected: int = Form(None)
) -> UpdateBoxRequest:
"""Dependency injection for BoxUpdateData"""
return UpdateBoxRequest(type=type, sku=sku, set_code=set_code, num_cards_expected=num_cards_expected)
def get_open_box_data(
product_id: str = Form(...),
file_ids: list[str] = Form(None),
num_cards_actual: int = Form(None),
date_opened: str = Form(None)
) -> CreateOpenBoxRequest:
"""Dependency injection for OpenBoxData"""
return CreateOpenBoxRequest(product_id=product_id, file_ids=file_ids, num_cards_actual=num_cards_actual, date_opened=date_opened)
def get_tcgplayer_service(
db: Session = Depends(get_db)
) -> TCGPlayerService:
"""Dependency injection for TCGPlayerService"""
return TCGPlayerService(db)
# storage
def get_storage_service(db: Session = Depends(get_db)) -> StorageService:
"""Dependency injection for StorageService"""
return StorageService(db)
# product
def get_product_service(db: Session = Depends(get_db), file_service: FileService = Depends(get_file_service), tcgplayer_service: TCGPlayerService = Depends(get_tcgplayer_service), storage_service: StorageService = Depends(get_storage_service)) -> ProductService:
"""Dependency injection for ProductService"""
return ProductService(db, file_service, tcgplayer_service, storage_service)
# task
def get_task_service(db: Session = Depends(get_db), product_service: ProductService = Depends(get_product_service), tcgplayer_service: TCGPlayerService = Depends(get_tcgplayer_service)) -> TaskService:
"""Dependency injection for TaskService"""
return TaskService(db, product_service, tcgplayer_service)
## Inventory
def get_inventory_service(db: Session = Depends(get_db)) -> InventoryService:
"""Dependency injection for InventoryService"""
return InventoryService(db)
## Upload
def get_upload_service(db: Session = Depends(get_db)) -> UploadService:
"""Dependency injection for UploadService"""
return UploadService(db)
## box
def get_box_service(db: Session = Depends(get_db), inventory_service: InventoryService = Depends(get_inventory_service)) -> BoxService:
"""Dependency injection for BoxService"""
return BoxService(db, inventory_service)
## Pricing
def get_pricing_service(db: Session = Depends(get_db)) -> PricingService:
"""Dependency injection for PricingService"""
return PricingService(db)
## Data
def get_data_service(
db: Session = Depends(get_db),
tcgplayer_service: TCGPlayerService = Depends(get_tcgplayer_service)
) -> DataService:
"""Dependency injection for DataService"""
return DataService(db, tcgplayer_service)