import neo4j from 'neo4j-driver'
import CONFIG from './../config'
import Neode from 'neode'
import models from '../models'

let driver
const defaultOptions = {
  uri: CONFIG.NEO4J_URI,
  username: CONFIG.NEO4J_USERNAME,
  password: CONFIG.NEO4J_PASSWORD,
}

export function getDriver(options = {}) {
  const { uri, username, password } = { ...defaultOptions, ...options }
  if (!driver) {
    driver = neo4j.driver(uri, neo4j.auth.basic(username, password))
  }
  return driver
}

let neodeInstance
export function getNeode(options = {}) {
  if (!neodeInstance) {
    const { uri, username, password } = { ...defaultOptions, ...options }
    neodeInstance = new Neode(uri, username, password).with(models)
    neodeInstance.extend('Post', 'Article', {})
    return neodeInstance
  }
  return neodeInstance
}
