fix(api): use proper Pydantic models in vendor themes/domains
vendor_themes.py: - Return ThemePresetListResponse instead of raw dict (API-001 fix) - Add ThemePresetResponse response_model to apply_theme_preset - Add ThemeDeleteResponse response_model to delete endpoint vendor_domain.py: - Remove _get_vendor_by_id helper with direct DB query - Use vendor_service.get_vendor_by_id() instead (API-002 fix) models/schema/vendor_theme.py: - Add ThemeDeleteResponse model for delete endpoint response 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@ Admin endpoints for managing vendor custom domains.
|
||||
Follows the architecture pattern:
|
||||
- Endpoints only handle HTTP layer
|
||||
- Business logic in service layer
|
||||
- Proper exception handling
|
||||
- Domain exceptions bubble up to global handler
|
||||
- Pydantic schemas for validation
|
||||
"""
|
||||
|
||||
@@ -16,10 +16,9 @@ from sqlalchemy.orm import Session
|
||||
|
||||
from app.api.deps import get_current_admin_api
|
||||
from app.core.database import get_db
|
||||
from app.exceptions import VendorNotFoundException
|
||||
from app.services.vendor_domain_service import vendor_domain_service
|
||||
from app.services.vendor_service import vendor_service
|
||||
from models.database.user import User
|
||||
from models.database.vendor import Vendor
|
||||
from models.schema.vendor_domain import (
|
||||
DomainDeletionResponse,
|
||||
DomainVerificationInstructions,
|
||||
@@ -34,26 +33,6 @@ router = APIRouter(prefix="/vendors")
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def _get_vendor_by_id(db: Session, vendor_id: int) -> Vendor:
|
||||
"""
|
||||
Helper to get vendor by ID.
|
||||
|
||||
Args:
|
||||
db: Database session
|
||||
vendor_id: Vendor ID
|
||||
|
||||
Returns:
|
||||
Vendor object
|
||||
|
||||
Raises:
|
||||
VendorNotFoundException: If vendor not found
|
||||
"""
|
||||
vendor = db.query(Vendor).filter(Vendor.id == vendor_id).first()
|
||||
if not vendor:
|
||||
raise VendorNotFoundException(str(vendor_id), identifier_type="id")
|
||||
return vendor
|
||||
|
||||
|
||||
@router.post("/{vendor_id}/domains", response_model=VendorDomainResponse)
|
||||
def add_vendor_domain(
|
||||
vendor_id: int = Path(..., description="Vendor ID", gt=0),
|
||||
@@ -122,8 +101,8 @@ def list_vendor_domains(
|
||||
**Raises:**
|
||||
- 404: Vendor not found
|
||||
"""
|
||||
# Verify vendor exists
|
||||
_get_vendor_by_id(db, vendor_id)
|
||||
# Verify vendor exists (raises VendorNotFoundException if not found)
|
||||
vendor_service.get_vendor_by_id(db, vendor_id)
|
||||
|
||||
domains = vendor_domain_service.get_vendor_domains(db, vendor_id)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user