bgg_api/src/main.py

56 lines
No EOL
1.6 KiB
Python

from typing import Union
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from contextlib import asynccontextmanager
from src.classes import boardgame_classes, play_classes
from src.modules import data_connection
@asynccontextmanager
async def lifespan(app: FastAPI):
# Startup
data_connection.delete_database()
data_connection.create_db_and_tables()
yield
# Shutdown
app = FastAPI(lifespan=lifespan)
origins = [
"http://127.0.0.1:8080",
"http://0.0.0.0:8080" #Will become something like 'bordspellen2.yarnecoppens.com'
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/boardgame", response_model=boardgame_classes.BoardGame)
def get_boardgame_by_id(id: int):
requested_boardgame: boardgame_classes.BoardGame = data_connection.get_boardgame(id)
return requested_boardgame
@app.get("/owned", response_model=list[Union[boardgame_classes.OwnedBoardGame, boardgame_classes.OwnedBoardGameExpansion]])
def get_owned_collection():
return data_connection.get_user_owned_collection()
@app.get("/wishlist", response_model=list[Union[boardgame_classes.WishlistBoardGame, boardgame_classes.WishlistBoardGameExpansion]])
def get_wishlist_collection(priority: int = 0):
return data_connection.get_user_wishlist_collection(priority)
@app.get("/plays", response_model=list[play_classes.Play])
def get_plays():
requested_plays: list[play_classes.Play] = data_connection.get_plays()
return requested_plays