Files
boc/landvex/user-management/app/routers/tenants.py
T
Bernt aee0f09db8 landvex: Fixar och tester klara för alla komponenter
- Datafabrik: Dockerfile fix, agentorkestrering fungerar
- Vision: Identify-modell, FAISS, OCR alla testade
- API: Alla 7 integrationstester passerade
- Upplösare: Entitetsupplösning verifierad
2026-07-05 06:41:32 +00:00

75 lines
2.1 KiB
Python

"""Tenant CRUD-endpoints."""
from uuid import UUID
from fastapi import APIRouter, Depends, Query
from sqlalchemy.ext.asyncio import AsyncSession
from app.database import get_db
from app.dependencies import get_current_user, require_admin
from app.schemas import TenantCreate, TenantUpdate, TenantOut
from app.services.tenant_service import TenantService
router = APIRouter(prefix="/tenants", tags=["Tenants"])
@router.get("", response_model=list[TenantOut])
async def list_tenants(
skip: int = Query(0, ge=0),
limit: int = Query(100, ge=1, le=500),
current_user=Depends(require_admin),
db: AsyncSession = Depends(get_db),
):
service = TenantService(db)
items, _ = await service.list_tenants(skip=skip, limit=limit)
return items
@router.get("/{tenant_id}", response_model=TenantOut)
async def get_tenant(
tenant_id: UUID,
current_user=Depends(require_admin),
db: AsyncSession = Depends(get_db),
):
service = TenantService(db)
tenant = await service.get_by_id(tenant_id)
if tenant is None:
raise HTTPException(status_code=404, detail="Tenant not found")
return TenantOut.model_validate(tenant)
@router.post("", response_model=TenantOut, status_code=201)
async def create_tenant(
data: TenantCreate,
current_user=Depends(require_admin),
db: AsyncSession = Depends(get_db),
):
service = TenantService(db)
tenant = await service.create_tenant(data)
return TenantOut.model_validate(tenant)
@router.patch("/{tenant_id}", response_model=TenantOut)
async def update_tenant(
tenant_id: UUID,
data: TenantUpdate,
current_user=Depends(require_admin),
db: AsyncSession = Depends(get_db),
):
service = TenantService(db)
tenant = await service.update_tenant(tenant_id, data)
return TenantOut.model_validate(tenant)
@router.delete("/{tenant_id}", status_code=204)
async def delete_tenant(
tenant_id: UUID,
current_user=Depends(require_admin),
db: AsyncSession = Depends(get_db),
):
service = TenantService(db)
await service.delete_tenant(tenant_id)
return None
from fastapi import HTTPException