diff options
Diffstat (limited to 'services')
| -rw-r--r-- | services/index.ts | 2 | ||||
| -rw-r--r-- | services/polls/polls.hooks.ts | 40 | ||||
| -rw-r--r-- | services/profiles/profiles.class.ts | 9 | ||||
| -rw-r--r-- | services/profiles/profiles.hooks.ts | 10 | ||||
| -rw-r--r-- | services/profiles/profiles.service.ts | 10 | 
5 files changed, 37 insertions, 34 deletions
| diff --git a/services/index.ts b/services/index.ts index 441f9ad..d946e9d 100644 --- a/services/index.ts +++ b/services/index.ts @@ -1,9 +1,11 @@  import { Application } from '@feathersjs/express';  import Users from './users/users.service';  import Polls from './polls/polls.service'; +import Profiles from './profiles/profiles.service';  export default (app: Application): void => {    app.configure(Users);    app.configure(Polls); +  app.configure(Profiles);  }; diff --git a/services/polls/polls.hooks.ts b/services/polls/polls.hooks.ts index fc5fa45..0637320 100644 --- a/services/polls/polls.hooks.ts +++ b/services/polls/polls.hooks.ts @@ -1,40 +1,12 @@ -import { HookContext } from '@feathersjs/feathers'; -import bluebird from 'bluebird'; -import _ from 'lodash'; - -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> => { -  return UserModel.findById(poll.authorId) -    .lean<User>() -    .exec() -    .then((author: User | null): Poll | null => { -      return author && _.merge(_.omit(poll, 'authorId'), { author }); -    }) -    .catch(err => { -      console.error(err); -      return err; -    }); -}; - -const expandAuthorHook = async (context: HookContext): Promise<HookContext> => { -  context.result = await expandAuthor(context.result); -  return context; -}; - -const expandAuthorManyHook = async (context: HookContext): Promise<HookContext> => { -  const polls = await bluebird.map(context.result, (poll: any) => expandAuthor(poll)); -  context.result = _.compact(polls); -  return context; -}; - +import { +  expandAuthorHook, +  expandAuthorManyHook +} from '../../hooks/expandAuthor';  export default {    after: {      get: [expandAuthorHook],      find: [expandAuthorManyHook]    } -} +}; + diff --git a/services/profiles/profiles.class.ts b/services/profiles/profiles.class.ts new file mode 100644 index 0000000..8954f74 --- /dev/null +++ b/services/profiles/profiles.class.ts @@ -0,0 +1,9 @@ +import { Poll, PollSchema } from "../../models/polls/poll.schema"; +import PollModel from '../../models/polls/poll.model'; + +export default class Profiles { +  async get(id: string, params: any): Promise<PollSchema[]> { +    return PollModel.find({ authorId: id }).lean<Poll>(); +  } +}; + diff --git a/services/profiles/profiles.hooks.ts b/services/profiles/profiles.hooks.ts new file mode 100644 index 0000000..b022aff --- /dev/null +++ b/services/profiles/profiles.hooks.ts @@ -0,0 +1,10 @@ +import { +  expandAuthorManyHook, +} from '../../hooks/expandAuthor'; + +export default { +  after: { +    get: [expandAuthorManyHook], +  } +}; + diff --git a/services/profiles/profiles.service.ts b/services/profiles/profiles.service.ts new file mode 100644 index 0000000..3422352 --- /dev/null +++ b/services/profiles/profiles.service.ts @@ -0,0 +1,10 @@ +import { Application } from "@feathersjs/express"; +import Profiles from './profiles.class'; + +import hooks from './profiles.hooks'; + +export default (app: Application): void => { +  app.use('/profiles', new Profiles()); +  app.service('profiles').hooks(hooks); +}; + | 
