Squashed commit of the following:
commit893b229cc6
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 22:14:08 2025 -0500 j commit06f539aea2
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:55:30 2025 -0500 fk commitd0c2960ec9
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:50:53 2025 -0500 frick commit6b1362c166
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:49:40 2025 -0500 database commit8cadc6df4c
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:38:09 2025 -0500 asdf commit1ca6f98684
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:32:50 2025 -0500 fffff commit8bb337a9c3
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:31:13 2025 -0500 ffff commit65aba280c5
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:26:16 2025 -0500 aa commit59ef03a59e
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:24:21 2025 -0500 asdf commitf44d5740fc
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:23:32 2025 -0500 aaa commit13c96b1643
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:18:54 2025 -0500 sdf commit949c795fd1
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 21:17:53 2025 -0500 asdf commit8c3cd423fe
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 20:56:01 2025 -0500 app2 commit78eafc739e
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 20:54:55 2025 -0500 app commitdc47eced14
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 20:43:15 2025 -0500 asdfasdfasdf commite24bcae88c
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 20:39:44 2025 -0500 a commitc894451bfe
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 20:38:20 2025 -0500 req commit3d09869562
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 20:33:27 2025 -0500 wrong number = code dont work lol i love computers commit4c93a1271b
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 20:29:39 2025 -0500 q commit1f5361da88
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 18:27:20 2025 -0500 same as original code now -5 days of my life commit511b070cbb
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 13:52:28 2025 -0500 pricey worky commit964fdd641b
Author: zman <joshua.k.rzemien@gmail.com> Date: Fri Feb 7 11:37:29 2025 -0500 prep for pricing service work commita78c3bcba3
Author: zman <joshua.k.rzemien@gmail.com> Date: Wed Feb 5 21:51:22 2025 -0500 more stuff yay commitbd9cfca7a9
Author: zman <joshua.k.rzemien@gmail.com> Date: Tue Feb 4 22:30:33 2025 -0500 GIGA FIXED EVERYTHING OMG commit85510a4671
Author: zman <joshua.k.rzemien@gmail.com> Date: Tue Feb 4 00:01:34 2025 -0500 data model change and some new services
This commit is contained in:
124
app/dependencies.py
Normal file
124
app/dependencies.py
Normal file
@@ -0,0 +1,124 @@
|
||||
from typing import Annotated
|
||||
from sqlalchemy.orm import Session
|
||||
from fastapi import Depends, Form
|
||||
|
||||
from app.services.box import BoxService
|
||||
from app.services.tcgplayer import TCGPlayerService
|
||||
from app.services.pricing import PricingService
|
||||
from app.services.file import FileService
|
||||
from app.services.product import ProductService
|
||||
from app.services.inventory import InventoryService
|
||||
from app.services.task import TaskService
|
||||
from app.services.storage import StorageService
|
||||
from app.db.database import get_db
|
||||
from app.schemas.file import CreateFileRequest
|
||||
from app.schemas.box import CreateBoxRequest, UpdateBoxRequest, CreateOpenBoxRequest
|
||||
|
||||
# Common type annotation for database dependency
|
||||
DB = Annotated[Session, Depends(get_db)]
|
||||
|
||||
# Base Services (no dependencies besides DB)
|
||||
def get_file_service(db: DB) -> FileService:
|
||||
"""FileService with only database dependency"""
|
||||
return FileService(db)
|
||||
|
||||
def get_storage_service(db: DB) -> StorageService:
|
||||
"""StorageService with only database dependency"""
|
||||
return StorageService(db)
|
||||
|
||||
def get_inventory_service(db: DB) -> InventoryService:
|
||||
"""InventoryService with only database dependency"""
|
||||
return InventoryService(db)
|
||||
|
||||
# Services with dependencies on other services
|
||||
def get_tcgplayer_service(
|
||||
db: DB,
|
||||
file_service: Annotated[FileService, Depends(get_file_service)]
|
||||
) -> TCGPlayerService:
|
||||
"""TCGPlayerService depends on PricingService"""
|
||||
return TCGPlayerService(db, file_service)
|
||||
|
||||
def get_pricing_service(db: DB, file_service: Annotated[FileService, Depends(get_file_service)], tcgplayer_service: Annotated[TCGPlayerService, Depends(get_tcgplayer_service)]) -> PricingService:
|
||||
"""PricingService with only database dependency"""
|
||||
return PricingService(db, file_service, tcgplayer_service)
|
||||
|
||||
def get_product_service(
|
||||
db: DB,
|
||||
file_service: Annotated[FileService, Depends(get_file_service)],
|
||||
tcgplayer_service: Annotated[TCGPlayerService, Depends(get_tcgplayer_service)],
|
||||
storage_service: Annotated[StorageService, Depends(get_storage_service)]
|
||||
) -> ProductService:
|
||||
"""ProductService with multiple service dependencies"""
|
||||
return ProductService(db, file_service, tcgplayer_service, storage_service)
|
||||
|
||||
def get_box_service(
|
||||
db: DB,
|
||||
inventory_service: Annotated[InventoryService, Depends(get_inventory_service)]
|
||||
) -> BoxService:
|
||||
"""BoxService depends on InventoryService"""
|
||||
return BoxService(db, inventory_service)
|
||||
|
||||
def get_task_service(
|
||||
db: DB,
|
||||
product_service: Annotated[ProductService, Depends(get_product_service)],
|
||||
pricing_service: Annotated[PricingService, Depends(get_pricing_service)]
|
||||
) -> TaskService:
|
||||
"""TaskService depends on ProductService and TCGPlayerService"""
|
||||
return TaskService(db, product_service, pricing_service)
|
||||
|
||||
# Form data dependencies
|
||||
def get_create_file_metadata(
|
||||
type: str = Form(...),
|
||||
source: str = Form(...),
|
||||
service: str = Form(None),
|
||||
filename: str = Form(None)
|
||||
) -> CreateFileRequest:
|
||||
"""Form dependency for file creation"""
|
||||
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:
|
||||
"""Form dependency for box creation"""
|
||||
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:
|
||||
"""Form dependency for box updates"""
|
||||
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:
|
||||
"""Form dependency for opening boxes"""
|
||||
return CreateOpenBoxRequest(
|
||||
product_id=product_id,
|
||||
file_ids=file_ids,
|
||||
num_cards_actual=num_cards_actual,
|
||||
date_opened=date_opened
|
||||
)
|
Reference in New Issue
Block a user