@@ -7,7 +7,7 @@ import { DBError } from '@/exception';
77export class UserRepository {
88 constructor ( private readonly pool : Pool ) { }
99
10- async findByUserId ( id : number ) : Promise < User > {
10+ async findByUserId ( id : number ) : Promise < User | null > {
1111 try {
1212 const user = await this . pool . query ( 'SELECT * FROM "users_user" WHERE id = $1' , [ id ] ) ;
1313 return user . rows [ 0 ] || null ;
@@ -17,7 +17,7 @@ export class UserRepository {
1717 }
1818 }
1919
20- async findByUserVelogUUID ( uuid : string ) : Promise < User > {
20+ async findByUserVelogUUID ( uuid : string ) : Promise < User | null > {
2121 try {
2222 const user = await this . pool . query ( 'SELECT * FROM "users_user" WHERE velog_uuid = $1' , [ uuid ] ) ;
2323 return user . rows [ 0 ] || null ;
@@ -27,6 +27,16 @@ export class UserRepository {
2727 }
2828 }
2929
30+ async findByUserEmail ( email : string ) : Promise < User | null > {
31+ try {
32+ const user = await this . pool . query ( 'SELECT * FROM "users_user" WHERE email = $1' , [ email ] ) ;
33+ return user . rows [ 0 ] || null ;
34+ } catch ( error ) {
35+ logger . error ( 'Email로 유저를 조회 중 오류 : ' , error ) ;
36+ throw new DBError ( '유저 조회 중 문제가 발생했습니다.' ) ;
37+ }
38+ }
39+
3040 async findSampleUser ( ) : Promise < User > {
3141 try {
3242 const query = `
@@ -152,4 +162,14 @@ export class UserRepository {
152162 throw new DBError ( 'QR 코드 사용 처리 중 문제가 발생했습니다.' ) ;
153163 }
154164 }
165+
166+ async unsubscribeNewsletter ( id : number ) : Promise < void > {
167+ try {
168+ const query = `UPDATE "users_user" SET newsletter_subscribed = false WHERE id = $1` ;
169+ await this . pool . query ( query , [ id ] ) ;
170+ } catch ( error ) {
171+ logger . error ( 'User Repo unsubscribeNewsletter Error : ' , error ) ;
172+ throw new DBError ( '뉴스레터 구독 해제 중 문제가 발생했습니다.' ) ;
173+ }
174+ }
155175}
0 commit comments