New structure

This commit is contained in:
2025-04-21 13:50:51 +02:00
parent 1eba79cc5a
commit abe0cbb173
45 changed files with 10 additions and 50 deletions

View File

@@ -0,0 +1,62 @@
from fastapi import APIRouter, Depends
from authx import RequestToken
from modules.web_app.auth.authx import auth
from modules.web_app.serializers.streamer import StreamerSerializer, TwitchSerializer
from repositories.streamers import StreamerConfigRepository
from repositories.users import UserRepository
from domain.auth import OAuthProvider
streamer_router = APIRouter(prefix="/api/streamers")
@streamer_router.get("/")
async def get_streamers(
token: RequestToken = Depends(RequestToken)
) -> list[StreamerSerializer]:
payload = auth.verify_token(token)
u_id = payload.sub
is_admin: bool = getattr(payload, "is_admin", False)
if is_admin:
streamers = await StreamerConfigRepository.all()
else:
user = await UserRepository.get(u_id)
twith_oauth = user.oauths.get(OAuthProvider.TWITCH)
if not twith_oauth:
return []
streamers = [await StreamerConfigRepository.get_by_twitch_id(
int(twith_oauth.id)
)]
return [StreamerSerializer(**streamer.model_dump()) for streamer in streamers]
@streamer_router.get("/me/")
async def get_me(
token: RequestToken = Depends(RequestToken)
) -> StreamerSerializer:
payload = auth.verify_token(token)
u_id = payload.sub
user = await UserRepository.get(u_id)
twith_oauth = user.oauths.get(OAuthProvider.TWITCH)
if not twith_oauth:
raise Exception("Twitch account not linked")
streamer = await StreamerConfigRepository.get_by_twitch_id(
int(twith_oauth.id)
)
return StreamerSerializer(
twitch=TwitchSerializer(
id=streamer.twitch.id,
name=streamer.twitch.name
)
)