aee0f09db8
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
75 lines
2.1 KiB
Python
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
|