package Ġdev . program ad orth i . nor ris . domain . use case Ċ Ċ import Ġdev . program ad orth i . nor ris . domain . Fact s Business Ċ import Ġdev . program ad orth i . nor ris . domain . model . Category Ċ import Ġdev . program ad orth i . nor ris . domain . model . Fact Ċ import Ġdev . program ad orth i . nor ris . domain . model . Last Search Ċ import Ġdev . program ad orth i . nor ris . domain . repository . Fact s Repository Ċ import Ġdev . program ad orth i . shared . domain . Result Ċ Ċ internal Ġclass ĠF acts UseCase Impl ( ĊĠĠĠ Ġprivate Ġval Ġfacts Repository : ĠF acts Repository Ċ ) Ġ: ĠF acts UseCase Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġcategories ( ĊĠĠĠĠĠĠĠ Ġlimit : ĠInt , ĊĠĠĠĠĠĠĠ Ġshuffle : ĠBoolean ĊĠĠĠ Ġ): ĠResult < List < Category >> Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġlimit Ġ<= ĠMIN _ OFFSET Ġ-> ĠResult . success ( emptyList ()) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfacts Repository . fetch Categories ( limit , Ġshuffle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġlast Se ar ches (): ĠResult < List < Last Search >> Ġ= ĊĠĠĠĠĠĠĠ Ġfacts Repository . getLast Se ar ches () ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsearch ( text : ĠString ): ĠResult < List < Fact >> Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext . isBlank () Ġ-> ĠResult . business ( Fact s Business . Empty Search ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfacts Repository . do Search ( text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMIN _ OFFSET Ġ= Ġ 0 ĊĠĠĠ Ġ} Ċ } Ċ