from fastapi import APIRouter, status, HTTPException
from app.models.tenant import TenantCreate, TenantResponse
from app.repositories.tenant_repository import create_tenant, get_tenant_by_domain
from app.database import get_database

router = APIRouter(prefix="/api/v1/tenant", tags=["tenant"])

@router.post("/register", response_model=TenantResponse, status_code=status.HTTP_201_CREATED)
async def register_tenant(tenant_in: TenantCreate):
    db = get_database()
    
    # Check if domain is already registered
    existing_tenant = await get_tenant_by_domain(db, tenant_in.domain)
    if existing_tenant:
        raise HTTPException(
            status_code=status.HTTP_400_BAD_REQUEST,
            detail=f"Tenant already registered for domain '{tenant_in.domain}'"
        )
    
    tenant_doc = await create_tenant(db, tenant_in)
    return tenant_doc
