import Nedb from 'nedb';
import { resolve } from 'path';
import config from '@config';

export interface InterfaceDB {
  user: Nedb
  doc: Nedb,
  tag: Nedb
};

const { localDb } = config;

const filename = name => resolve(localDb.dir, name);

const db: InterfaceDB = {
  user: new Nedb({
    filename: filename(localDb.user),
    autoload: true
  }),
  doc: new Nedb({
    filename: filename(localDb.doc),
    autoload: true
  }),
  tag: new Nedb({
    filename: filename(localDb.tag),
    autoload: true
  })
};

export default () => {
  return async(ctx, next) => {
    ctx.$db = db;
    await next();
  };
};