feat: use hub-core capability request reads

This commit is contained in:
2026-06-07 21:20:08 +02:00
parent 55e36bdf2d
commit 1569ee4499

View File

@@ -2,7 +2,7 @@ import re
import uuid import uuid
from datetime import datetime, timezone from datetime import datetime, timezone
from fastapi import Depends, HTTPException, Query, status from fastapi import Depends, HTTPException, status
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
@@ -23,7 +23,10 @@ from api.schemas.capability_request import (
CapabilityRequestReroute, CapabilityRequestReroute,
CapabilityRequestStatusPatch, CapabilityRequestStatusPatch,
) )
from hub_core.routers.capabilities import create_capability_catalog_router from hub_core.routers.capabilities import (
create_capability_catalog_router,
create_capability_request_read_router,
)
router = create_capability_catalog_router( router = create_capability_catalog_router(
@@ -32,6 +35,14 @@ router = create_capability_catalog_router(
repo_model=ManagedRepo, repo_model=ManagedRepo,
catalog_model=CapabilityCatalog, catalog_model=CapabilityCatalog,
) )
router.include_router(
create_capability_request_read_router(
get_session,
domain_model=Domain,
request_model=CapabilityRequest,
request_read_schema=CapabilityRequestRead,
)
)
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
@@ -92,36 +103,6 @@ async def create_request(
return req return req
@router.get("/capability-requests/", response_model=list[CapabilityRequestRead])
async def list_requests(
domain: str | None = Query(None, description="Filter by requesting OR fulfilling domain slug"),
status_filter: str | None = Query(None, alias="status"),
capability_type: str | None = Query(None),
session: AsyncSession = Depends(get_session),
) -> list[CapabilityRequest]:
q = select(CapabilityRequest).order_by(CapabilityRequest.created_at.desc())
if domain:
d = await _resolve_domain(domain, session)
q = q.where(
(CapabilityRequest.requesting_domain_id == d.id)
| (CapabilityRequest.fulfilling_domain_id == d.id)
)
if status_filter:
q = q.where(CapabilityRequest.status == status_filter)
if capability_type:
q = q.where(CapabilityRequest.capability_type == capability_type)
result = await session.execute(q)
return list(result.scalars().all())
@router.get("/capability-requests/{request_id}", response_model=CapabilityRequestRead)
async def get_request(
request_id: uuid.UUID,
session: AsyncSession = Depends(get_session),
) -> CapabilityRequest:
return await _get_request_or_404(request_id, session)
@router.post("/capability-requests/{request_id}/accept", response_model=CapabilityRequestRead) @router.post("/capability-requests/{request_id}/accept", response_model=CapabilityRequestRead)
async def accept_request( async def accept_request(
request_id: uuid.UUID, request_id: uuid.UUID,