summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/notes/featured.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/api/endpoints/notes/featured.ts')
-rw-r--r--src/server/api/endpoints/notes/featured.ts46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/server/api/endpoints/notes/featured.ts b/src/server/api/endpoints/notes/featured.ts
new file mode 100644
index 0000000000..823137ac21
--- /dev/null
+++ b/src/server/api/endpoints/notes/featured.ts
@@ -0,0 +1,46 @@
+import $ from 'cafy';
+import Note from '../../../../models/note';
+import { packMany } from '../../../../models/note';
+import define from '../../define';
+
+export const meta = {
+ desc: {
+ 'ja-JP': 'Featuredな投稿を取得します。',
+ 'en-US': 'Get featured notes.'
+ },
+
+ requireCredential: false,
+
+ params: {
+ limit: {
+ validator: $.num.optional.range(1, 30),
+ default: 10,
+ desc: {
+ 'ja-JP': '最大数'
+ }
+ }
+ }
+};
+
+export default define(meta, (ps, user) => new Promise(async (res, rej) => {
+ const day = 1000 * 60 * 60 * 24;
+
+ const notes = await Note
+ .find({
+ createdAt: {
+ $gt: new Date(Date.now() - day)
+ },
+ deletedAt: null,
+ visibility: { $in: ['public', 'home'] }
+ }, {
+ limit: ps.limit,
+ sort: {
+ score: -1
+ },
+ hint: {
+ score: -1
+ }
+ });
+
+ res(await packMany(notes, user));
+}));