Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
88 changes: 88 additions & 0 deletions api/backend/games/games_routes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
from flask import Blueprint, request, jsonify, make_response, current_app, redirect, url_for
import json
from backend.db_connection import db

games_routes = Blueprint('games', __name__)


@games_routes.route('/games', methods=['GET'])
def get_games():
try:
current_app.logger.info('GET /games handler')
cursor = db.get_db().cursor()

cursor.execute('SELECT * FROM Game')
theData = cursor.fetchall()

the_response = make_response(jsonify(theData))
the_response.status_code = 200
return the_response
except Exception as e:
current_app.logger.error(f'Error fetching games: {e}')
return make_response(jsonify({"error": "Failed to fetch games"}), 500)

@games_routes.route('/games', methods=['POST'])
def create_game():
try:
current_app.logger.info('POST /games handler')
cursor = db.get_db().cursor()

new_game = request.get_json()
date = new_game.get('date')
season = new_game.get('season')
is_playoff = new_game.get('is_playoff')
home_team_id = new_game.get('home_team_id')
away_team_id = new_game.get('away_team_id')
home_score = new_game.get('home_score', 0)
away_score = new_game.get('away_score', 0)

if not date or not season or not home_team_id or not away_team_id:
return make_response(jsonify({"error": "Missing required fields"}), 400)

query = '''
INSERT INTO Game (date, season, is_playoff, home_team_id, away_team_id, home_score, away_score)
VALUES (%s, %s, %s, %s, %s, %s, %s)
'''
current_app.logger.info(f'Executing query: {query}')

cursor.execute(query, (date, season, is_playoff, home_team_id, away_team_id, home_score, away_score))
db.get_db().commit()

the_response = make_response(jsonify(new_game), 201)
return the_response
except Exception as e:
current_app.logger.error(f'Error creating game: {e}')
return make_response(jsonify({"error": "Failed to create game"}), 500)

@games_routes.route('/games/<int:game_id>', methods=['PUT'])
def update_game(game_id):
try:
cursor = db.get_db().cursor()
current_app.logger.info(f'PUT /games/{game_id} handler')

updated_game = request.get_json()
date = updated_game.get('date')
season = updated_game.get('season')
is_playoff = updated_game.get('is_playoff')
home_team_id = updated_game.get('home_team_id')
away_team_id = updated_game.get('away_team_id')
home_score = updated_game.get('home_score')
away_score = updated_game.get('away_score')
if not date or not season or not home_team_id or not away_team_id:
return make_response(jsonify({"error": "Missing required fields"}), 400)

query = '''
UPDATE Game
SET date = %s, season = %s, is_playoff = %s, home_team_id = %s, away_team_id = %s, home_score = %s, away_score = %s
WHERE game_id = %s
'''
current_app.logger.info(f'Executing query: {query}')

cursor.execute(query, (date, season, is_playoff, home_team_id, away_team_id, home_score, away_score, game_id))
db.get_db().commit()

the_response = make_response(jsonify(updated_game), 200)
return the_response
except Exception as e:
current_app.logger.error(f'Error updating game: {e}')
return make_response(jsonify({"error": "Failed to update game"}), 500)
21 changes: 21 additions & 0 deletions api/backend/players/players_routes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from flask import Blueprint, request, jsonify, make_response, current_app, redirect, url_for
import json
from backend.db_connection import db

players = Blueprint('players', __name__)

@players.route('/player-matchups', methods=['GET'])
def get_player_matchups():
try:
current_app.logger.info('GET /player-matchups handler')
cursor = db.get_db().cursor()

cursor.execute('SELECT * FROM PlayerMatchup')
theData = cursor.fetchall()

