From 80e0df1630d9f6b921128d3e8830faf0454765ac Mon Sep 17 00:00:00 2001 From: Typicode Date: Thu, 5 Feb 2015 22:03:50 +0100 Subject: [PATCH] Refactor --- package.json | 2 +- src/index.js | 48 ++++++++++++++++++----------- src/{create-routes.js => routes.js} | 16 ++-------- test/index.js | 18 +++++++---- 4 files changed, 45 insertions(+), 39 deletions(-) rename src/{create-routes.js => routes.js} (92%) diff --git a/package.json b/package.json index 6435ba2..48c4ad3 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "errorhandler": "^1.2.0", "express": "^4.9.5", "got": "^1.2.2", - "lowdb": "^0.7.0", + "lowdb": "^0.7.1", "method-override": "^2.1.2", "morgan": "^1.3.1", "node-uuid": "^1.4.2", diff --git a/src/index.js b/src/index.js index e57ba3c..3ac6e68 100644 --- a/src/index.js +++ b/src/index.js @@ -1,33 +1,43 @@ -var fs = require('fs') -var path = require('path') +var fs = require('fs') +var path = require('path') // LowDB -var low = require('lowdb') -var _db = require('underscore-db') -var _inflections = require('underscore.inflections') - -low.mixin('_db') -low.mixin('_inflections') +var low = require('lowdb') +low.mixin(require('underscore-db')) +low.mixin(require('underscore.inflections')) // Express -var http = require('http') -var express = require('express') -var logger = require('morgan') -var cors = require('cors') +var http = require('http') +var express = require('express') +var logger = require('morgan') +var cors = require('cors') var methodOverride = require('method-override') -var bodyParser = require('body-parser') -var serveStatic = require('serve-static') -var errorhandler = require('errorhandler') +var bodyParser = require('body-parser') +var serveStatic = require('serve-static') +var errorhandler = require('errorhandler') // json-server -var utils = require('./utils') -var createRoutes = require('./create-routes') +var utils = require('./utils') +var getRoutes = require('./routes') low.mixin({ createId: utils.createId }) module.exports = function(object, filename) { var server = express() - var routes = createRoutes(object, filename) + + // Create database + if (filename) { + var db = low(filename) + } else { + var db = low() + db.object = object + } + + // Expose db + server.db = db + + // Get routes + var routes = getRoutes(db) // Don't use logger if json-server is mounted if (!module.parent) { @@ -39,12 +49,14 @@ module.exports = function(object, filename) { server.use(bodyParser.urlencoded({ extended: false })) server.use(methodOverride()) + // Serve static files if (fs.existsSync(process.cwd() + '/public')) { server.use(serveStatic(process.cwd() + '/public')); } else { server.use(serveStatic(__dirname + '/public')); } + // CORS server.use(cors({ origin: true, credentials: true })) server.get('/db', routes.showDatabase) diff --git a/src/create-routes.js b/src/routes.js similarity index 92% rename from src/create-routes.js rename to src/routes.js index 9e43efb..89bb777 100644 --- a/src/create-routes.js +++ b/src/routes.js @@ -1,20 +1,7 @@ var _ = require('underscore') -var low = require('lowdb') -var _db = require('underscore-db') -var _inflections = require('underscore.inflections') var utils = require('./utils') -low.mixin(_db) -low.mixin(_inflections) - -module.exports = function(object, filename) { - if (filename) { - var db = low(filename) - } else { - var db = low() - db.object = object - } - +module.exports = function(db) { return { // GET /db showDatabase: function(req, res, next) { @@ -85,6 +72,7 @@ module.exports = function(object, filename) { } } + // Sort if(_sort) { _order = _order || 'ASC' diff --git a/test/index.js b/test/index.js index b56f145..9651bf3 100644 --- a/test/index.js +++ b/test/index.js @@ -273,18 +273,24 @@ describe('Server', function() { request(server) .get('/') .expect(/You're successfully running JSON Server/) - .expect(200, done); - }); - }); + .expect(200, done) + }) + }) describe('GET /stylesheets/style.css', function() { it('should respond with css', function(done) { request(server) .get('/stylesheets/style.css') .expect('Content-Type', /css/) - .expect(200, done); - }); - }); + .expect(200, done) + }) + }) }) + + describe('Database #object', function() { + it('should be accessible', function() { + assert(server.db.object) + }) + }) })