Files
MOHPortalTest-AllAgents-All…/qwen/python/merchants_of_hope/api/v1/tenants.py

53 lines
1.5 KiB
Python

"""
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