utils.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. 'use strict';
  2. var mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || process.env.MONGO_URI || null
  3. , mongoose= require('mongoose')
  4. , models = {}
  5. , crowi = new (require(ROOT_DIR + '/lib/crowi'))(ROOT_DIR, process.env)
  6. ;
  7. before('Create database connection and clean up', function (done) {
  8. if (!mongoUri) {
  9. return done();
  10. }
  11. mongoose.connect(mongoUri);
  12. function clearDB() {
  13. for (var i in mongoose.connection.collections) {
  14. mongoose.connection.collections[i].remove(function() {});
  15. }
  16. return done();
  17. }
  18. if (mongoose.connection.readyState === 0) {
  19. mongoose.connect(mongoUri, function (err) {
  20. if (err) {
  21. throw err;
  22. }
  23. return clearDB();
  24. });
  25. } else {
  26. return clearDB();
  27. }
  28. });
  29. after('Close database connection', function (done) {
  30. if (!mongoUri) {
  31. return done();
  32. }
  33. mongoose.disconnect();
  34. return done();
  35. });
  36. models.Page = require(MODEL_DIR + '/page.js')(crowi);
  37. models.User = require(MODEL_DIR + '/user.js')(crowi);
  38. models.Config = require(MODEL_DIR + '/config.js')(crowi);
  39. models.Revision = require(MODEL_DIR + '/revision.js')(crowi);
  40. crowi.models = models;
  41. module.exports = {
  42. models: models,
  43. mongoose: mongoose,
  44. }