diff --git a/rating-service.js b/rating-service.js index 897232d..8df7ce4 100644 --- a/rating-service.js +++ b/rating-service.js @@ -4,12 +4,10 @@ var path = require('path'); var ratingsDB = new PouchDB(path.join(__dirname, 'ratings_db')); // ratings service -function RatingService() {} -RatingService.prototype = { - +module.exports = { getRatings: function(titleIds, userId) { userId = userId || 'all'; - + return ratingsDB.allDocs({ keys: titleIds.map(function(id) { return userId + "," + id; @@ -25,17 +23,17 @@ RatingService.prototype = { ratings[row.key.substr((userId + ",").length)] = {error: row.error}; } } else if (row.doc) { - ratings[row.key.substr((userId + ",").length)] = row; + ratings[row.key.substr((userId + ",").length)] = row; } else { ratings[row.key.substr((userId + ",").length)] = {doc: null}; - } + } }); return ratings; }); }, - - setRatings: function(userId, titlesIdsAndRating) { - + + setRatings: function(userId, titlesIdsAndRating) { + function coerce(rating) { if (rating > 5) return 5; @@ -64,7 +62,7 @@ RatingService.prototype = { }; }) ).then(function(setResponse) { - + var results = {}; getResponse.rows.forEach(function(response, index) { if (!setResponse[index]) { @@ -93,8 +91,6 @@ RatingService.prototype = { }); return results; }); - }); + }); } }; - -module.exports = new RatingService(); diff --git a/recommendation-service.js b/recommendation-service.js index a884ed2..ca5ec1b 100644 --- a/recommendation-service.js +++ b/recommendation-service.js @@ -5,11 +5,10 @@ var recommendationsDB = new PouchDB(path.join(__dirname, 'recommendations_db')); var batch = require('./batch'); // genrelist service -function RecommendationsService() {} -RecommendationsService.prototype = { +module.exports = { getGenreList: function(userId) { userId = (userId || 'all').toString(); - + var getGenreLists = batch(function(userIds) { return recommendationsDB.allDocs({ keys: userIds.map(function(x) { return x.toString(); }), @@ -20,39 +19,39 @@ RecommendationsService.prototype = { genreLists[row.key] = row; }); return genreLists; - }); + }); }); - + return getGenreLists([userId]).then(function(genreLists) { return genreLists[userId].doc.recommendations; }); }, - + addTitleToGenreList: function(userId, genreIndex, titleId) { - userId = userId.toString(); + userId = userId.toString(); return recommendationsDB.get(userId) .then(function(response) { if (!response.recommendations[genreIndex]) { return Promise.reject(new Error("genrelist does not exist at index " + genreIndex)); - } + } var titlesLength = response.recommendations[genreIndex].titles.push(titleId); return recommendationsDB.put({ _id: userId, _rev: response._rev, - recommendations: response.recommendations + recommendations: response.recommendations }).then(function() { - return titlesLength; + return titlesLength; }); }); }, - + removeTitleFromGenreListByIndex: function(userId, genreIndex, titleIndex) { userId = userId.toString(); return recommendationsDB.get(userId) .then(function(response) { if (!response.recommendations[genreIndex]) { return Promise.reject(new Error("genrelist does not exist at index " + genreIndex)); - } + } var removedTitleId = response.recommendations[genreIndex].titles.splice(titleIndex, 1)[0]; return recommendationsDB.put({ _id: userId, @@ -60,12 +59,10 @@ RecommendationsService.prototype = { recommendations: response.recommendations }).then(function() { return { - titleId: removedTitleId, + titleId: removedTitleId, length: response.recommendations[genreIndex].titles.length - }; + }; }); }); - } + } }; - -module.exports = new RecommendationsService(); diff --git a/title-service.js b/title-service.js index b59588e..a8803b9 100644 --- a/title-service.js +++ b/title-service.js @@ -4,8 +4,7 @@ var path = require('path'); var titlesDB = new PouchDB(path.join(__dirname, 'titles_db')); // titles service -function TitleService() {} -TitleService.prototype = { +module.exports = { getTitles: batch(function(titleIds) { return titlesDB.allDocs({ keys: titleIds.map(function(x) { return x.toString(); }), @@ -20,7 +19,7 @@ TitleService.prototype = { titles[row.key] = {error: row.error}; } } else if (row.doc) { - titles[row.key] = row; + titles[row.key] = row; } else { titles[row.key] = {doc: null}; } @@ -29,5 +28,3 @@ TitleService.prototype = { }); }) }; - -module.exports = new TitleService();