import config import neo4j_connector import dynamo maggie_identity = 'ca034907-1746-4c7b-9c42-502dc4002d6c' def node_to_dict(resource_node, **kwargs): """Convert neo4j Node instance to python dict. Args: resource_node (Node): A graph node with properties and label info. Returns: dict: of metadata from node. """ data = {} for attribute, value in resource_node.items(): data[attribute] = value return data def hydrate_roles(orchardIdentityId): """Hydrate all the roles for an Orchard Identity Id.""" with neo4j_connector.db_session(access_mode=config.NEO4j_READ_ACCESS) as session: query = """MATCH (i:Identity {id: $orchardIdentityId}) -[:HAS_PROFILE]->(p:Profile) OPTIONAL MATCH (p)-[:HAS_ACCESS_TO|:HAS_ADMIN_ACCESS_TO]->(v:Vendor) OPTIONAL MATCH (p)-[:HAS_ACCESS_TO|:HAS_ADMIN_ACCESS_TO]->(s:SubAccount) RETURN p.profileType as profileType, p.roles as roles, v.id as vendorId, s.id as subaccountId """ result = session.run(query, orchardIdentityId=orchardIdentityId) session.close() data = [] for each in result: data.append(node_to_dict(each)) return data # Test: data = hydrate_roles(maggie_identity) print(data) table = dynamo.get_table() for row in data: # Put in Dynamo table.put_item(Item={data})