from aiohttp import web from aiohttp_apispec import docs, querystring_schema from server.constants import BASE_API_PREFIX from server.scenarios.isrc_relation import get_isrc_relation from server.schemas.isrc.isrc_relation import IsrcRelation from server.utils.response import dump_response_schema router = web.RouteTableDef() @router.get(BASE_API_PREFIX + "/isrc-relation/{isrc}/") @docs( tags=["isrc"], summary="Get relations by specific isrc.", ) @querystring_schema(IsrcRelation.Request) @dump_response_schema(IsrcRelation.Response) async def get(request: web.Request) -> web.Response: params = request["querystring"] isrc = request.match_info["isrc"] market = params.get("market") result = await get_isrc_relation(market, isrc) schema = IsrcRelation.Response() return web.json_response(schema.dump(result[0])) @router.get(BASE_API_PREFIX + "/isrc-relation/") @docs( tags=["isrc"], summary="Get all isrc relations", ) @querystring_schema(IsrcRelation.Request) @dump_response_schema(IsrcRelation.Response, apply=False) async def get(request: web.Request) -> web.Response: params = request["querystring"] market = params.get("market") result = await get_isrc_relation(market) schema = IsrcRelation.Response(many=True) return web.json_response(schema.dump(result))