66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
from asyncio import gather
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from pydantic import BaseModel
|
|
|
|
from app.controller import controller
|
|
from app.model.albums import Album
|
|
from app.model.artwork import Artwork
|
|
from app.model.bio import Bio, ProfessionalService
|
|
from app.model.quotes import Quote
|
|
from app.model.video import Video
|
|
from app.routers.albums import router as albums_router
|
|
from app.routers.artwork import router as artwork_router
|
|
from app.routers.bio import router as bio_router
|
|
from app.routers.quotes import router as quotes_router
|
|
from app.routers.videos import router as videos_router
|
|
|
|
from .origins import origins
|
|
|
|
app = FastAPI()
|
|
|
|
app.include_router(albums_router)
|
|
app.include_router(artwork_router)
|
|
app.include_router(bio_router)
|
|
app.include_router(quotes_router)
|
|
app.include_router(videos_router)
|
|
|
|
# noinspection PyTypeChecker
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=origins,
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
|
|
class MeganJohns(BaseModel):
|
|
albums: list[Album]
|
|
artwork: list[Artwork]
|
|
quotes: list[Quote]
|
|
videos: list[Video]
|
|
bio: Bio
|
|
professional_services: list[ProfessionalService]
|
|
|
|
|
|
@app.get("/")
|
|
async def root() -> MeganJohns:
|
|
albums, artwork, bio, quotes, videos, services = await gather(
|
|
controller.get_all_albums(),
|
|
controller.get_all_artwork(),
|
|
controller.get_bio(),
|
|
controller.get_all_quotes(),
|
|
controller.get_all_videos(),
|
|
controller.get_all_professional_services(),
|
|
)
|
|
return MeganJohns(
|
|
albums=albums,
|
|
artwork=artwork,
|
|
quotes=quotes,
|
|
videos=videos,
|
|
bio=bio,
|
|
professional_services=services,
|
|
)
|