Skip to content
Snippets Groups Projects
Unverified Commit e0deaec6 authored by syuilo's avatar syuilo
Browse files

Implement new endpoint

parent 7343e6e2
No related branches found
No related tags found
No related merge requests found
import Note from '../../../../models/note';
import Meta from '../../../../models/meta';
export default () => new Promise(async (res, rej) => {
const meta = await Meta.findOne({});
const hidedTags = (meta.hidedTags || []).map(t => t.toLowerCase());
const span = 1000 * 60 * 60 * 24 * 7; // 1週間
//#region 1. 指定期間の内に投稿されたハッシュタグ(とユーザーのペア)を集計
const data = await Note.aggregate([{
$match: {
createdAt: {
$gt: new Date(Date.now() - span)
},
tagsLower: {
$exists: true,
$ne: []
}
}
}, {
$unwind: '$tagsLower'
}, {
$group: {
_id: { tag: '$tagsLower', userId: '$userId' }
}
}]) as Array<{
_id: {
tag: string;
userId: any;
}
}>;
//#endregion
if (data.length == 0) {
return res([]);
}
let tags: Array<{
name: string;
count: number;
}> = [];
// カウント
data.map(x => x._id).forEach(x => {
// ブラックリストに登録されているタグなら弾く
if (hidedTags.includes(x.tag)) return;
const i = tags.findIndex(tag => tag.name == x.tag);
if (i != -1) {
tags[i].count++;
} else {
tags.push({
name: x.tag,
count: 1
});
}
});
// タグを人気順に並べ替え
tags = tags.sort((a, b) => b.count - a.count);
res(tags);
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment