Improve tag history
This commit is contained in:
parent
d7316c5eeb
commit
c88e58344f
|
@ -20,14 +20,27 @@ const trendingTagsController: AppController = (c) => {
|
|||
limit,
|
||||
});
|
||||
|
||||
return c.json(tags.map(({ name }) => ({
|
||||
return c.json(tags.map(({ name, uses, accounts }) => ({
|
||||
name,
|
||||
url: Conf.local(`/tags/${name}`),
|
||||
history: trends.getTagHistory(name, lastWeek, now).map((history) => ({
|
||||
history: [
|
||||
{
|
||||
day: String(Math.floor(now.getTime() / 1000)),
|
||||
accounts: String(accounts),
|
||||
uses: String(uses),
|
||||
},
|
||||
...trends.getTagHistory({
|
||||
tag: name,
|
||||
since: lastWeek,
|
||||
until: now,
|
||||
limit: 6,
|
||||
offset: 1,
|
||||
}).map((history) => ({
|
||||
day: String(Math.floor(history.day.getTime() / 1000)),
|
||||
accounts: String(history.accounts),
|
||||
uses: String(history.uses),
|
||||
})),
|
||||
],
|
||||
})));
|
||||
};
|
||||
|
||||
|
|
|
@ -9,6 +9,14 @@ interface GetTrendingTagsOpts {
|
|||
threshold?: number;
|
||||
}
|
||||
|
||||
interface GetTagHistoryOpts {
|
||||
tag: string;
|
||||
since: Date;
|
||||
until: Date;
|
||||
limit?: number;
|
||||
offset?: number;
|
||||
}
|
||||
|
||||
class TrendsDB {
|
||||
#db: Sqlite;
|
||||
|
||||
|
@ -54,7 +62,7 @@ class TrendsDB {
|
|||
}));
|
||||
}
|
||||
|
||||
getTagHistory(tag: string, since: Date, until: Date, limit = 7) {
|
||||
getTagHistory({ tag, since, until, limit = 7, offset = 0 }: GetTagHistoryOpts) {
|
||||
return this.#db.query<string[]>(
|
||||
`
|
||||
SELECT inserted_at, COUNT(DISTINCT pubkey8), COUNT(*)
|
||||
|
@ -62,9 +70,10 @@ class TrendsDB {
|
|||
WHERE tag = ? AND inserted_at >= ? AND inserted_at < ?
|
||||
GROUP BY date(inserted_at)
|
||||
ORDER BY date(inserted_at) DESC
|
||||
LIMIT ?;
|
||||
LIMIT ?
|
||||
OFFSET ?;
|
||||
`,
|
||||
[tag, since, until, limit],
|
||||
[tag, since, until, limit, offset],
|
||||
).map((row) => ({
|
||||
day: new Date(row[0]),
|
||||
accounts: Number(row[1]),
|
||||
|
|
Loading…
Reference in New Issue