fix: correct service methods and add inventory schema model
Services: - admin_service: Add source_url to import job response, fix vendor_name to use vendor.name relationship instead of vendor_name field - marketplace_product_service: Include reserved_quantity and available_quantity in InventoryLocationResponse - vendor_service: Fix _get_product_by_id_or_raise to use database ID (int) instead of marketplace_product_id (str) Schema: - Add InventorySummaryResponse model for marketplace product service 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -845,9 +845,10 @@ class AdminService:
|
||||
job_id=job.id,
|
||||
status=job.status,
|
||||
marketplace=job.marketplace,
|
||||
source_url=job.source_url,
|
||||
vendor_id=job.vendor.id if job.vendor else None,
|
||||
vendor_code=job.vendor.vendor_code if job.vendor else None,
|
||||
vendor_name=job.vendor_name,
|
||||
vendor_name=job.vendor.name if job.vendor else None,
|
||||
imported=job.imported_count or 0,
|
||||
updated=job.updated_count or 0,
|
||||
total_processed=job.total_processed or 0,
|
||||
|
||||
@@ -344,7 +344,10 @@ class MarketplaceProductService:
|
||||
total_quantity = sum(entry.quantity for entry in inventory_entries)
|
||||
locations = [
|
||||
InventoryLocationResponse(
|
||||
location=entry.location, quantity=entry.quantity
|
||||
location=entry.location,
|
||||
quantity=entry.quantity,
|
||||
reserved_quantity=entry.reserved_quantity or 0,
|
||||
available_quantity=entry.quantity - (entry.reserved_quantity or 0),
|
||||
)
|
||||
for entry in inventory_entries
|
||||
]
|
||||
|
||||
@@ -539,16 +539,16 @@ class VendorService:
|
||||
)
|
||||
|
||||
def _get_product_by_id_or_raise(
|
||||
self, db: Session, marketplace_product_id: str
|
||||
self, db: Session, marketplace_product_id: int
|
||||
) -> MarketplaceProduct:
|
||||
"""Get product by ID or raise exception."""
|
||||
"""Get marketplace product by database ID or raise exception."""
|
||||
product = (
|
||||
db.query(MarketplaceProduct)
|
||||
.filter(MarketplaceProduct.marketplace_product_id == marketplace_product_id)
|
||||
.filter(MarketplaceProduct.id == marketplace_product_id)
|
||||
.first()
|
||||
)
|
||||
if not product:
|
||||
raise MarketplaceProductNotFoundException(marketplace_product_id)
|
||||
raise MarketplaceProductNotFoundException(str(marketplace_product_id))
|
||||
return product
|
||||
|
||||
def _product_in_catalog(
|
||||
|
||||
@@ -88,3 +88,11 @@ class InventoryMessageResponse(BaseModel):
|
||||
"""Simple message response for inventory operations."""
|
||||
|
||||
message: str
|
||||
|
||||
|
||||
class InventorySummaryResponse(BaseModel):
|
||||
"""Inventory summary response for marketplace product service."""
|
||||
|
||||
gtin: str
|
||||
total_quantity: int
|
||||
locations: list[InventoryLocationResponse]
|
||||
|
||||
Reference in New Issue
Block a user