package Ġjp . ky u uki . watch ing . spring . service Ċ Ċ import Ġjav assist . NotFoundException Ċ import Ġjp . ky u uki . watch ing . spring . model . Event Ċ import Ġjp . ky u uki . watch ing . spring . model . Follow Ċ import Ġjp . ky u uki . watch ing . spring . model . Follow Request Ċ import Ġjp . ky u uki . watch ing . spring . model . User Ċ import Ġjp . ky u uki . watch ing . spring . repository . Follow Repository Ċ import Ġjp . ky u uki . watch ing . spring . repository . Follow Request Repository Ċ import Ġjp . ky u uki . watch ing . spring . repository . UserRepository Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . data . repository . findById OrNull Ċ import Ġorg . springframework . stereotype . Service Ċ Ċ @ Service Ċ class ĠFollow Request Service () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Follow Request Service :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġfollow Request Repository : ĠFollow Request Repository ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġfollow Repository : ĠFollow Repository ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġlateinit Ġvar Ġuser Repository : ĠUser Repository ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠãĥķãĤ © ãĥŃ ãĥ¼ãĥ ª ãĤ¯ ãĤ¨ ãĤ¹ãĥĪ åıĸå¾Ĺ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget ( user : ĠUser ): ĠList < Follow Request > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfollow Request Repository . findBy To UserId ( user . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠãĥķãĤ © ãĥŃ ãĥ¼ãĥ ª ãĤ¯ ãĤ¨ ãĤ¹ãĥĪ çĻ»éĮ² . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsave ( from User : ĠUser , Ġto UserId : ĠInt ): ĠFollow Request Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ èĩª åĪĨ èĩª èº« ãģ¸ãģ® ãĥª ãĤ¯ ãĤ¨ ãĤ¹ãĥĪ ĊĠĠĠĠĠĠĠ Ġif Ġ( from User . id Ġ== Ġto UserId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ ä¾ĭ å¤ĸ ãģ® ç¨® é¡ŀ ãĤĴ è¦ģ æ¤ľ è¨ İ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Cannot Ġfollow Ġrequest Ġto Ġmyself ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġto User Ġ= Ġuser Repository . findById OrNull ( to UserId ) ĊĠĠĠĠĠĠĠ Ġif Ġ( to User Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ ä¾ĭ å¤ĸ ãģ® ç¨® é¡ŀ ãĤĴ è¦ģ æ¤ľ è¨ İ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Cannot Ġfind Ġto User ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotFound Exception (" Cannot Ġfind Ġto User ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġãģ¨ ãĤĬ ãģĤ ãģĪ ãģļ ãĢģ åĲĮ ãģĺ ãĥķãĤ© ãĥŃ ãĥ¼ãĥ ª ãĤ¯ ãĤ¨ ãĤ¹ãĥĪ ãģ¯ ãģĿãģ® ãģ¾ ãģ¾ ãĤ¹ ãĥ« ãĥ¼ ĊĠĠĠĠĠĠĠ Ġval Ġexisted Requests Ġ= Ġfollow Request Repository . findBy From UserId And To UserId ( from User . id , Ġto UserId ) ĊĠĠĠĠĠĠĠ Ġif Ġ( exist ed Requests . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" exist ed Request Ġ= Ġ${ exist ed Requests [ 0 ]} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġexisted Requests [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( exist ed Requests . size Ġ> Ġ 1 ) Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Too Ġmany Ġsame Ġfollow Ġrequests ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Too Ġmany Ġsame Ġfollow Ġrequests ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfollow Request Ġ= ĠFollow Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom User Ġ= Ġfrom User , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto User Ġ= Ġto User ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfollow Request Repository . save ( follow Request ) ĊĊĠĠĠĠĠĠĠ Ġlogger . info ( follow Request . toString ()) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfollow Request ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠãĥķãĤ © ãĥŃ ãĥ¼ãĥ ª ãĤ¯ ãĤ¨ ãĤ¹ãĥĪ è¨± åı¯ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġaccept ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ ä»ĸ äºº ãģ® ãĥķãĤ© ãĥŃ ãĥ¼ãĥ ª ãĤ¯ ãĤ¨ ãĤ¹ãĥĪ ãĤĴ è¨± åı¯ ãģ§ãģį ãģªãģĦ ãĤĪãģĨãģ« ĊĊĠĠĠĠĠĠĠ Ġval Ġfollow Request Ġ= Ġfollow Request Repository . findById OrNull ( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( follow Request Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ ä¾ĭ å¤ĸ ãģ® ç¨® é¡ŀ ãĤĴ è¦ģ æ¤ľ è¨ İ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" Cannot Ġfind Ġfollow Request ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotFound Exception (" Cannot Ġfind Ġfollow Request ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ ãĥĪ ãĥ© ãĥ³ ãĤ¶ ãĤ¯ ãĤ·ãĥ§ãĥ³ ãģ« ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġfollow Repository . save ( Follow ( from User Ġ= Ġfollow Request . from User , Ġto User Ġ= Ġfollow Request . to User )) ĊĠĠĠĠĠĠĠ Ġfollow Request Repository . delete ById ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠãĥķãĤ © ãĥŃ ãĥ¼ãĥ ª ãĤ¯ ãĤ¨ ãĤ¹ãĥĪ æĭ Ĵ åĲ¦ . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdecl ine ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ ä»ĸ äºº ãģ® ãĥķãĤ© ãĥŃ ãĥ¼ãĥ ª ãĤ¯ ãĤ¨ ãĤ¹ãĥĪ ãĤĴ æĭ Ĵ åĲ¦ ãģ§ãģį ãģªãģĦ ãĤĪãģĨãģ« ĊĊĠĠĠĠĠĠĠ Ġ// Ġå°Ĩ æĿ¥çļĦ ãģ« æĭ Ĵ åĲ¦ ãģ® å± ¥ æŃ ´ ãģ¯ æ® ĭ ãģĹãģ¦ ãģĬ ãģį ãģŁ ãģĦ ĊĊĠĠĠĠĠĠĠ Ġfollow Request Repository . delete ById ( id ) ĊĠĠĠ Ġ} Ċ } Ċ