Factor out common prefixes
This commit is contained in:
parent
fbbaadd098
commit
608df42388
@ -8,10 +8,10 @@ from ..sql.database import get_db
|
|||||||
|
|
||||||
from .players import read_player, list_players
|
from .players import read_player, list_players
|
||||||
|
|
||||||
api_router = APIRouter(tags=["deck"])
|
api_router = APIRouter(prefix="/deck", tags=["deck"])
|
||||||
html_router = APIRouter(include_in_schema=False)
|
html_router = APIRouter(prefix="/deck", include_in_schema=False)
|
||||||
|
|
||||||
@api_router.post("/deck", response_model=schemas.Deck, status_code=201)
|
@api_router.post("/", response_model=schemas.Deck, status_code=201)
|
||||||
def create_deck(deck: schemas.DeckCreate, db: Session = Depends(get_db)):
|
def create_deck(deck: schemas.DeckCreate, db: Session = Depends(get_db)):
|
||||||
db_player = crud.get_player_by_id(db, deck.owner_id)
|
db_player = crud.get_player_by_id(db, deck.owner_id)
|
||||||
if db_player is None:
|
if db_player is None:
|
||||||
@ -20,60 +20,59 @@ def create_deck(deck: schemas.DeckCreate, db: Session = Depends(get_db)):
|
|||||||
return crud.create_deck(db=db, deck=deck)
|
return crud.create_deck(db=db, deck=deck)
|
||||||
|
|
||||||
|
|
||||||
@api_router.get("/deck/{deck_id}", response_model=schemas.Deck)
|
@api_router.get("/list", response_model=list[schemas.Deck])
|
||||||
def read_deck(deck_id: str, db = Depends(get_db)):
|
def list_decks(skip: int = 0, limit: int = 100, db = Depends(get_db)):
|
||||||
|
return crud.get_decks(db, skip=skip, limit=limit)
|
||||||
|
|
||||||
|
|
||||||
|
@api_router.get("/{deck_id}", response_model=schemas.Deck)
|
||||||
|
def read_deck(deck_id: int, db = Depends(get_db)):
|
||||||
|
print(deck_id)
|
||||||
db_deck = crud.get_deck_by_id(db, deck_id)
|
db_deck = crud.get_deck_by_id(db, deck_id)
|
||||||
if db_deck is None:
|
if db_deck is None:
|
||||||
raise HTTPException(status_code=404, detail="Deck not found")
|
raise HTTPException(status_code=404, detail="Deck not found")
|
||||||
return db_deck
|
return db_deck
|
||||||
|
|
||||||
|
|
||||||
@api_router.get("/decks", response_model=list[schemas.Deck])
|
@api_router.delete("/{deck_id}", status_code=204)
|
||||||
def list_decks(skip: int = 0, limit: int = 100, db = Depends(get_db)):
|
|
||||||
return crud.get_decks(db, skip=skip, limit=limit)
|
|
||||||
|
|
||||||
|
|
||||||
@api_router.delete("/deck/{deck_id}", status_code=204)
|
|
||||||
def delete_deck(deck_id: str, db = Depends(get_db)):
|
def delete_deck(deck_id: str, db = Depends(get_db)):
|
||||||
crud.delete_deck_by_id(db, int(deck_id))
|
crud.delete_deck_by_id(db, int(deck_id))
|
||||||
|
|
||||||
|
|
||||||
@html_router.get("/deck/create", response_class=HTMLResponse)
|
@html_router.get("/create", response_class=HTMLResponse)
|
||||||
def deck_create_html(request: Request, db = Depends(get_db)):
|
def deck_create_html(request: Request, db = Depends(get_db)):
|
||||||
players = list_players(db=db)
|
players = list_players(db=db)
|
||||||
return jinja_templates.TemplateResponse(
|
return jinja_templates.TemplateResponse(
|
||||||
request,
|
request,
|
||||||
"deck_create.html",
|
"decks/create.html",
|
||||||
{
|
{
|
||||||
"players": players
|
"players": players
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@html_router.get("/deck/{deck_id}", response_class=HTMLResponse)
|
# TODO - pagination
|
||||||
|
@html_router.get("/list", response_class=HTMLResponse)
|
||||||
|
def decks_html(request: Request, db = Depends(get_db)):
|
||||||
|
decks = list_decks(db=db)
|
||||||
|
return jinja_templates.TemplateResponse(
|
||||||
|
request,
|
||||||
|
"decks/list.html",
|
||||||
|
{
|
||||||
|
"decks": decks
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# This must be after the static-path routes, lest it take priority over them
|
||||||
|
@html_router.get("/{deck_id}", response_class=HTMLResponse)
|
||||||
def deck_html(request: Request, deck_id: str, db = Depends(get_db)):
|
def deck_html(request: Request, deck_id: str, db = Depends(get_db)):
|
||||||
deck_info = read_deck(deck_id, db)
|
deck_info = read_deck(deck_id, db)
|
||||||
return jinja_templates.TemplateResponse(
|
return jinja_templates.TemplateResponse(
|
||||||
request,
|
request,
|
||||||
"deck_detail.html",
|
"decks/detail.html",
|
||||||
{
|
{
|
||||||
"deck": _jsonify(deck_info),
|
"deck": _jsonify(deck_info),
|
||||||
"owner": _jsonify(deck_info.owner)
|
"owner": _jsonify(deck_info.owner)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# TODO - pagination
|
|
||||||
@html_router.get("/decks", response_class=HTMLResponse)
|
|
||||||
def decks_html(request: Request, db = Depends(get_db)):
|
|
||||||
decks = list_decks(db=db)
|
|
||||||
print(decks)
|
|
||||||
return jinja_templates.TemplateResponse(
|
|
||||||
request,
|
|
||||||
"deck_list.html",
|
|
||||||
{
|
|
||||||
# TODO - investigate if there are any issues to passing the "live" object into the
|
|
||||||
# template, as opposed to the `_jsonify`'d one.
|
|
||||||
"decks": decks
|
|
||||||
}
|
|
||||||
)
|
|
@ -6,46 +6,50 @@ from ..templates import jinja_templates
|
|||||||
from ..sql import crud, schemas
|
from ..sql import crud, schemas
|
||||||
from ..sql.database import get_db
|
from ..sql.database import get_db
|
||||||
|
|
||||||
api_router = APIRouter(tags=["player"])
|
api_router = APIRouter(prefix="/player", tags=["player"])
|
||||||
html_router = APIRouter()
|
html_router = APIRouter(prefix="/player", include_in_schema=False)
|
||||||
|
|
||||||
@api_router.post("/player", response_model=schemas.Player, status_code=201)
|
@api_router.post("/", response_model=schemas.Player, status_code=201)
|
||||||
def create_player(player: schemas.PlayerCreate, db: Session = Depends(get_db)):
|
def create_player(player: schemas.PlayerCreate, db: Session = Depends(get_db)):
|
||||||
return crud.create_player(db=db, player=player)
|
return crud.create_player(db=db, player=player)
|
||||||
|
|
||||||
|
|
||||||
@api_router.get("/player/{player_id}", response_model=schemas.Player)
|
@api_router.get("/list", response_model=list[schemas.Player])
|
||||||
def read_player(player_id: str, db = Depends(get_db)):
|
def list_players(skip: int = 0, limit: int = 100, db = Depends(get_db)):
|
||||||
|
return crud.get_players(db, skip=skip, limit=limit)
|
||||||
|
|
||||||
|
|
||||||
|
# TODO - https://fastapi.tiangolo.com/tutorial/path-params/#order-matters
|
||||||
|
# suggests that putting this after `/list` should allow `/api/player/list` to properly
|
||||||
|
# trigger `list_players`, but it doesn't.
|
||||||
|
@api_router.get("/{player_id}", response_model=schemas.Player)
|
||||||
|
def read_player(player_id: int, db=Depends(get_db)):
|
||||||
db_player = crud.get_player_by_id(db, player_id)
|
db_player = crud.get_player_by_id(db, player_id)
|
||||||
if db_player is None:
|
if db_player is None:
|
||||||
raise HTTPException(status_code=404, detail="Player not found")
|
raise HTTPException(status_code=404, detail="Player not found")
|
||||||
return db_player
|
return db_player
|
||||||
|
|
||||||
|
|
||||||
@api_router.get("/players", response_model=list[schemas.Player])
|
@api_router.delete("/{player_id}", status_code=204)
|
||||||
def list_players(skip: int = 0, limit: int = 100, db = Depends(get_db)):
|
|
||||||
return crud.get_players(db, skip=skip, limit=limit)
|
|
||||||
|
|
||||||
|
|
||||||
@api_router.delete("/player/{player_id}", status_code=204)
|
|
||||||
def delete_player(player_id: str, db = Depends(get_db)):
|
def delete_player(player_id: str, db = Depends(get_db)):
|
||||||
crud.delete_player_by_id(db, int(player_id))
|
crud.delete_player_by_id(db, int(player_id))
|
||||||
|
|
||||||
|
|
||||||
@html_router.get("/player/create", response_class=HTMLResponse)
|
@html_router.get("/create", response_class=HTMLResponse)
|
||||||
def player_create_html(request: Request, db = Depends(get_db)):
|
def player_create_html(request: Request, db = Depends(get_db)):
|
||||||
return jinja_templates.TemplateResponse(
|
return jinja_templates.TemplateResponse(
|
||||||
request,
|
request,
|
||||||
"player_create.html"
|
"players/create.html"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@html_router.get("/player/{player_id}", response_class=HTMLResponse)
|
# This must be after the static-path routes, lest it take priority over them
|
||||||
|
@html_router.get("/{player_id}", response_class=HTMLResponse)
|
||||||
def player_html(request: Request, player_id: str, db = Depends(get_db)):
|
def player_html(request: Request, player_id: str, db = Depends(get_db)):
|
||||||
player_info = read_player(player_id, db)
|
player_info = read_player(player_id, db)
|
||||||
return jinja_templates.TemplateResponse(
|
return jinja_templates.TemplateResponse(
|
||||||
request,
|
request,
|
||||||
"player_detail.html",
|
"players/detail.html",
|
||||||
{
|
{
|
||||||
"player": player_info
|
"player": player_info
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
<title>Player - {{ player.name }}</title>
|
<title>Player - {{ player.name }}</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>Hello World!</h1>
|
|
||||||
<h2>This is the page for player {{ player.name }} who has id {{ player.id }}</h2>
|
<h2>This is the page for player {{ player.name }} who has id {{ player.id }}</h2>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
Loading…
x
Reference in New Issue
Block a user