ishaq101's picture
clean init
478dec6
from externals.databases.database import get_db
from externals.databases.pg_crud import (
get_tenant_by_name,
create_tenant,
)
from externals.databases.schemas.tenant import TenantCreate, TenantResponse
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.ext.asyncio import AsyncSession
from utils.logger import get_logger
logger = get_logger("tenant management")
router = APIRouter(prefix="/admin", tags=["Tenant"])
# CREATE TENANT
@router.post(
"/tenants",
status_code=status.HTTP_201_CREATED,
response_model=TenantResponse,
)
async def create_tenant_endpoint(
tenant: TenantCreate,
db: AsyncSession = Depends(get_db),
):
logger.info("Create tenant request", extra={"tenant_name": tenant.tenant_name})
existing = await get_tenant_by_name(db, tenant.tenant_name)
if existing:
raise HTTPException(
status_code=status.HTTP_409_CONFLICT,
detail="Tenant already exists",
)
created = await create_tenant(db, tenant)
return created
# GET TENANT BY NAME
@router.get(
"/tenants/{tenant_name}",
response_model=TenantResponse,
)
async def get_tenant_endpoint(
tenant_name: str,
db: AsyncSession = Depends(get_db),
):
logger.info("Get tenant request", extra={"tenant_name": tenant_name})
tenant = await get_tenant_by_name(db, tenant_name)
if not tenant:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Tenant not found",
)
return tenant