Morphy2k/broadcast-notification-system

View on GitHub
lib/database.js

Summary

Maintainability
A
0 mins
Test Coverage
'use strict';

const low = require('lowdb');

// init database
const FileSync = require('lowdb/adapters/FileSync');

const adapter = new FileSync('./db.json');
const db = low(adapter);

db.defaults({
  settings: {
    uri: '',
    auth: {
      secret: null,
      email: null,
      expiration_date: null
    },
    notification: {
      enabled: false,
      duration: 16000,
      template: {
        selected: 'default',
        list: []
      },
      types: {
        follows: true,
        subscriptions: false,
        hosts: false,
        donations: false
      }
    },
    dashboard: {
      popups: true
    },
    api: {
      state: '',
      twitch: {
        enabled: false,
        userid: null,
        username: '',
        auth: {
          token: '',
          refresh_token: '',
          expiration_date: null
        },
        type: ''
      },
      streamlabs: {
        enabled: false,
        auth: {
          token: '',
          refresh_token: '',
          expiration_date: null
        }
      }
    }
  },
  stats: {
    week: null,
    follows: [0, 0, 0, 0, 0, 0, 0],
    subscriptions: [0, 0, 0, 0, 0, 0, 0],
    donations: {
      count: [0, 0, 0, 0, 0, 0, 0],
      amount: [0, 0, 0, 0, 0, 0, 0]
    },
    feed: {
      list: []
    }
  },
  queue: {
    follows: {
      last: null,
      list: []
    },
    subscriptions: {
      last: null,
      list: []
    },
    hosts: {
      last: [],
      list: []
    },
    donations: {
      last: null,
      list: []
    }
  },
  blacklist: {
    cleared: null,
    list: []
  }
}).write();

// define paths
exports.settings = db.get('settings');
exports.stats = db.get('stats');
exports.queue = db.get('queue');
exports.blacklist = db.get('blacklist');