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

reverting flask to previous version which should work with new database

parent 230ba3d8
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
# Load environment variables from .env file # Load environment variables from .env file
load_dotenv() load_dotenv()
app = Flask(__name__) app = Flask(__name__)
# Enable CORS for all routes and origins
CORS(app)
# Get the database URL from the environment # Get the database URL from the environment
DATABASE_URL = os.getenv('DATABASE_URL') DATABASE_URL = os.getenv('DATABASE_URL')
if not DATABASE_URL: if not DATABASE_URL:
raise ValueError("DATABASE_URL is not set in the environment variables") raise ValueError("DATABASE_URL is not set in the environment variables")
# Setup the engine and sessionmaker
engine = create_engine(DATABASE_URL) engine = create_engine(DATABASE_URL)
Session = sessionmaker(bind=engine) Session = sessionmaker(bind=engine)
@app.route('/graph', methods=['GET']) @app.route('/nodes', methods=['GET'])
def get_graph(): def get_nodes():
try: try:
year = request.args.get('year') year = request.args.get('year')
if year:
year = int(year)
with Session() as session: with Session() as session:
# Fetch nodes query = session.query(Node)
nodes = session.query(Node).filter(Node.year == year).all() if year:
query = query.filter(Node.year == year)
nodes = query.all()
node_list = [node.to_dict() for node in nodes] node_list = [node.to_dict() for node in nodes]
return jsonify(node_list)
# Fetch edges
edges = session.query(Edge).filter(Edge.year == year).all()
edge_list = []
for edge in edges:
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()
if source_node and target_node:
edge_list.append({
"id": edge.id,
"label": edge.label,
"source": {
"id": edge.source,
"x": source_node.x,
"y": source_node.y
},
"target": {
"id": edge.target,
"x": target_node.x,
"y": target_node.y
},
"edge_type": edge.edge_type,
"distance": edge.distance,
"year": edge.year
})
return jsonify({"nodes": node_list, "edges": edge_list})
except Exception as e: except Exception as e:
return jsonify({'error': str(e)}), 500 return jsonify({'error': str(e)}), 500
@app.route('/edges', methods=['GET'])
def get_edges():
try:
year = request.args.get('year')
with Session() as session:
query = session.query(Edge)
if year:
query = query.filter(Edge.year == year)
edges = query.all()
edge_list = [edge.to_dict() for edge in edges]
return jsonify(edge_list)
except Exception as e:
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