"""Identity model in Neo4j.""" from typing import Optional from connector_neo4j import get_session from account.models.types import ProfileInfo def get_identity_by_auth0_user_id( auth0_user_id: str, ) -> str: """Get identity id by auth0_user_id.""" session = get_session() result = session.run( """ MATCH (i:Identity { auth0UserId: $auth0_user_id }) RETURN i.id as identity_id """, auth0_user_id=auth0_user_id, ).single() if not result: return result identity_id = result.get('identity_id') return identity_id def get_identity_settings_profile(identity_uuid: str) -> Optional[ProfileInfo]: """Get the settings profile for an identity.""" session = get_session() result = session.run( """MATCH (i:Identity {id: $identity_id})-[:HAS_PROFILE]->""" """(p:Profile {profileType: "SettingsProfile"}) RETURN p.profileType as profileType, p.profileId as profileId, p.roles as roles, p.uuid as uuid""", identity_id=identity_uuid, ).single() if not result: return None return ProfileInfo( profile_type=result['profileType'], profile_id=result['profileId'], roles=result['roles'], uuid=result['uuid'], )