from collections import defaultdict from flask import Blueprint from flask_apispec import marshal_with, use_kwargs from src.db.users.favorites import get_starred_content from src.schemas.users.favorites import UserFavoriteTracks blueprint = Blueprint("favorites", __name__) @blueprint.route("/users/favorites/tracks/", methods=["POST"]) @use_kwargs(UserFavoriteTracks.Request, location="json") @marshal_with(UserFavoriteTracks.Response(many=True)) def user_favorite_tracks(**data): result = get_starred_content(data["user_id"], data["isrc_list"]) isrc_to_users = defaultdict(set) for item in result: isrc_to_users[item.isrc].add(item.user_id) return [{"isrc": k, "users": v} for k, v in isrc_to_users.items()]