Files
NetMapper2026/backend/app/routers/relations.py
T
Perplexity Bot 4466e59684
CI / basic-check (push) Has been cancelled
Add inventory relations model and API structure
2026-08-04 19:20:19 +00:00

38 lines
1.3 KiB
Python

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')