policymap/api/endpoints/nodes.py

31 lines
864 B
Python
Raw Normal View History

# endpoints/nodes.py
from flask import Blueprint, request, jsonify
from app import get_driver, neo4j_logger
bp = Blueprint('nodes', __name__)
@bp.route('/nodes')
def get_nodes():
node_type = request.args.get('type')
if not node_type:
return jsonify({"error": "Node type is required"}), 400
driver = get_driver()
with driver.session() as session:
query = f"MATCH (n:{node_type}) RETURN n"
neo4j_logger.info(f"Executing query: {query}")
nodes = session.run(query)
# Convert the nodes to a list of dictionaries
nodes_list = [
{
'id': record['n'].id,
'labels': list(record['n'].labels),
**{key: value for key, value in record['n'].items()}
}
for record in nodes
]
return jsonify({"nodes": nodes_list})