aboutsummaryrefslogtreecommitdiff
path: root/services/feed
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2020-06-27 00:18:32 +0300
committereug-vs <eug-vs@keemail.me>2020-06-27 00:18:32 +0300
commit9a488369a481d92fed348df3de71bf612c4183d5 (patch)
tree18ad5d965f5a030118b2acdaead8459c3320bca3 /services/feed
parent24119e59528c4425ae255c7381fdba5cfd5a7071 (diff)
downloadwhich-api-9a488369a481d92fed348df3de71bf612c4183d5.tar.gz
feat: create feed service
Diffstat (limited to 'services/feed')
-rw-r--r--services/feed/feed.class.ts27
-rw-r--r--services/feed/feed.service.ts7
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());
+};
+