utils.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. 'use strict';
  2. var mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || process.env.MONGO_URI || null
  3. , mongoose= require('mongoose')
  4. , fs = require('fs')
  5. , models = {}
  6. , crowi = new (require(ROOT_DIR + '/lib/crowi'))(ROOT_DIR, process.env)
  7. ;
  8. before('Create database connection and clean up', function (done) {
  9. if (!mongoUri) {
  10. return done();
  11. }
  12. mongoose.connect(mongoUri);
  13. function clearDB() {
  14. for (var i in mongoose.connection.collections) {
  15. mongoose.connection.collections[i].remove(function() {});
  16. }
  17. return done();
  18. }
  19. if (mongoose.connection.readyState === 0) {
  20. mongoose.connect(mongoUri, function (err) {
  21. if (err) {
  22. throw err;
  23. }
  24. return clearDB();
  25. });
  26. } else {
  27. return clearDB();
  28. }
  29. });
  30. after('Close database connection', function (done) {
  31. if (!mongoUri) {
  32. return done();
  33. }
  34. mongoose.disconnect();
  35. return done();
  36. });
  37. // Setup Models
  38. fs.readdirSync(MODEL_DIR).forEach(function(file) {
  39. if (file.match(/^(\w+)\.js$/)) {
  40. var name = RegExp.$1;
  41. if (name === 'index') {
  42. return;
  43. }
  44. var modelName = name.charAt(0).toUpperCase() + name.slice(1);
  45. models[modelName] = require(MODEL_DIR + '/' + file)(crowi);
  46. }
  47. });
  48. crowi.models = models;
  49. module.exports = {
  50. models: models,
  51. mongoose: mongoose,
  52. }