package Ġcom . rar ible . protocol . nft . core . service . ownership Ċ Ċ import Ġcom . rar ible . core . common . or Null Ċ import Ġcom . rar ible . core . common . to Optional Ċ import Ġcom . rar ible . ethereum . domain . Eth UInt 2 5 6 Ċ import Ġcom . rar ible . protocol . nft . core . model . Ownership Ċ import Ġcom . rar ible . protocol . nft . core . model . Ownership Id Ċ import Ġcom . rar ible . protocol . nft . core . model . Ownership Save Result Ċ import Ġcom . rar ible . protocol . nft . core . repository . ownership . Ownership Repository Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . slf 4 j . Marker Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġreactor . core . publisher . Mono Ċ import Ġscale ther . domain . Address Ċ Ċ @ Service Ċ class ĠOwn ership Service ( ĊĠĠĠ Ġprivate Ġval Ġownership Repository : ĠOwn ership Repository Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġget ( id : ĠOwn ership Id ): ĠMono < Ownership > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġownership Repository . findById ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ( token : ĠAddress , Ġtoken Id : ĠE th UInt 2 5 6 , Ġowner : ĠAddress ): ĠMono < Ownership > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget ( Ownership Id ( token , Ġtoken Id , Ġowner )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave ( marker : ĠMarker , Ġownership : ĠOwn ership ): ĠMono < Ownership Save Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġownership Repository . findById ( ownership . id ). to Optional () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġopt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfound Ġ= Ġopt . or Null () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Ġ== Ġnull Ġ|| Ġfound Ġ!= Ġownership Ġ-> Ġsave Internal ( marker , Ġownership ). map Ġ{ ĠOwn ership Save Result ( it , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠMono . just ( Ownership Save Result ( ownership , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete ( marker : ĠMarker , Ġownership : ĠOwn ership ): ĠMono < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġownership . id ĊĠĠĠĠĠĠĠ Ġval Ġdelete Ġ= ĠMono .` when `( ownership Repository . delete ById ( id )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġownership Repository . findById ( id ). to Optional () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġopt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( opt . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info ( marker , Ġ" Deleting ĠOwn ership Ġ${ ownership . id }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMono . empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Internal ( marker : ĠMarker , Ġownership : ĠOwn ership ): ĠMono < Ownership > Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info ( marker , Ġ" Saving ĠOwn ership Ġ${ ownership . id }") ĊĠĠĠĠĠĠĠ Ġreturn Ġownership Repository . save ( ownership ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogger : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Ownership Service :: class . java ) ĊĠĠĠ Ġ} Ċ }