diff options
author | eug-vs <eug-vs@keemail.me> | 2020-06-27 00:18:32 +0300 |
---|---|---|
committer | eug-vs <eug-vs@keemail.me> | 2020-06-27 00:18:32 +0300 |
commit | 9a488369a481d92fed348df3de71bf612c4183d5 (patch) | |
tree | 18ad5d965f5a030118b2acdaead8459c3320bca3 | |
parent | 24119e59528c4425ae255c7381fdba5cfd5a7071 (diff) | |
download | which-api-9a488369a481d92fed348df3de71bf612c4183d5.tar.gz |
feat: create feed service
-rw-r--r-- | services/feed/feed.class.ts | 27 | ||||
-rw-r--r-- | services/feed/feed.service.ts | 7 | ||||
-rw-r--r-- | services/index.ts | 2 |
3 files changed, 36 insertions, 0 deletions
diff --git a/services/feed/feed.class.ts b/services/feed/feed.class.ts new file mode 100644 index 0000000..8c7cd0b --- /dev/null +++ b/services/feed/feed.class.ts @@ -0,0 +1,27 @@ +import _ from 'lodash'; +import { Application } from '@feathersjs/express'; +import { Params } from '@feathersjs/feathers'; +import { Poll } from 'which-types'; + +import { PollSchema } from '../../models/polls/poll.schema'; +import PollModel from '../../models/polls/poll.model'; + + +export default class Feed { + app!: Application; + + async find(params: Params): Promise<Poll[]> { + return this.app.service('polls') + .find(params) + .then( // Move new verified polls on top + (polls: Poll[]) => _.sortBy(polls, poll => poll.author.verified && !poll.userChoice) + ).then( // But all seen posts go down + (polls: Poll[]) => _.sortBy(polls, poll => !!poll.userChoice) + ); + } + + setup (app: Application) { + this.app = app; + } +} + diff --git a/services/feed/feed.service.ts b/services/feed/feed.service.ts new file mode 100644 index 0000000..f641425 --- /dev/null +++ b/services/feed/feed.service.ts @@ -0,0 +1,7 @@ +import { Application } from '@feathersjs/express'; +import Feed from './feed.class'; + +export default (app: Application): void => { + app.use('/feed', new Feed()); +}; + diff --git a/services/index.ts b/services/index.ts index bdce04f..1763a17 100644 --- a/services/index.ts +++ b/services/index.ts @@ -4,6 +4,7 @@ import Polls from './polls/polls.service'; import Profiles from './profiles/profiles.service'; import Votes from './votes/votes.service'; import Auth from './auth/auth.service'; +import Feed from './feed/feed.service'; import tryAuthenticate from '../hooks/tryAuthenticate'; import logging from '../hooks/logging'; @@ -15,6 +16,7 @@ export default (app: Application): void => { app.configure(Polls); app.configure(Profiles); app.configure(Votes); + app.configure(Feed); app.hooks({ before: { |