# encoding: utf-8
from neo4j import GraphDatabase

class NEO:
    def __init__(self, dbhost, dbuser, dbpwd, dbport=3734):
        self.dbhost = dbhost
        self.dbport = dbport
        self.dbuser = dbuser
        self.dbpwd = dbpwd
        self.connection = self.session()

    def session(self):
        connection = GraphDatabase.driver(
            uri="bolt://"+self.dbhost+":"+str(self.dbport),
            auth=(self.dbuser,self.dbpwd),
            encrypted=False
            )
        return connection

    def execute_query(self, sql, **kwargs):
        return self.connection.execute_query(sql, **kwargs)
    
    def insert(self, sql, **kwargs):
        return self.connection.execute_query(sql, **kwargs)
    
    def query(self, sql, parameters={}):
        return self.connection.execute_query(sql, parameters_=parameters)

    def close(self):
        if getattr(self, 'connection', 0):
            return self.connection.close()

    def __del__(self):
        self.close()