Const, service, and model updates

- Updated enum values to be uppercase
- Updated services to expose service models
- Updated models to only export the mongoose model
- Moved all mongoose static methods over to new services
- Updated tests to refelct new setup

BREAKING

- Status that were uppercased (caps) have caused issues with the
  admin pages
This commit is contained in:
Wyatt Johnson
2017-01-24 12:10:32 -07:00
parent 0994023864
commit a7e9c0c776
54 changed files with 1831 additions and 2499 deletions
+3 -2
View File
@@ -2,7 +2,7 @@ const DataLoader = require('dataloader');
const util = require('./util');
const Action = require('../../models/action');
const ActionsService = require('../../services/actions');
/**
* Looks up actions based on the requested id's all bounded by the user.
@@ -11,7 +11,8 @@ const Action = require('../../models/action');
* @return {Promise} resolves to the promises of the requested actions
*/
const genActionSummariessByItemID = ({user = {}}, item_ids) => {
return Action.getActionSummaries(item_ids, user.id)
return ActionsService
.getActionSummaries(item_ids, user.id)
.then(util.arrayJoinBy(item_ids, 'item_id'));
};
+5 -4
View File
@@ -5,14 +5,15 @@ const errors = require('../../errors');
const scraper = require('../../services/scraper');
const util = require('./util');
const Asset = require('../../models/asset');
const AssetModel = require('../../models/asset');
const AssetService = require('../../models/asset');
/**
* Retrieves assets by an array of ids.
* @param {Object} context the context of the request
* @param {Array} ids array of ids to lookup
*/
const genAssetsByID = (context, ids) => Asset.find({
const genAssetsByID = (context, ids) => AssetModel.find({
id: {
$in: ids
}
@@ -32,7 +33,7 @@ const findOrCreateAssetByURL = (context, asset_url) => {
return Promise.reject(errors.ErrInvalidAssetURL);
}
return Asset.findOrCreateByUrl(asset_url)
return AssetService.findOrCreateByUrl(asset_url)
.then((asset) => {
// If the asset wasn't scraped before, scrape it! Otherwise just return
@@ -58,6 +59,6 @@ module.exports = (context) => ({
getByURL: (url) => findOrCreateAssetByURL(context, url),
getByID: new DataLoader((ids) => genAssetsByID(context, ids)),
getAll: new util.SingletonResolver(() => Asset.find({}))
getAll: new util.SingletonResolver(() => AssetModel.find({}))
}
});
+9 -8
View File
@@ -2,14 +2,15 @@ const DataLoader = require('dataloader');
const util = require('./util');
const Action = require('../../models/action');
const Comment = require('../../models/comment');
const ActionModel = require('../../models/action');
const CommentModel = require('../../models/comment');
const CommentsService = require('../../services/comments');
/**
* Retrieves comments by an array of asset id's.
* @param {Array} ids array of ids to lookup
*/
const genCommentsByAssetID = (context, ids) => Comment.find({
const genCommentsByAssetID = (context, ids) => CommentModel.find({
asset_id: {
$in: ids
},
@@ -23,7 +24,7 @@ const genCommentsByAssetID = (context, ids) => Comment.find({
* Retrieves comments by an array of parent ids.
* @param {Array} ids array of ids to lookup
*/
const genCommentsByParentID = (context, ids) => Comment.find({
const genCommentsByParentID = (context, ids) => CommentModel.find({
parent_id: {
$in: ids
},
@@ -39,7 +40,7 @@ const getCommentsByStatusAndAssetID = (context, {status = null, asset_id = null}
status = status.toLowerCase();
}
return Comment.moderationQueue(status, asset_id);
return CommentsService.moderationQueue(status, asset_id);
};
const getCommentsByActionTypeAndAssetID = (context, {action_type, asset_id = null}) => {
@@ -49,13 +50,13 @@ const getCommentsByActionTypeAndAssetID = (context, {action_type, asset_id = nul
action_type = action_type.toLowerCase();
}
return Action.find({
return ActionModel.find({
action_type,
// TODO: remove when we move the enum over to the uppercase.
item_type: 'comments'
}).then((actions) => {
let comments = Comment.find({
let comments = CommentModel.find({
id: {
$in: actions.map((action) => action.item_id)
}
@@ -69,7 +70,7 @@ const getCommentsByActionTypeAndAssetID = (context, {action_type, asset_id = nul
});
};
const genCommentsByAuthorID = (context, authorIDs) => Comment.find({
const genCommentsByAuthorID = (context, authorIDs) => CommentModel.find({
author_id: {
$in: authorIDs
}
+2 -2
View File
@@ -1,4 +1,4 @@
const Settings = require('../../models/setting');
const SettingsService = require('../../services/settings');
const util = require('./util');
@@ -8,5 +8,5 @@ const util = require('./util');
* @return {Object} object of loaders
*/
module.exports = () => ({
Settings: new util.SingletonResolver(() => Settings.retrieve())
Settings: new util.SingletonResolver(() => SettingsService.retrieve())
});
+2 -2
View File
@@ -1,8 +1,8 @@
const DataLoader = require('dataloader');
const User = require('../../models/user');
const UserService = require('../../models/user');
const genUserByIDs = (context, ids) => User.findByIdArray(ids);
const genUserByIDs = (context, ids) => UserService.findByIdArray(ids);
/**
* Creates a set of loaders based on a GraphQL context.
+4 -3
View File
@@ -1,4 +1,5 @@
const Action = require('../../models/action');
const ActionModel = require('../../models/action');
const ActionsService = require('../../services/actions');
/**
* Creates an action on a item.
@@ -9,7 +10,7 @@ const Action = require('../../models/action');
* @return {Promise} resolves to the action created
*/
const createAction = ({user = {}}, {item_id, item_type, action_type, metadata = {}}) => {
return Action.insertUserAction({
return ActionsService.insertUserAction({
item_id,
item_type,
user_id: user.id,
@@ -25,7 +26,7 @@ const createAction = ({user = {}}, {item_id, item_type, action_type, metadata =
* @return {Promise} resolves when the action is deleted
*/
const deleteAction = ({user}, {id}) => {
return Action.remove({
return ActionModel.remove({
id,
user_id: user.id
});
+6 -5
View File
@@ -1,6 +1,7 @@
const errors = require('../../errors');
const Asset = require('../../models/asset');
const Comment = require('../../models/comment');
const AssetsService = require('../../services/assets');
const CommentsService = require('../../services/comments');
const Wordlist = require('../../services/wordlist');
@@ -14,7 +15,7 @@ const Wordlist = require('../../services/wordlist');
* @return {Promise} resolves to the created comment
*/
const createComment = ({user}, {body, asset_id, parent_id = null}, status = null) => {
return Comment.publicCreate({
return CommentsService.publicCreate({
body,
asset_id,
parent_id,
@@ -58,8 +59,8 @@ const resolveNewCommentStatus = (context, {asset_id, body}, wordlist = {}) => {
if (wordlist.banned) {
status = Promise.resolve('rejected');
} else {
status = Asset
.rectifySettings(Asset.findById(asset_id).then((asset) => {
status = AssetsService
.rectifySettings(AssetsService.findById(asset_id).then((asset) => {
if (!asset) {
return Promise.reject(errors.ErrNotFound);
}
+2 -2
View File
@@ -1,4 +1,4 @@
const User = require('../../models/user');
const UsersService = require('../../services/users');
/**
* Updates a users settings.
@@ -7,7 +7,7 @@ const User = require('../../models/user');
* @return {Promise}
*/
const updateUserSettings = ({user}, {bio}) => {
return User.updateSettings(user.id, {bio});
return UsersService.updateSettings(user.id, {bio});
};
module.exports = (context) => {