"""Neo4j base model.""" from functools import wraps from config import NEO4J_DATABASE_NAME from connectors.neo4j import neo4j_driver def run(query, params): """Run a cypher query with passed params. Args: query (str): Cypher query. params (dict): Params of the query. Return: StatementResult: result object """ with neo4j_driver.session( default_access_mode='write', database=NEO4J_DATABASE_NAME) as session: return session.execute_write(execute_tx, query, params) def execute_tx(tx, query, params): """Execute cypher query with passed params. Args: tx: Trasaction query (str): Cypher query. params (dict): Params of the query. Returns: StatementResult: result object """ result = tx.run(query, **params) return result.data() def neo4j_session(f): """Inject neo4j session. Args: f (callable): A callable object. """ @wraps(f) def _wrapper(*args, **kwargs): with neo4j_driver.session() as session: kwargs['neo4j_session'] = session return f(*args, **kwargs) return _wrapper