aboutsummaryrefslogtreecommitdiff
path: root/hooks/convertPoll.ts
diff options
context:
space:
mode:
Diffstat (limited to 'hooks/convertPoll.ts')
-rw-r--r--hooks/convertPoll.ts59
1 files changed, 27 insertions, 32 deletions
diff --git a/hooks/convertPoll.ts b/hooks/convertPoll.ts
index 62ddea1..aacf3de 100644
--- a/hooks/convertPoll.ts
+++ b/hooks/convertPoll.ts
@@ -4,42 +4,37 @@ import _ from 'lodash';
import { Poll, User } from 'which-types';
import { PollSchema } from '../models/polls/poll.schema';
-import UserModel from '../models/users/user.model';
-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,
- contents: {
- left: {
- votes: poll.contents.left.votes.length
- },
- right: {
- votes: poll.contents.right.votes.length
+
+export default async (context: HookContext): Promise<HookContext> => {
+ const { app, result } = context;
+
+ const convert = async (poll: PollSchema): Promise<Poll | null> => {
+ return app.service('users').get(poll.authorId)
+ .then((author: User | null): Poll | null => {
+ return author && _.merge(
+ _.omit(poll, ['authorId']),
+ {
+ author,
+ contents: {
+ left: {
+ votes: poll.contents.left.votes.length
+ },
+ right: {
+ votes: poll.contents.right.votes.length
+ }
}
}
- }
- );
- })
- .catch(err => {
- console.error(err);
- return err;
- });
-};
-
-export const convertPollHook = async (context: HookContext): Promise<HookContext> => {
- context.result = await convertPoll(context.result);
- return context;
-};
+ );
+ });
+ };
-export const convertPollManyHook = async (context: HookContext): Promise<HookContext> => {
- const polls = await bluebird.map(context.result, (poll: PollSchema) => convertPoll(poll));
- context.result = _.compact(polls);
+ if (Array.isArray(result)) {
+ const polls = await bluebird.map(result, (poll: PollSchema) => convert(poll));
+ context.result = _.compact(polls);
+ } else {
+ context.result = await convert(result);
+ }
return context;
};