from typing import Any

from fastapi import APIRouter, HTTPException
from pydantic import BaseModel

from ...services.tenant_service import tenant_service

from common_logging import get_logger

logger = get_logger(__name__)

router = APIRouter()

class TenantCreate(BaseModel):
    name: str
    plan: str
    config: dict[str, Any] = {}

@router.post('/tenants')
async def create_tenant(tenant: TenantCreate):
    tenant_id = tenant_service.create_tenant(tenant.name, tenant.plan, tenant.config)
    logger.bind(tenant_id=tenant_id).info("Tenant created")
    return {'tenant_id': tenant_id}

@router.get('/tenants/{tenant_id}')
async def get_tenant(tenant_id: int):
    tenant = tenant_service.get_tenant(tenant_id)
    if not tenant:
        raise HTTPException(status_code=404, detail='Tenant not found')
    return tenant
