44 lines
1.9 KiB
Python
44 lines
1.9 KiB
Python
|
# endpoints/create_sponsored_relationship.py
|
||
|
|
||
|
from flask import Blueprint, jsonify
|
||
|
from neo4j import GraphDatabase
|
||
|
import logging
|
||
|
from app import get_driver, neo4j_logger # Use absolute import
|
||
|
|
||
|
bp = Blueprint('create_sponsored_relationship', __name__)
|
||
|
|
||
|
@bp.route('/create_sponsored_relationship', methods=['GET'])
|
||
|
def create_sponsored_relationship():
|
||
|
try:
|
||
|
driver = get_driver()
|
||
|
with driver.session() as session:
|
||
|
# Step 3: Implement the endpoint logic
|
||
|
legislation_nodes = session.run("MATCH (l:Legislation) RETURN l")
|
||
|
for record in legislation_nodes:
|
||
|
legislation = record['l']
|
||
|
bioguide_id = legislation.get('sponsored_by')
|
||
|
|
||
|
if bioguide_id:
|
||
|
person_node = session.run(
|
||
|
"MATCH (p:Person {bioguideId: $bioguideId}) RETURN p",
|
||
|
{"bioguideId": bioguide_id}
|
||
|
).single()
|
||
|
|
||
|
if person_node:
|
||
|
person = person_node['p']
|
||
|
session.run(
|
||
|
"MATCH (p:Person), (l:Legislation) "
|
||
|
"WHERE id(p) = $person_id AND id(l) = $legislation_id "
|
||
|
"CREATE (p)-[:SPONSORED]->(l)",
|
||
|
{"person_id": person.id, "legislation_id": legislation.id}
|
||
|
)
|
||
|
neo4j_logger.info(f"Created SPONSORED relationship from Person {person['name']} to Legislation {legislation['title']}")
|
||
|
else:
|
||
|
neo4j_logger.warning(f"No Person node found for bioguideId: {bioguide_id}")
|
||
|
|
||
|
return jsonify({"status": "success", "message": "SPONSORED relationships created successfully"}), 201
|
||
|
|
||
|
except Exception as e:
|
||
|
neo4j_logger.error(f"Error creating SPONSORED relationships: {e}")
|
||
|
return jsonify({"status": "error", "message": str(e)}), 500
|