aboutsummaryrefslogtreecommitdiff
path: root/hooks/expandAuthor.ts
diff options
context:
space:
mode:
Diffstat (limited to 'hooks/expandAuthor.ts')
-rw-r--r--hooks/expandAuthor.ts21
1 files changed, 17 insertions, 4 deletions
diff --git a/hooks/expandAuthor.ts b/hooks/expandAuthor.ts
index 3b3e3df..5993839 100644
--- a/hooks/expandAuthor.ts
+++ b/hooks/expandAuthor.ts
@@ -6,12 +6,25 @@ import { Poll, PollSchema } from '../models/polls/poll.schema';
import { User } from '../models/users/user.schema';
import UserModel from '../models/users/user.model';
-const expandAuthor = async (poll: PollSchema): Promise<Poll | null> => {
+const convertPoll = async (poll: PollSchema): Promise<Poll | null> => {
return UserModel.findById(poll.authorId)
.lean<User>()
.exec()
.then((author: User | null): Poll | null => {
- return author && _.merge(_.omit(poll, 'authorId'), { author });
+ return author && {
+ _id: poll._id,
+ author,
+ contents: {
+ left: {
+ url: poll.contents.left.url,
+ votes: poll.contents.left.votes.length
+ },
+ right: {
+ url: poll.contents.right.url,
+ votes: poll.contents.right.votes.length
+ }
+ }
+ };
})
.catch(err => {
console.error(err);
@@ -20,12 +33,12 @@ const expandAuthor = async (poll: PollSchema): Promise<Poll | null> => {
};
export const expandAuthorHook = async (context: HookContext): Promise<HookContext> => {
- context.result = await expandAuthor(context.result);
+ context.result = await convertPoll(context.result);
return context;
};
export const expandAuthorManyHook = async (context: HookContext): Promise<HookContext> => {
- const polls = await bluebird.map(context.result, (poll: PollSchema) => expandAuthor(poll));
+ const polls = await bluebird.map(context.result, (poll: PollSchema) => convertPoll(poll));
context.result = _.compact(polls);
return context;
};