@@ -5,13 +5,7 @@ import { DBError } from '../exception';
55export class PostRepository {
66 constructor ( private pool : Pool ) { }
77
8- async findPostsByUserId (
9- userId : number ,
10- cursor ?: string ,
11- sort ?: string ,
12- isAsc ?: boolean ,
13- limit : number = 15
14- ) {
8+ async findPostsByUserId ( userId : number , cursor ?: string , sort ?: string , isAsc ?: boolean , limit : number = 15 ) {
159 try {
1610 // 1) 정렬 컬럼 매핑
1711 let sortCol = 'p.released_at' ;
@@ -72,12 +66,12 @@ export class PostRepository {
7266 daily_like_count,
7367 date
7468 FROM posts_postdailystatistics
75- WHERE date::date = NOW()::date
69+ WHERE ( date AT TIME ZONE 'Asia/Seoul' AT TIME ZONE 'UTC') ::date = ( NOW() AT TIME ZONE 'UTC' )::date
7670 ) pds ON p.id = pds.post_id
7771 LEFT JOIN (
7872 SELECT post_id, daily_view_count, daily_like_count, date
7973 FROM posts_postdailystatistics
80- WHERE date::date = (NOW() - INTERVAL '1 day')::date
74+ WHERE ( date AT TIME ZONE 'Asia/Seoul' AT TIME ZONE 'UTC') ::date = (NOW() AT TIME ZONE 'UTC' - INTERVAL '1 day')::date
8175 ) yesterday_stats ON p.id = yesterday_stats.post_id
8276 WHERE p.user_id = $1
8377 AND (pds.post_id IS NOT NULL OR yesterday_stats.post_id IS NOT NULL)
@@ -133,7 +127,6 @@ export class PostRepository {
133127 }
134128
135129 async getYesterdayAndTodayViewLikeStats ( userId : number ) {
136-
137130 // pds.updated_at 은 FE 화면을 위해 억지로 9h 시간 더한 값임 주의
138131 try {
139132 const query = `
@@ -147,12 +140,12 @@ export class PostRepository {
147140 LEFT JOIN (
148141 SELECT post_id, daily_view_count, daily_like_count, updated_at
149142 FROM posts_postdailystatistics
150- WHERE date::date = NOW()::date
143+ WHERE ( date AT TIME ZONE 'Asia/Seoul' AT TIME ZONE 'UTC') ::date = ( NOW() AT TIME ZONE 'UTC' )::date
151144 ) pds ON p.id = pds.post_id
152145 LEFT JOIN (
153146 SELECT post_id, daily_view_count, daily_like_count
154147 FROM posts_postdailystatistics
155- WHERE date::date = (NOW() - INTERVAL '1 day')::date
148+ WHERE ( date AT TIME ZONE 'Asia/Seoul' AT TIME ZONE 'UTC') ::date = (NOW() AT TIME ZONE 'UTC' - INTERVAL '1 day')::date
156149 ) yesterday_stats ON p.id = yesterday_stats.post_id
157150 WHERE p.user_id = $1
158151 ` ;
@@ -165,4 +158,31 @@ export class PostRepository {
165158 throw new DBError ( '전체 post 통계 조회 중 문제가 발생했습니다.' ) ;
166159 }
167160 }
161+
162+ async findPostByPostId ( postId : number , start ?: string , end ?: string ) {
163+ try {
164+ let query = `
165+ SELECT
166+ (pds.date AT TIME ZONE 'Asia/Seoul') AT TIME ZONE 'UTC' AS date,
167+ pds.daily_view_count,
168+ pds.daily_like_count
169+ FROM posts_postdailystatistics pds
170+ WHERE pds.post_id = $1
171+ ` ;
172+
173+ const values : ( number | string ) [ ] = [ postId ] ;
174+
175+ if ( start && end ) {
176+ query += ` AND (pds.date AT TIME ZONE 'Asia/Seoul' AT TIME ZONE 'UTC')::date >= ($2 AT TIME ZONE 'Asia/Seoul' AT TIME ZONE 'UTC')::date
177+ AND (pds.date AT TIME ZONE 'Asia/Seoul' AT TIME ZONE 'UTC')::date <= ($3 AT TIME ZONE 'Asia/Seoul' AT TIME ZONE 'UTC')::date` ;
178+ values . push ( start , end ) ;
179+ }
180+
181+ const result = await this . pool . query ( query , values ) ;
182+ return result . rows ;
183+ } catch ( error ) {
184+ logger . error ( 'Post Repo findPostByPostId error : ' , error ) ;
185+ throw new DBError ( '단건 post 조회 중 문제가 발생했습니다.' ) ;
186+ }
187+ }
168188}
0 commit comments