From 676c722a994a214c182bcf26b80eab09ebf9f61e Mon Sep 17 00:00:00 2001 From: eug-vs Date: Mon, 22 Jun 2020 21:29:17 +0300 Subject: refactor: unite convertPoll hooks --- hooks/convertPoll.ts | 59 ++++++++++++++++++++++++---------------------------- 1 file changed, 27 insertions(+), 32 deletions(-) (limited to 'hooks') 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 => { - return UserModel.findById(poll.authorId) - .lean() - .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 => { + const { app, result } = context; + + const convert = async (poll: PollSchema): Promise => { + 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 => { - context.result = await convertPoll(context.result); - return context; -}; + ); + }); + }; -export const convertPollManyHook = async (context: HookContext): Promise => { - 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; }; -- cgit v1.2.3