"""Business logic for product endpoints.""" from typing import Any from ddtrace import tracer from neo4j import Session as Neo4jSession from pydantic import UUID4 from contributor.logic.access import has_full_catalog_access, label_profile_ids from contributor.queries.neo4j import products as queries @tracer.wrap() def get_product_participations( session: Neo4jSession, contributor_uuid: UUID4, profiles: list[dict], ) -> dict[str, Any] | None: is_admin = has_full_catalog_access(session, profiles) result = queries.get_by_label_participant_uuid( session=session, uuid=str(contributor_uuid), profile_ids=label_profile_ids(profiles), is_admin=is_admin, ) if result is None: return None result["participations"] = [ p for p in result["participations"] if p.get("participated_as") != "feature_to_primary" ] return result