package Ġpw . for st . wire . backups . ios . database Ċ Ċ import Ġorg . jetbrains . ex posed . sql . Column Set Ċ import Ġorg . jetbrains . ex posed . sql . Join Type Ċ import Ġorg . jetbrains . ex posed . sql . Result Row Ċ import Ġorg . jetbrains . ex posed . sql . select Ċ import Ġpw . for st . wire . backups . android . database . converters . to Export Date From I os Ċ import Ġpw . for st . wire . backups . ios . database . config . I os Database Ċ import Ġpw . for st . wire . backups . ios . database . model . Generic Message Data Ċ import Ġpw . for st . wire . backups . ios . database . model . Messages Ċ import Ġpw . for st . wire . backups . ios . model . I os Message Dto Ċ Ċ internal Ġfun ĠI os Database . get Generic Messages (): ĠList < I os Message Dto > Ġ= ĊĠĠĠ Ġget Generic Messages ( build Mapping Cache ()) Ċ Ċ internal Ġfun ĠI os Database . get Generic Messages ( cache : ĠEntity Mapping Cache ) Ġ= ĊĠĠĠ Ġ( get Messages ( cache ) Ġ+ Ġget Assets ( cache )). sorted By Ġ{ Ġit . time Ġ} Ċ Ċ private Ġfun ĠI os Database . get Messages ( cache : ĠEntity Mapping Cache ) Ġ= ĊĠĠĠ Ġgeneric Message Data . join ( messages , ĠJoin Type . INNER , ĊĠĠĠĠĠĠĠ Ġon Column Ġ= Ġgeneric Message Data . message Id , ĊĠĠĠĠĠĠĠ Ġother Column Ġ= Ġmessages . id , ĊĠĠĠĠĠĠĠ Ġadditional Constraint Ġ= Ġ{ Ġgeneric Message Data . message Id . isNotNull () Ġ} ĊĠĠĠ Ġ). messages Slice () ĊĠĠĠĠĠĠĠ Ġ. select Ġ{ Ġmessages . conversation Id . isNotNull () Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġmap Generic Message ( it , Ġcache ) Ġ} Ċ Ċ private Ġfun ĠI os Database . get Assets ( cache : ĠEntity Mapping Cache ) Ġ= ĊĠĠĠ Ġgeneric Message Data . join ( messages , ĠJoin Type . INNER , ĊĠĠĠĠĠĠĠ Ġon Column Ġ= Ġgeneric Message Data . asset Id , ĊĠĠĠĠĠĠĠ Ġother Column Ġ= Ġmessages . id , ĊĠĠĠĠĠĠĠ Ġadditional Constraint Ġ= Ġ{ Ġgeneric Message Data . asset Id . isNotNull () Ġ} ĊĠĠĠ Ġ). messages Slice () ĊĠĠĠĠĠĠĠ Ġ. select Ġ{ Ġmessages . conversation Id . isNotNull () Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġmap Generic Message ( it , Ġcache ) Ġ} Ċ Ċ private Ġfun ĠI os Database . map Generic Message ( it : ĠResult Row , Ġcache : ĠEntity Mapping Cache ) Ġ= ĊĠĠĠ ĠI os Message Dto ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġit [ messages . id ], ĊĠĠĠĠĠĠĠ Ġ// Ġthese Ġrequires Ġshould Ġbe Ġalways Ġok , Ġif Ġthis Ġthrows Ġexception , Ġthe Ġdatabase Ġis Ġinconsistent ĊĠĠĠĠĠĠĠ Ġsender UUID Ġ= Ġcache . get Users Uuid ( require NotNull ( it [ messages . sender Id ]) Ġ{ Ġ" Sender Ġwas Ġnull !" Ġ}), ĊĠĠĠĠĠĠĠ Ġconversation UUID Ġ= Ġcache . get Conversation Uuid ( require NotNull ( it [ messages . conversation Id ]) Ġ{ Ġ" Conversation Ġwas Ġnull !" Ġ}), ĊĠĠĠĠĠĠĠ Ġtime Ġ= Ġit [ messages . timestamp ]. to Export Date From I os (), ĊĠĠĠĠĠĠĠ Ġprotobuf Ġ= Ġit [ generic Message Data . proto ]. bytes , ĊĠĠĠĠĠĠĠ Ġwas Edited Ġ= Ġit [ messages . updated Timestamp ] Ġ!= Ġnull , ĊĠĠĠĠĠĠĠ Ġre actions Ġ= Ġcache . get Re actions For Message Pk ( it [ messages . id ]) ĊĠĠĠ Ġ) Ċ Ċ private Ġfun ĠColumn Set . messages Slice () Ġ= ĊĠĠĠ Ġslice ( ĊĠĠĠĠĠĠĠ ĠMessages . id , ĠMessages . sender Id , ĠMessages . conversation Id , ĠMessages . timestamp , ĊĠĠĠĠĠĠĠ ĠGeneric Message Data . proto , ĠMessages . updated Timestamp ĊĠĠĠ Ġ) Ċ