From 880a907679ed3664ca148eef53e50ef86026763b Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 24 May 2024 15:48:24 +0800 Subject: [PATCH] add public item stats --- packages/api/src/entity/public_item.ts | 5 ++++ packages/api/src/entity/public_item_stats.ts | 29 +++++++++++++++++-- .../api/src/jobs/update_just_read_feed.ts | 7 +++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/packages/api/src/entity/public_item.ts b/packages/api/src/entity/public_item.ts index 0bf5c7862..c1f68cc34 100644 --- a/packages/api/src/entity/public_item.ts +++ b/packages/api/src/entity/public_item.ts @@ -2,15 +2,20 @@ import { Column, CreateDateColumn, Entity, + OneToOne, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm' +import { PublicItemStats } from './public_item_stats' @Entity({ name: 'public_item' }) export class PublicItem { @PrimaryGeneratedColumn('uuid') id!: string + @OneToOne(() => PublicItemStats) + stats!: PublicItemStats + @Column('text') sourceName!: string diff --git a/packages/api/src/entity/public_item_stats.ts b/packages/api/src/entity/public_item_stats.ts index 3e6a776cd..ade4a5c25 100644 --- a/packages/api/src/entity/public_item_stats.ts +++ b/packages/api/src/entity/public_item_stats.ts @@ -1,6 +1,31 @@ -import { Entity } from 'typeorm' +import { + Column, + CreateDateColumn, + Entity, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm' @Entity({ name: 'public_item_stats' }) export class PublicItemStats { - + @PrimaryGeneratedColumn('uuid') + id!: string + + @Column('uuid') + publicItemId!: string + + @Column('integer') + saveCount!: number + + @Column('integer') + likeCount!: number + + @Column('integer') + broadcastCount!: number + + @CreateDateColumn() + createdAt!: Date + + @UpdateDateColumn() + updatedAt!: Date } diff --git a/packages/api/src/jobs/update_just_read_feed.ts b/packages/api/src/jobs/update_just_read_feed.ts index 430a365ea..2bbdec0a1 100644 --- a/packages/api/src/jobs/update_just_read_feed.ts +++ b/packages/api/src/jobs/update_just_read_feed.ts @@ -31,6 +31,10 @@ interface JustReadFeedItem { dir?: string wordCount?: number sourceIcon?: string + + saveCount?: number + likeCount?: number + broadcastCount?: number } interface JustReadFeedTopic { @@ -83,6 +87,9 @@ const publicItemToFeedItem = (item: PublicItem): JustReadFeedItem => ({ sourceName: item.sourceName, siteName: item.siteName, updatedAt: item.updatedAt, + saveCount: item.stats.saveCount, + likeCount: item.stats.likeCount, + broadcastCount: item.stats.broadcastCount, }) interface FeedItemScore {