from fastapi import APIRouter, HTTPException, Query from app.schemas import EntityResponse, ListResponse, Relation from app.services.inventory import get_node_relations from app.services.store import RELATIONS router = APIRouter(prefix='/relations', tags=['relations']) @router.get('', response_model=ListResponse[Relation]) def list_relations( source_id: str | None = None, target_id: str | None = None, layer: str | None = None, type: str | None = Query(default=None), min_confidence: float | None = None, ) -> ListResponse[Relation]: items = RELATIONS if source_id: items = [r for r in items if r.source_id == source_id] if target_id: items = [r for r in items if r.target_id == target_id] if layer: items = [r for r in items if r.layer == layer] if type: items = [r for r in items if r.type == type] if min_confidence is not None: items = [r for r in items if r.confidence >= min_confidence] return ListResponse(count=len(items), items=items) @router.get('/{relation_id}', response_model=EntityResponse[Relation]) def get_relation(relation_id: str) -> EntityResponse[Relation]: for item in RELATIONS: if item.id == relation_id: return EntityResponse(item=item) raise HTTPException(status_code=404, detail='Relation not found')