the_response = make_response(jsonify(theData))
the_response.status_code = 200
return the_response
except Exception as e:
current_app.logger.error(f'Error fetching player matchups: {e}')
return make_response(jsonify({"error": "Failed to fetch player matchups"}), 500)
6 changes: 6 additions & 0 deletions api/backend/rest_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
from backend.customers.customer_routes import customers
from backend.products.products_routes import products
from backend.simple.simple_routes import simple_routes
from backend.players.players_routes import players
from backend.games.games_routes import games_routes
from backend.teams.teams_routes import teams_routes
import os
from dotenv import load_dotenv

Expand Down Expand Up @@ -42,6 +45,9 @@ def create_app():
app.register_blueprint(simple_routes)
app.register_blueprint(customers, url_prefix='/c')
app.register_blueprint(products, url_prefix='/p')
app.register_blueprint(players)
app.register_blueprint(games_routes)
app.register_blueprint(teams_routes)

# Don't forget to return the app object
return app
Expand Down
87 changes: 87 additions & 0 deletions api/backend/teams/teams_routes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
from flask import Blueprint, request, jsonify, make_response, current_app, redirect, url_for
import json
from backend.db_connection import db

teams_routes = Blueprint('teams_routes', __name__)

@teams_routes.route('/teams/<int:team_id>/players', methods=['GET'])
def get_team_players(team_id):
try:
current_app.logger.info(f'GET /teams/{team_id}/players handler')
cursor = db.get_db().cursor()

# get current players where left_date is NULL, meaning they haven't left)
query = '''
SELECT DISTINCT p.player_id, p.first_name, p.last_name, p.position,
tp.jersey_num, tp.joined_date, p.age, p.college, p.height, p.weight
FROM Players p
JOIN TeamsPlayers tp ON p.player_id = tp.player_id
WHERE tp.team_id = %s
AND tp.left_date IS NULL
ORDER BY tp.jersey_num, p.last_name
'''

cursor.execute(query, (team_id,))
theData = cursor.fetchall()

the_response = make_response(jsonify(theData))
the_response.status_code = 200
return the_response
except Exception as e:
current_app.logger.error(f'Error fetching team players: {e}')
return make_response(jsonify({"error": "Failed to fetch team players"}), 500)

@teams_routes.route('/teams/<team_id>/players', methods=['POST'])
def add_team_player(team_id):
try:
current_app.logger.info(f'POST /teams/{team_id}/players handler')
cursor = db.get_db().cursor()

new_player = request.get_json()
player_id = new_player.get('player_id')
jersey_num = new_player.get('jersey_num')
joined_date = new_player.get('joined_date')
if not player_id or not jersey_num or not joined_date:
return make_response(jsonify({"error": "Missing required fields"}), 400)

query = '''
INSERT INTO TeamsPlayers (team_id, player_id, jersey_num, joined_date)
VALUES (%s, %s, %s, %s)
'''

cursor.execute(query, (team_id, player_id, jersey_num, joined_date))
db.get_db().commit()

the_response = make_response(jsonify(new_player), 201)
return the_response
except Exception as e:
current_app.logger.error(f'Error adding team player: {e}')
return make_response(jsonify({"error": "Failed to add team player"}), 500)

@teams_routes.route('/teams/<team_id>/players/<int:player_id>', methods=['PUT'])
def update_team_player(team_id, player_id):
try:
current_app.logger.info(f'PUT /teams/{team_id}/players/{player_id} handler')
cursor = db.get_db().cursor()

# Update jersey_num and left_date
updated_player = request.get_json()
jersey_num = updated_player.get('jersey_num')
left_date = updated_player.get('left_date')
if not jersey_num:
return make_response(jsonify({"error": "Missing required fields"}), 400)

query = '''
UPDATE TeamsPlayers
SET jersey_num = %s, left_date = %s
WHERE team_id = %s AND player_id = %s
'''

cursor.execute(query, (jersey_num, left_date, team_id, player_id))
db.get_db().commit()
the_response = make_response(jsonify(updated_player), 200)
return the_response
except Exception as e:
current_app.logger.error(f'Error updating team player: {e}')
return make_response(jsonify({"error": "Failed to update team player"}), 500)

Loading