index.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. 'use strict';
  2. const mongoose = require('mongoose');
  3. let lib = {
  4. connection: null,
  5. schemas: {},
  6. models: {},
  7. init: (url, cb) => {
  8. lib.connection = mongoose.connect(url).connection;
  9. lib.connection.on('error', err => {
  10. console.error('Database error: ' + err.message)
  11. process.exit();
  12. });
  13. lib.connection.once('open', _ => {
  14. lib.schemas = {
  15. song: new mongoose.Schema(require(`./schemas/song`)),
  16. queueSong: new mongoose.Schema(require(`./schemas/queueSong`)),
  17. station: new mongoose.Schema(require(`./schemas/station`)),
  18. user: new mongoose.Schema(require(`./schemas/user`)),
  19. playlist: new mongoose.Schema(require(`./schemas/playlist`)),
  20. news: new mongoose.Schema(require(`./schemas/news`)),
  21. report: new mongoose.Schema(require(`./schemas/report`))
  22. };
  23. lib.schemas.station.path('_id').validate((id) => {
  24. return /^[a-z]+$/.test(id);
  25. }, 'The id can only have the letters a-z.');
  26. lib.models = {
  27. song: mongoose.model('song', lib.schemas.song),
  28. queueSong: mongoose.model('queueSong', lib.schemas.queueSong),
  29. station: mongoose.model('station', lib.schemas.station),
  30. user: mongoose.model('user', lib.schemas.user),
  31. playlist: mongoose.model('playlist', lib.schemas.playlist),
  32. news: mongoose.model('news', lib.schemas.news),
  33. report: mongoose.model('report', lib.schemas.report)
  34. };
  35. cb();
  36. });
  37. }
  38. };
  39. module.exports = lib;