blob: aacf3de363fb5d136ab52692b2fe275100708c4d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import { HookContext } from '@feathersjs/feathers';
import bluebird from 'bluebird';
import _ from 'lodash';
import { Poll, User } from 'which-types';
import { PollSchema } from '../models/polls/poll.schema';
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
}
}
}
);
});
};
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;
};
|