Skip to content
Snippets Groups Projects
Commit 1460bbd5 authored by Noah Jefferson Baumann's avatar Noah Jefferson Baumann
Browse files

combining node and edges api into graph one

parent d289b741
No related branches found
No related tags found
No related merge requests found
from flask import Flask, jsonify, request from flask import Flask, jsonify, request
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine from sqlalchemy import create_engine
from backend.models import Node, Edge from models import Node, Edge
from dotenv import load_dotenv from dotenv import load_dotenv
import os import os
from flask_cors import CORS from flask_cors import CORS
...@@ -23,46 +23,24 @@ if not DATABASE_URL: ...@@ -23,46 +23,24 @@ if not DATABASE_URL:
engine = create_engine(DATABASE_URL) engine = create_engine(DATABASE_URL)
Session = sessionmaker(bind=engine) Session = sessionmaker(bind=engine)
@app.route('/nodes', methods=['GET']) @app.route('/graph', methods=['GET'])
def get_nodes(): def get_graph():
try: try:
year = request.args.get('year') year = request.args.get('year')
with Session() as session:
query = session.query(Node)
if year:
query = query.filter(Node.year == year)
nodes = query.all()
node_list = [node.to_dict() for node in nodes]
return jsonify(node_list)
except Exception as e:
return jsonify({'error': str(e)}), 500
@app.route('/edges', methods=['GET'])
def get_edges():
try:
year = request.args.get('year')
if year: if year:
try: year = int(year)
year = int(year) # Convert year to integer
except ValueError:
return jsonify({'error': 'Invalid year format'}), 400
with Session() as session: with Session() as session:
query = session.query(Edge) # Fetch nodes
nodes = session.query(Node).filter(Node.year == year).all()
if year: node_list = [node.to_dict() for node in nodes]
query = query.filter(Edge.year == year)
edges = query.all()
# Fetch edges
edges = session.query(Edge).filter(Edge.year == year).all()
edge_list = [] edge_list = []
for edge in edges: for edge in edges:
# Fetch source and target nodes for each edge
source_node = session.query(Node).filter(Node.id == edge.source).one_or_none() source_node = session.query(Node).filter(Node.id == edge.source).one_or_none()
target_node = session.query(Node).filter(Node.id == edge.target).one_or_none() target_node = session.query(Node).filter(Node.id == edge.target).one_or_none()
if source_node and target_node: if source_node and target_node:
edge_list.append({ edge_list.append({
"id": edge.id, "id": edge.id,
...@@ -81,14 +59,12 @@ def get_edges(): ...@@ -81,14 +59,12 @@ def get_edges():
"distance": edge.distance, "distance": edge.distance,
"year": edge.year "year": edge.year
}) })
else:
print(f"Skipping edge {edge.id} due to missing source or target node.") return jsonify({"nodes": node_list, "edges": edge_list})
return jsonify(edge_list)
except Exception as e: except Exception as e:
return jsonify({'error': str(e)}), 500 return jsonify({'error': str(e)}), 500
if __name__ == '__main__': if __name__ == '__main__':
app.run(debug=True) app.run(debug=True)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment