summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/notes/polls/recommendation.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/api/endpoints/notes/polls/recommendation.ts')
-rw-r--r--src/server/api/endpoints/notes/polls/recommendation.ts77
1 files changed, 0 insertions, 77 deletions
diff --git a/src/server/api/endpoints/notes/polls/recommendation.ts b/src/server/api/endpoints/notes/polls/recommendation.ts
deleted file mode 100644
index 0763f0c8fd..0000000000
--- a/src/server/api/endpoints/notes/polls/recommendation.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import $ from 'cafy';
-import define from '../../../define';
-import { Polls, Mutings, Notes, PollVotes } from '@/models/index';
-import { Brackets, In } from 'typeorm';
-
-export const meta = {
- tags: ['notes'],
-
- requireCredential: true as const,
-
- params: {
- limit: {
- validator: $.optional.num.range(1, 100),
- default: 10
- },
-
- offset: {
- validator: $.optional.num.min(0),
- default: 0
- }
- },
-
- res: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'Note'
- }
- }
-};
-
-export default define(meta, async (ps, user) => {
- const query = Polls.createQueryBuilder('poll')
- .where('poll.userHost IS NULL')
- .andWhere(`poll.userId != :meId`, { meId: user.id })
- .andWhere(`poll.noteVisibility = 'public'`)
- .andWhere(new Brackets(qb => { qb
- .where('poll.expiresAt IS NULL')
- .orWhere('poll.expiresAt > :now', { now: new Date() });
- }));
-
- //#region exclude arleady voted polls
- const votedQuery = PollVotes.createQueryBuilder('vote')
- .select('vote.noteId')
- .where('vote.userId = :meId', { meId: user.id });
-
- query
- .andWhere(`poll.noteId NOT IN (${ votedQuery.getQuery() })`);
-
- query.setParameters(votedQuery.getParameters());
- //#endregion
-
- //#region mute
- const mutingQuery = Mutings.createQueryBuilder('muting')
- .select('muting.muteeId')
- .where('muting.muterId = :muterId', { muterId: user.id });
-
- query
- .andWhere(`poll.userId NOT IN (${ mutingQuery.getQuery() })`);
-
- query.setParameters(mutingQuery.getParameters());
- //#endregion
-
- const polls = await query.take(ps.limit!).skip(ps.offset).getMany();
-
- if (polls.length === 0) return [];
-
- const notes = await Notes.find({
- id: In(polls.map(poll => poll.noteId))
- });
-
- return await Notes.packMany(notes, user, {
- detail: true
- });
-});