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,
|
job_id=job.id,
|
||||||
status=job.status,
|
status=job.status,
|
||||||
marketplace=job.marketplace,
|
marketplace=job.marketplace,
|
||||||
|
source_url=job.source_url,
|
||||||
vendor_id=job.vendor.id if job.vendor else None,
|
vendor_id=job.vendor.id if job.vendor else None,
|
||||||
vendor_code=job.vendor.vendor_code 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,
|
imported=job.imported_count or 0,
|
||||||
updated=job.updated_count or 0,
|
updated=job.updated_count or 0,
|
||||||
total_processed=job.total_processed 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)
|
total_quantity = sum(entry.quantity for entry in inventory_entries)
|
||||||
locations = [
|
locations = [
|
||||||
InventoryLocationResponse(
|
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
|
for entry in inventory_entries
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -539,16 +539,16 @@ class VendorService:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def _get_product_by_id_or_raise(
|
def _get_product_by_id_or_raise(
|
||||||
self, db: Session, marketplace_product_id: str
|
self, db: Session, marketplace_product_id: int
|
||||||
) -> MarketplaceProduct:
|
) -> MarketplaceProduct:
|
||||||
"""Get product by ID or raise exception."""
|
"""Get marketplace product by database ID or raise exception."""
|
||||||
product = (
|
product = (
|
||||||
db.query(MarketplaceProduct)
|
db.query(MarketplaceProduct)
|
||||||
.filter(MarketplaceProduct.marketplace_product_id == marketplace_product_id)
|
.filter(MarketplaceProduct.id == marketplace_product_id)
|
||||||
.first()
|
.first()
|
||||||
)
|
)
|
||||||
if not product:
|
if not product:
|
||||||
raise MarketplaceProductNotFoundException(marketplace_product_id)
|
raise MarketplaceProductNotFoundException(str(marketplace_product_id))
|
||||||
return product
|
return product
|
||||||
|
|
||||||
def _product_in_catalog(
|
def _product_in_catalog(
|
||||||
|
|||||||
@@ -88,3 +88,11 @@ class InventoryMessageResponse(BaseModel):
|
|||||||
"""Simple message response for inventory operations."""
|
"""Simple message response for inventory operations."""
|
||||||
|
|
||||||
message: str
|
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