This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
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')
|
||||
Reference in New Issue
Block a user