package Ġcom . em og oth . android . phone . m imi . db Ċ Ċ import Ġcom . em og oth . android . phone . m imi . db . M imi Database . Companion . getInstance Ċ import Ġcom . em og oth . android . phone . m imi . db . models . Post Ċ import Ġcom . m im ire ader . chan lib . models . Chan Post Ċ import Ġcom . m im ire ader . chan lib . models . Chan Thread Ċ import Ġio . reactivex . Flow able Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . functions . Function Ċ Ċ object ĠPost Table Connection Ġ{ ĊĠĠĠ Ġval ĠLOG _ TAG Ġ= ĠPost Table Connection :: class . java . simple Name ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġfetch Thread ( thread Id : ĠLong ): ĠSingle < List < Post >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetInstance ()?. posts ()?. get Thread ( thread Id )?. first Or Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠSingle . just ( emptyList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġwatch Thread ( thread Id : ĠLong ): ĠFlow able < List < Post >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetInstance ()?. posts ()?. get Thread ( thread Id ) Ġ?: ĠFlow able . just ( emptyList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmap Db Posts To Chan Thread ( board Name : ĠString , Ġthread Id : ĠLong ): ĠFunction < List < Post >, ĠCh an Thread > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFunction Ġ{ ĠPosts : ĠList < Post > Ġ-> Ġconvert Db Posts To Chan Thread ( board Name , Ġthread Id , ĠPosts ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconvert Db Posts To Chan Thread ( board Name : ĠString , Ġthread Id : ĠLong , Ġposts : ĠList < Post >): ĠCh an Thread Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( posts . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCh an Thread . empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġp : ĠArrayList < Chan Post > Ġ= ĠArrayList ( posts . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( db Post Ġin Ġposts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp . add ( db Post . to Post ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠCh an Thread ( board Name , Ġthread Id , Ġp ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġput Thread ( thread : ĠCh an Thread ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠgetInstance ()?. posts ()?. delete Thread ( thread . thread Id ) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ ĠgetInstance ()?. posts ()?. insert ( convertTo Posts ( thread )) Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠconvertTo Posts ( thread : ĠCh an Thread ?): ĠList < Post > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( thread Ġ== Ġnull Ġ|| Ġthread . posts Ġ== Ġnull Ġ|| Ġthread . posts . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġposts : ĠMutable List < Post > Ġ= ĠArrayList ( thread . posts . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġthread . posts . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposts . add ( Post ( thread . board Name , Ġthread . thread Id , Ġthread . posts [ i ])) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġposts ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove Threads ( threads : ĠList < Long >): ĠSingle < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetInstance ()?. posts ()?. delete Threads ( threads ) Ġ?: ĠSingle . just ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove Thread ( thread : ĠLong ): ĠSingle < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetInstance ()?. posts ()?. delete Thread ( thread ) Ġ?: ĠSingle . just ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġfetch Thread Ids (): ĠSingle < List < Long >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetInstance ()?. posts ()?. getFirst Posts ()?. first Or Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . flatMap Ġ{ Ġposts : ĠList < Post > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( posts . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ flatMap ĠSingle . just ( emptyList < Long >()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues : ĠArrayList < Long > Ġ= ĠArrayList ( posts . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( p Ġin Ġposts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . add ( p . to Post (). no ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( values ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: ĠSingle . just ( emptyList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove All Threads (): ĠSingle < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . defer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetInstance ()?. posts ()?. clear () Ġ?: ĠSingle . just ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }