"""Business logic for project 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 projects as queries @tracer.wrap() def get_projects( session: Neo4jSession, contributor_uuid: UUID4, profiles: list[dict], ) -> dict[str, Any] | None: is_admin = has_full_catalog_access(session, profiles) return queries.get_by_label_participant_uuid( session=session, uuid=str(contributor_uuid), profile_ids=label_profile_ids(profiles), is_admin=is_admin, ) @tracer.wrap() def get_project_contributors( session: Neo4jSession, project_ids: list[int], profiles: list[dict], ) -> list[dict[str, Any]]: is_admin = has_full_catalog_access(session, profiles) return queries.get_contributors_by_project_ids( session=session, project_ids=project_ids, profile_ids=label_profile_ids(profiles), is_admin=is_admin, )