Can now retrieve players from endpoint
This commit is contained in:
parent
7719f879ba
commit
7bb210ba83
5 changed files with 59 additions and 13 deletions
|
|
@ -19,11 +19,15 @@ class PlayPlayer(PlayPlayerBase, table=True):
|
||||||
player: "Player" = Relationship(back_populates="playplayers")
|
player: "Player" = Relationship(back_populates="playplayers")
|
||||||
|
|
||||||
class PlayPlayerPublic(PlayPlayerBase):
|
class PlayPlayerPublic(PlayPlayerBase):
|
||||||
id: int
|
name: str
|
||||||
|
player: "PlayerPublicNoPlayPlayers"
|
||||||
|
play: "PlayPublic"
|
||||||
|
|
||||||
|
class PlayPlayerPublicNoPlay(PlayPlayerBase):
|
||||||
name: str
|
name: str
|
||||||
player: "PlayerPublicNoPlayPlayers"
|
player: "PlayerPublicNoPlayPlayers"
|
||||||
|
|
||||||
class PlayPlayerPublicWithPlay(PlayPlayerPublic):
|
class PlayPlayerPublicNoPlayer(PlayPlayerBase):
|
||||||
name: str
|
name: str
|
||||||
play: "PlayPublic"
|
play: "PlayPublic"
|
||||||
|
|
||||||
|
|
@ -47,12 +51,12 @@ class Play(PlayBase, table=True):
|
||||||
}
|
}
|
||||||
|
|
||||||
class PlayPublic(PlayBase):
|
class PlayPublic(PlayBase):
|
||||||
players: list[PlayPlayerPublic]
|
players: list[PlayPlayerPublicNoPlay]
|
||||||
boardgame: "BoardGamePublicNoPlays"
|
boardgame: "BoardGamePublicNoPlays"
|
||||||
|
|
||||||
|
|
||||||
class PlayPublicNoGame(PlayBase):
|
class PlayPublicNoGame(PlayBase):
|
||||||
players: list[PlayPlayerPublic] = []
|
players: list[PlayPlayerPublicNoPlay] = []
|
||||||
|
|
||||||
|
|
||||||
from src.classes.boardgame_classes import BoardGame, BoardGamePublicNoPlays
|
from src.classes.boardgame_classes import BoardGame, BoardGamePublicNoPlays
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,17 @@
|
||||||
from sqlmodel import SQLModel, Field, Relationship
|
from sqlmodel import SQLModel, Field, Relationship
|
||||||
from src.classes.play_classes import PlayPlayer
|
from src.classes.play_classes import PlayPlayer, PlayPlayerPublicNoPlayer
|
||||||
|
|
||||||
class Player(SQLModel, table=True):
|
class PlayerBase(SQLModel):
|
||||||
|
name: str
|
||||||
|
|
||||||
|
class Player(PlayerBase, table=True):
|
||||||
name: str | None = Field(default=None, primary_key=True)
|
name: str | None = Field(default=None, primary_key=True)
|
||||||
|
|
||||||
playplayers: list[PlayPlayer] = Relationship(back_populates="player")
|
playplayers: list[PlayPlayer] = Relationship(back_populates="player")
|
||||||
|
|
||||||
|
|
||||||
class PlayerPublic(SQLModel):
|
class PlayerPublic(PlayerBase):
|
||||||
name: str
|
playplayers: list[PlayPlayerPublicNoPlayer]
|
||||||
|
|
||||||
class PlayerPublicNoPlayPlayers(SQLModel):
|
class PlayerPublicNoPlayPlayers(PlayerBase):
|
||||||
name: str
|
pass
|
||||||
15
src/main.py
15
src/main.py
|
|
@ -8,7 +8,7 @@ from fastapi import FastAPI, Depends
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
|
|
||||||
from src.classes import boardgame_classes, play_classes, statistic_classes, people_classes
|
from src.classes import boardgame_classes, play_classes, statistic_classes, people_classes, player_classes
|
||||||
from src.modules import data_connection, statistic_creator
|
from src.modules import data_connection, statistic_creator
|
||||||
from src.filters import boardgame_filters, play_filters
|
from src.filters import boardgame_filters, play_filters
|
||||||
|
|
||||||
|
|
@ -152,8 +152,19 @@ def get_plays(query: PlayFilterParams = Depends(), boardgame_id: int = -1, sessi
|
||||||
|
|
||||||
return requested_plays
|
return requested_plays
|
||||||
|
|
||||||
|
@app.get('/players', response_model=list[player_classes.PlayerPublicNoPlayPlayers])
|
||||||
|
def get_players(session: Session = Depends(get_session)):
|
||||||
|
requested_players = data_connection.get_all_players(session)
|
||||||
|
|
||||||
@app.get('/players', response_model=list[play_classes.PlayPlayerPublic])
|
return requested_players
|
||||||
|
|
||||||
|
@app.get('/player', response_model=player_classes.PlayerPublic)
|
||||||
|
def get_player(player_name: str, session: Session = Depends(get_session)):
|
||||||
|
requested_players = data_connection.get_player(player_name.title(), session)
|
||||||
|
|
||||||
|
return requested_players
|
||||||
|
|
||||||
|
@app.get('/players_from_play', response_model=list[play_classes.PlayPlayerPublic])
|
||||||
def get_players_from_play(play_id: int, session: Session = Depends(get_session)):
|
def get_players_from_play(play_id: int, session: Session = Depends(get_session)):
|
||||||
requested_players = data_connection.get_players_from_play(session, play_id)
|
requested_players = data_connection.get_players_from_play(session, play_id)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ from threading import Lock
|
||||||
critical_function_lock = Lock()
|
critical_function_lock = Lock()
|
||||||
|
|
||||||
from src.modules import bgg_connection, db_connection
|
from src.modules import bgg_connection, db_connection
|
||||||
from src.classes import boardgame_classes, play_classes, people_classes
|
from src.classes import boardgame_classes, play_classes, people_classes, player_classes
|
||||||
|
|
||||||
def get_db_engine():
|
def get_db_engine():
|
||||||
return db_connection.get_engine()
|
return db_connection.get_engine()
|
||||||
|
|
@ -119,6 +119,22 @@ def get_players_from_play(session: Session, play_id: int) -> list[play_classes.P
|
||||||
|
|
||||||
return players_from_db
|
return players_from_db
|
||||||
|
|
||||||
|
def get_all_players(session: Session) -> list[player_classes.Player]:
|
||||||
|
players_from_db = db_connection.get_all_players(session)
|
||||||
|
|
||||||
|
if len(players_from_db) == 0:
|
||||||
|
all_plays = bgg_connection.get_plays()
|
||||||
|
|
||||||
|
db_connection.add_multiple_plays(session, all_plays)
|
||||||
|
|
||||||
|
players_from_db = db_connection.get_all_players(session)
|
||||||
|
|
||||||
|
return players_from_db
|
||||||
|
|
||||||
|
def get_player(player_name: str, session: Session) -> player_classes.Player:
|
||||||
|
player_from_db = db_connection.get_player(player_name, session)
|
||||||
|
return player_from_db
|
||||||
|
|
||||||
def get_designers(session: Session) -> list[people_classes.Designer]:
|
def get_designers(session: Session) -> list[people_classes.Designer]:
|
||||||
designers_from_db = db_connection.get_all_designers(session)
|
designers_from_db = db_connection.get_all_designers(session)
|
||||||
return designers_from_db
|
return designers_from_db
|
||||||
|
|
|
||||||
|
|
@ -123,6 +123,18 @@ def get_all_designers(session: Session) -> list[people_classes.Designer]:
|
||||||
designers = results.all()
|
designers = results.all()
|
||||||
return designers
|
return designers
|
||||||
|
|
||||||
|
def get_player(player_name: str, session: Session) -> player_classes.Player:
|
||||||
|
statement = statement = select(player_classes.Player).where(player_classes.Player.name == player_name)
|
||||||
|
results = session.exec(statement)
|
||||||
|
player = results.one_or_none()
|
||||||
|
return player
|
||||||
|
|
||||||
|
def get_all_players(session: Session) -> list[player_classes.Player]:
|
||||||
|
statement = statement = select(player_classes.Player)
|
||||||
|
results = session.exec(statement)
|
||||||
|
players = results.all()
|
||||||
|
return players
|
||||||
|
|
||||||
def get_boardgame(session: Session, boardgame_id: int) -> boardgame_classes.BoardGame:
|
def get_boardgame(session: Session, boardgame_id: int) -> boardgame_classes.BoardGame:
|
||||||
|
|
||||||
statement = select(boardgame_classes.BoardGame).where(boardgame_classes.BoardGame.id == boardgame_id)
|
statement = select(boardgame_classes.BoardGame).where(boardgame_classes.BoardGame.id == boardgame_id)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue