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

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions data/player_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
# -------------------------------------------------------------------------------------------------

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker, declarative_base

engine = create_engine("sqlite:///./data/players-sqlite3.db", connect_args={"check_same_thread": False})
OrmSession = sessionmaker(autocommit=False, autoflush=False, bind=engine)
DATABASE_URL = "sqlite:///./data/players-sqlite3.db"

engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False})

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "engine" doesn't conform to UPPER_CASE naming style

Constant name "engine" doesn't conform to UPPER_CASE naming style
OrmSession = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))

Check warning

Code scanning / Pylint (reported by Codacy)

Constant name "OrmSession" doesn't conform to UPPER_CASE naming style

Constant name "OrmSession" doesn't conform to UPPER_CASE naming style
Base = declarative_base()
5 changes: 3 additions & 2 deletions models/player_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@ class PlayerModel(BaseModel):
league: Optional[str] = Field(..., serialization_alias='league')
starting11: Optional[bool] = Field(..., serialization_alias='starting11')

class ConfigDict:
from_attributes = True

class Config:
orm_mode = True
29 changes: 11 additions & 18 deletions routes/player_route.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,14 @@

api_router = APIRouter()

# We need to have an independent database session/connection per request, use
# the same session through all the request and then close it after the request
# is finished.
# And then a new session will be created for the next request.
# Our dependency will create a new SQLAlchemy Session that will be used in a
# single request, and then close it once the request is finished.
# https://fastapi.tiangolo.com/tutorial/sql-databases/#create-a-dependency


def get_db_session():
db_session = OrmSession()
# https://fastapi.tiangolo.com/tutorial/sql-databases/#create-a-dependency
def get_orm_session():
orm_session = OrmSession()
try:
yield db_session
yield orm_session
finally:
db_session.close()
orm_session.close()

# -------------------------------------------------------------------------------------------------
# HTTP GET
Expand All @@ -38,9 +31,9 @@ def get_db_session():
summary="Retrieves a collection of Players"
)
def get_players(
db_session: Session = Depends(get_db_session)
orm_session: Session = Depends(get_orm_session)

Check warning

Code scanning / Pylint (reported by Codacy)

Wrong hanging indentation before block (add 4 spaces).

Wrong hanging indentation before block (add 4 spaces).
):
players = player_service.retrieve_all_players(db_session)
players = player_service.retrieve_all_players(orm_session)
return players


Expand All @@ -51,9 +44,9 @@ def get_players(
)
def get_player_by_id(
player_id: int = Path(..., title="The Id of the Player"),
db_session: Session = Depends(get_db_session)
orm_session: Session = Depends(get_orm_session)

Check warning

Code scanning / Pylint (reported by Codacy)

Wrong hanging indentation before block (add 4 spaces).

Wrong hanging indentation before block (add 4 spaces).
):
player = player_service.retrieve_player_by_id(db_session, player_id)
player = player_service.retrieve_player_by_id(orm_session, player_id)
if not player:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND)
return player
Expand All @@ -66,9 +59,9 @@ def get_player_by_id(
)
def get_player_by_squad_number(
squad_number: int = Path(..., title="The Squad Number of the Player"),
db_session: Session = Depends(get_db_session)
orm_session: Session = Depends(get_orm_session)

Check warning

Code scanning / Pylint (reported by Codacy)

Wrong hanging indentation before block (add 4 spaces).

Wrong hanging indentation before block (add 4 spaces).
):
player = player_service.retrieve_player_by_squad_number(db_session, squad_number)
player = player_service.retrieve_player_by_squad_number(orm_session, squad_number)
if not player:
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND)
return player
12 changes: 6 additions & 6 deletions services/player_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@


# https://docs.sqlalchemy.org/en/14/orm/query.html#sqlalchemy.orm.Query.all
def retrieve_all_players(db: Session):
return db.query(Player).all()
def retrieve_all_players(orm_session: Session):
return orm_session.query(Player).all()


# https://docs.sqlalchemy.org/en/14/orm/query.html#sqlalchemy.orm.Query.get
def retrieve_player_by_id(db: Session, player_id: int):
return db.query(Player).filter(Player.id == player_id).first()
def retrieve_player_by_id(orm_session: Session, player_id: int):
return orm_session.query(Player).filter(Player.id == player_id).first()


# https://docs.sqlalchemy.org/en/14/orm/query.html#sqlalchemy.orm.Query.filter
def retrieve_player_by_squad_number(db: Session, squad_number: int):
return db.query(Player).filter(Player.squad_number == squad_number).first()
def retrieve_player_by_squad_number(orm_session: Session, squad_number: int):
return orm_session.query(Player).filter(Player.squad_number == squad_number).first()