""" Tenants API routes """ from fastapi import APIRouter, Depends, HTTPException, status from typing import List from pydantic import BaseModel from sqlalchemy.orm import Session from ..database import SessionLocal from ..models import Tenant from ..config.settings import settings router = APIRouter() # Pydantic models for tenants class TenantCreate(BaseModel): name: str subdomain: str class TenantResponse(BaseModel): id: int name: str subdomain: str is_active: bool class Config: from_attributes = True @router.get("/", response_model=List[TenantResponse]) async def get_tenants(skip: int = 0, limit: int = 100, db: Session = Depends(SessionLocal)): """Get all tenants""" tenants = db.query(Tenant).offset(skip).limit(limit).all() return tenants @router.get("/{tenant_id}", response_model=TenantResponse) async def get_tenant(tenant_id: int, db: Session = Depends(SessionLocal)): """Get a specific tenant""" tenant = db.query(Tenant).filter(Tenant.id == tenant_id).first() if not tenant: raise HTTPException(status_code=404, detail="Tenant not found") return tenant @router.post("/", response_model=TenantResponse) async def create_tenant(tenant: TenantCreate, db: Session = Depends(SessionLocal)): """Create a new tenant""" if not settings.MULTI_TENANT_ENABLED: raise HTTPException(status_code=400, detail="Multi-tenant is not enabled") db_tenant = Tenant(**tenant.model_dump()) db.add(db_tenant) db.commit() db.refresh(db_tenant) return db_tenant