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 /services/feed | |
parent | 24119e59528c4425ae255c7381fdba5cfd5a7071 (diff) | |
download | which-api-9a488369a481d92fed348df3de71bf612c4183d5.tar.gz |
feat: create feed service
Diffstat (limited to 'services/feed')
-rw-r--r-- | services/feed/feed.class.ts | 27 | ||||
-rw-r--r-- | services/feed/feed.service.ts | 7 |
2 files changed, 34 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()); +}; + |