|
@@ -22,10 +22,6 @@ class PaginatedSearchRequest(BaseModel):
|
|
|
pageNo: int = 1
|
|
|
limit: int = 10
|
|
|
|
|
|
-class GetNodeRelationshipsRequest(BaseModel):
|
|
|
- relation_name: Optional[str] = None
|
|
|
-
|
|
|
-
|
|
|
async def get_request_id(request: Request):
|
|
|
return request.state.context["request_id"]
|
|
|
|
|
@@ -72,7 +68,8 @@ async def paginated_search(
|
|
|
error_msg=str(e)
|
|
|
)
|
|
|
)
|
|
|
-
|
|
|
+class GetNodeRelationshipsRequest(BaseModel):
|
|
|
+ relation_name: Optional[str] = None
|
|
|
@router.post("/nodes/{src_id}/relationships", response_model=StandardResponse)
|
|
|
async def get_node_relationships_condition(
|
|
|
src_id: int,
|
|
@@ -96,11 +93,11 @@ async def get_node_relationships_condition(
|
|
|
dest_props = []
|
|
|
edge_props = []
|
|
|
#count += 1
|
|
|
- #dest_props = [{'prop_title': p['prop_title'], 'prop_value': p['prop_value']}
|
|
|
- # for p in prop_service.get_props_by_ref_id(dest_node['id'])]
|
|
|
+ dest_props = [{'prop_title': p['prop_title'], 'prop_value': p['prop_value']}
|
|
|
+ for p in prop_service.get_props_by_ref_id(dest_node['id'])]
|
|
|
|
|
|
- #edge_props = [{'prop_title': p['prop_title'], 'prop_value': p['prop_value']}
|
|
|
- # for p in prop_service.get_props_by_ref_id(edge['id'])]
|
|
|
+ edge_props = [{'prop_title': p['prop_title'], 'prop_value': p['prop_value']}
|
|
|
+ for p in prop_service.get_props_by_ref_id(edge['id'])]
|
|
|
|
|
|
relationships.append({
|
|
|
"name": edge['name'],
|
|
@@ -145,11 +142,62 @@ async def get_node_relationships(
|
|
|
dest_props = []
|
|
|
edge_props = []
|
|
|
# count += 1
|
|
|
- # dest_props = [{'prop_title': p['prop_title'], 'prop_value': p['prop_value']}
|
|
|
- # for p in prop_service.get_props_by_ref_id(dest_node['id'])]
|
|
|
+ dest_props = [{'prop_title': p['prop_title'], 'prop_value': p['prop_value']}
|
|
|
+ for p in prop_service.get_props_by_ref_id(dest_node['id'])]
|
|
|
+
|
|
|
+ edge_props = [{'prop_title': p['prop_title'], 'prop_value': p['prop_value']}
|
|
|
+ for p in prop_service.get_props_by_ref_id(edge['id'])]
|
|
|
+
|
|
|
+ relationships.append({
|
|
|
+ "name": edge['name'],
|
|
|
+ "props": edge_props,
|
|
|
+ "destNode": {
|
|
|
+ "category": dest_node['category'],
|
|
|
+ "id": str(dest_node['id']),
|
|
|
+ "name": dest_node['name'],
|
|
|
+ "props": dest_props
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ return StandardResponse(
|
|
|
+ success=True,
|
|
|
+ requestId=request_id,
|
|
|
+ data=ObjectToJsonArrayConverter.convert({"relationships": relationships})
|
|
|
+ )
|
|
|
+ except Exception as e:
|
|
|
+ logger.error(f"获取节点关系失败: {str(e)}")
|
|
|
+ raise HTTPException(500, detail=StandardResponse.error(str(e)))
|
|
|
+
|
|
|
+class GetNodeProperties(BaseModel):
|
|
|
+ property_name: Optional[str] = None
|
|
|
+@router.post("/nodes/{node_id}/properties", response_model=StandardResponse)
|
|
|
+async def get_node_properts(
|
|
|
+ node_id: int,
|
|
|
+ payload: GetNodeProperties,
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ request_id: str = Depends(get_request_id),
|
|
|
+ api_key: str = Security(api_key_header)
|
|
|
+):
|
|
|
+ try:
|
|
|
+
|
|
|
+ prop_service = KGPropService(db)
|
|
|
+
|
|
|
+ edges = edge_service.get_edges_by_nodes(src_id=src_id, dest_id=None)
|
|
|
+ relationships = []
|
|
|
+
|
|
|
+ # count = 0
|
|
|
+ for edge in edges:
|
|
|
+ # if count >= 2:
|
|
|
+ # break
|
|
|
+ dest_node = edge['dest_node']
|
|
|
+ dest_props = []
|
|
|
+ edge_props = []
|
|
|
+ # count += 1
|
|
|
+ dest_props = [{'prop_title': p['prop_title'], 'prop_value': p['prop_value']}
|
|
|
+ for p in prop_service.get_props_by_ref_id(dest_node['id'])]
|
|
|
|
|
|
- # edge_props = [{'prop_title': p['prop_title'], 'prop_value': p['prop_value']}
|
|
|
- # for p in prop_service.get_props_by_ref_id(edge['id'])]
|
|
|
+ edge_props = [{'prop_title': p['prop_title'], 'prop_value': p['prop_value']}
|
|
|
+ for p in prop_service.get_props_by_ref_id(edge['id'])]
|
|
|
|
|
|
relationships.append({
|
|
|
"name": edge['name'],
|
|
@@ -170,4 +218,15 @@ async def get_node_relationships(
|
|
|
except Exception as e:
|
|
|
logger.error(f"获取节点关系失败: {str(e)}")
|
|
|
raise HTTPException(500, detail=StandardResponse.error(str(e)))
|
|
|
+
|
|
|
+class GetEdgeProperties(BaseModel):
|
|
|
+ property_name: Optional[str] = None
|
|
|
+@router.post("/edges/{edge_id}/properties", response_model=StandardResponse)
|
|
|
+async def get_node_relationships_condition(
|
|
|
+ edge_id: int,
|
|
|
+ payload: GetEdgeProperties,
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ request_id: str = Depends(get_request_id),
|
|
|
+ api_key: str = Security(api_key_header)
|
|
|
+):
|
|
|
knowledge_nodes_api_router = router
|