package Ġcom . j ose alf ons om ora . jet pack github trend s . domain . use case Ċ Ċ import Ġcom . j ose alf ons om ora . jet pack github trend s . domain . model . Github Repo Ċ import Ġcom . j ose alf ons om ora . jet pack github trend s . domain . repository . Github Repos Repository Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠGet Github Repo UseCase Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠGithub Repos Repository Ċ ) Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġexecute ( repo Id : ĠInt ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( val Ġresult Ġ= Ġrepository . get Github Repo ( repo Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGithub Repos Repository . Result . Success < *> Ġ-> ĠResult . Success ( result . data Ġas ĠGithub Repo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠGithub Repos Repository . Result . Error < *> Ġ-> ĠResult . Error ( result . throwable Ġas ĠThrowable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠSuccess ( val Ġdata : ĠGithub Repo ) Ġ: ĠResult () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠError ( val Ġthrowable : ĠThrowable ) Ġ: ĠResult () ĊĠĠĠ Ġ} Ċ } Ċ