package Ġde . sch wer in . stop p Cor ona DE . model . db Ċ Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Database Ċ import Ġandroidx . room . Type Converters Ċ import Ġandroidx . room . migration . Migration Ċ import Ġandroidx . sqlite . db . Support SQLite Database Ċ import Ġde . sch wer in . stop p Cor ona DE . model . db . dao . Automatic Discovery Dao Ċ import Ġde . sch wer in . stop p Cor ona DE . model . db . dao . Configuration Dao Ċ import Ġde . sch wer in . stop p Cor ona DE . model . db . dao . In fection Message Dao Ċ import Ġde . sch wer in . stop p Cor ona DE . model . db . dao . Near by Record Dao Ċ import Ġde . sch wer in . stop p Cor ona DE . model . entities . configuration .* Ċ import Ġde . sch wer in . stop p Cor ona DE . model . entities . discovery . Db Automatic Discovery Event Ċ import Ġde . sch wer in . stop p Cor ona DE . model . entities . in fection . info . Warning Type Converter Ċ import Ġde . sch wer in . stop p Cor ona DE . model . entities . in fection . message . Db Received In fection Message Ċ import Ġde . sch wer in . stop p Cor ona DE . model . entities . in fection . message . Db Sent In fection Message Ċ import Ġde . sch wer in . stop p Cor ona DE . model . entities . in fection . message . MessageType Converter Ċ import Ġde . sch wer in . stop p Cor ona DE . model . entities . in fection . message . UUID Converter Ċ import Ġde . sch wer in . stop p Cor ona DE . model . entities . near by . Db Near by Record Ċ import Ġde . sch wer in . stop p Cor ona DE . skeleton . core . model . db . converters . DateTime Converter Ċ Ċ /** Ċ Ġ* ĠRoom Ġdatabase Ġdescription Ġwith ĠDA Os Ġspecification . Ċ Ġ*/ Ċ @ Database ( ĊĠĠĠ Ġentities Ġ= Ġ[ ĊĠĠĠĠĠĠĠ ĠDb Configuration :: class , ĊĠĠĠĠĠĠĠ ĠDb Questionnaire :: class , ĊĠĠĠĠĠĠĠ ĠDb Questionnaire Answer :: class , ĊĠĠĠĠĠĠĠ ĠDb Page Content :: class , ĊĠĠĠĠĠĠĠ ĠDb Near by Record :: class , ĊĠĠĠĠĠĠĠ ĠDb Received In fection Message :: class , ĊĠĠĠĠĠĠĠ ĠDb Sent In fection Message :: class , ĊĠĠĠĠĠĠĠ ĠDb Automatic Discovery Event :: class ĊĠĠĠ Ġ], ĊĠĠĠ Ġversion Ġ= Ġ 1 3 , ĊĠĠĠ Ġexport Schema Ġ= Ġfalse Ċ ) Ċ @ Type Converters ( ĊĠĠĠ ĠDateTime Converter :: class , ĊĠĠĠ ĠConfiguration Language Converter :: class , ĊĠĠĠ ĠMessageType Converter :: class , ĊĠĠĠ ĠWarning Type Converter :: class , ĊĠĠĠ ĠUUID Converter :: class Ċ ) Ċ abstract Ġclass ĠDefault Database Ġ: ĠRoom Database () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmigrations Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġapp Ġv 1 . 0 . 0 Ġwith Ġversion ĠDB Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠAdded Ġfields Ġto Ġthe Ġtable Ġ[ Db Configuration ]. ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmigration ( 6 , Ġ 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" DELETE ĠFROM Ġ` configuration ` ") Ġ// Ġclear ĠDB ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" ALTER ĠTABLE Ġ` configuration ` ĠADD ĠCOLUMN Ġ` red Warning Qu ar ant ine ` ĠINTEGER ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" ALTER ĠTABLE Ġ` configuration ` ĠADD ĠCOLUMN Ġ` yellow Warning Qu ar ant ine ` ĠINTEGER ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" ALTER ĠTABLE Ġ` configuration ` ĠADD ĠCOLUMN Ġ` self Diag no sed Qu ar ant ine ` ĠINTEGER ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠAdded Ġnew Ġdebug Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠAdded Ġfield Ġto Ġthe Ġ[ Db Near by Record ]. ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmigration ( 7 , Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ` debug _ playground _ entity ` Ġ(` id ` ĠINTEGER ĠPRIMARY ĠKEY ĠAUTO INCREMENT ĠNOT ĠNULL , Ġ` time Stamp ` ĠINTEGER ĠNOT ĠNULL , Ġ` publicKey ` ĠTEXT ĠNOT ĠNULL , Ġ` prox imity ` ĠINTEGER ĠNOT ĠNULL )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" CREATE ĠINDEX ĠIF ĠNOT ĠEXISTS Ġ` index _ debug _ playground _ entity _ publicKey ` ĠON Ġ` debug _ playground _ entity ` Ġ(` publicKey `) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" ALTER ĠTABLE Ġ` near by _ record ` ĠADD ĠCOLUMN Ġ` detected Autom atically ` ĠINTEGER ĠDEFAULT Ġ 0 ĠNOT ĠNULL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠAdded Ġnew Ġautomatic Ġdiscovery Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmigration ( 8 , Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ` automatic _ discovery ` Ġ(` id ` ĠINTEGER ĠPRIMARY ĠKEY ĠAUTO INCREMENT ĠNOT ĠNULL , Ġ` time Stamp ` ĠINTEGER ĠNOT ĠNULL , Ġ` publicKey ` ĠBLOB ĠNOT ĠNULL , Ġ` prox imity ` ĠINTEGER ĠNOT ĠNULL )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" CREATE ĠINDEX ĠIF ĠNOT ĠEXISTS Ġ` index _ automatic _ discovery _ publicKey ` ĠON Ġ` automatic _ discovery ` Ġ(` publicKey `) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠUpdated Ġdefinitions Ġof Ġ[ Db Automatic Discovery Event ] Ġand Ġ[ Db Near by Record ]. ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmigration ( 9 , Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdelete Ġold Ġtable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" DROP ĠTABLE Ġ` automatic _ discovery ` ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġnew Ġtable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ` automatic _ discovery ` Ġ(` id ` ĠINTEGER ĠPRIMARY ĠKEY ĠAUTO INCREMENT ĠNOT ĠNULL , Ġ` publicKey ` ĠBLOB ĠNOT ĠNULL , Ġ` prox imity ` ĠINTEGER ĠNOT ĠNULL , Ġ` startTime ` ĠINTEGER ĠNOT ĠNULL , Ġ` endTime ` ĠINTEGER )" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" CREATE ĠINDEX ĠIF ĠNOT ĠEXISTS Ġ` index _ automatic _ discovery _ publicKey ` ĠON Ġ` automatic _ discovery ` Ġ(` publicKey `) ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġnew Ġtemp Ġtable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ` near by _ record _ temp ` Ġ(` publicKey ` ĠBLOB ĠNOT ĠNULL , Ġ` timestamp ` ĠINTEGER ĠNOT ĠNULL , Ġ` detected Autom atically ` ĠINTEGER ĠNOT ĠNULL , ĠPRIMARY ĠKEY (` publicKey ` )) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcopy Ġdata Ġfrom Ġold Ġtable Ġto Ġtemp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INSERT ĠINTO Ġ` near by _ record _ temp ` Ġ(` publicKey `, Ġ` timestamp `, Ġ` detected Autom atically `) ĠSELECT Ġ` publicKey `, Ġmax (` timestamp `), Ġ` detected Autom atically ` ĠFROM Ġ` near by _ record ` ĠGROUP ĠBY Ġ` publicKey `" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdelete Ġold Ġtable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" DROP ĠTABLE Ġ` near by _ record ` ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrename Ġtemp Ġto Ġoriginal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" ALTER ĠTABLE Ġ` near by _ record _ temp ` ĠR ENAME ĠTO Ġ` near by _ record ` ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDeleted Ġdebug Ġtable . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmigration ( 1 0 , Ġ 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdelete Ġold Ġtable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" DROP ĠTABLE Ġ` debug _ playground _ entity ` ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠFixed Ġcascade Ġrule Ġon Ġ[ Db Contact With In fection Message ]. ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmigration ( 1 1 , Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġtemp Ġtable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ` contact _ with _ in fection _ message _ temp ` Ġ(` message Uuid ` ĠTEXT ĠNOT ĠNULL , Ġ` publicKey ` ĠBLOB ĠNOT ĠNULL , ĠPRIMARY ĠKEY (` message Uuid `), ĠFOREIGN ĠKEY (` message Uuid `) ĠREFERENCES Ġ` in fection _ message ` (` uuid `) ĠON ĠUPDATE ĠCASCADE ĠON ĠDELETE ĠCASCADE Ġ)" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcopy Ġdata Ġfrom Ġold Ġtable Ġto Ġtemp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INSERT ĠINTO Ġ` contact _ with _ in fection _ message _ temp ` Ġ(` message Uuid `, Ġ` publicKey `) ĠSELECT Ġ` message Uuid `, Ġ` publicKey ` ĠFROM Ġ` contact _ with _ in fection _ message `" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdelete Ġold Ġtable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" DROP ĠTABLE Ġ` contact _ with _ in fection _ message ` ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrename Ġtemp Ġto Ġoriginal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" ALTER ĠTABLE Ġ` contact _ with _ in fection _ message _ temp ` ĠR ENAME ĠTO Ġ` contact _ with _ in fection _ message ` ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠSplit Ġ[ Db In fection Message ] Ġentity Ġto Ġ[ Db Sent In fection Message ] Ġand Ġ[ Db Received In fection Message ]. ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmigration ( 1 2 , Ġ 1 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġnew Ġtables ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ` received _ in fection _ message ` Ġ(` uuid ` ĠTEXT ĠNOT ĠNULL , Ġ` message Type ` ĠTEXT ĠNOT ĠNULL , Ġ` time Stamp ` ĠINTEGER ĠNOT ĠNULL , ĠPRIMARY ĠKEY (` uuid ` )) " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ` sent _ in fection _ message ` Ġ(` uuid ` ĠTEXT ĠNOT ĠNULL , Ġ` message Type ` ĠTEXT ĠNOT ĠNULL , Ġ` time Stamp ` ĠINTEGER ĠNOT ĠNULL , Ġ` publicKey ` ĠBLOB ĠNOT ĠNULL , ĠPRIMARY ĠKEY (` uuid ` )) " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcopy Ġdata Ġfrom Ġold Ġtable Ġto Ġnew Ġtables ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" INSERT ĠINTO Ġ` received _ in fection _ message ` Ġ(` uuid `, Ġ` message Type `, Ġ` time Stamp `) ĠSELECT Ġ` uuid `, Ġ` message Type `, Ġ` time Stamp ` ĠFROM Ġ` in fection _ message ` ĠWHERE Ġ` is Received ` Ġ= Ġ 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġ` sent _ in fection _ message ` Ġ(` uuid `, Ġ` message Type `, Ġ` time Stamp `, Ġ` publicKey `) ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ` in fection _ message `.` uuid `, Ġ` in fection _ message `.` message Type `, Ġ` in fection _ message `.` time Stamp `, Ġ` contact _ with _ in fection _ message `.` publicKey ` ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFROM Ġ` in fection _ message ` ĠJOIN Ġ` contact _ with _ in fection _ message ` ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠON Ġ(` in fection _ message `.` uuid ` Ġ= Ġ` contact _ with _ in fection _ message `.` message Uuid `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġ` in fection _ message `.` is Received ` Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdelete Ġold Ġtables ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" DROP ĠTABLE Ġ` in fection _ message ` ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec SQL (" DROP ĠTABLE Ġ` contact _ with _ in fection _ message ` ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġconfiguration Dao (): ĠConfiguration Dao ĊĊĠĠĠ Ġabstract Ġfun Ġnearby Record Dao (): ĠN ear by Record Dao ĊĊĠĠĠ Ġabstract Ġfun Ġin fection Message Dao (): ĠIn fection Message Dao ĊĊĠĠĠ Ġabstract Ġfun Ġautomatic Discovery Dao (): ĠAutomatic Discovery Dao Ċ } Ċ Ċ /** Ċ Ġ* ĠHelper Ġfun Ġto Ġcreate Ġmigration Ġinstance . Ċ Ġ*/ Ċ private Ġfun Ġmigration ( start Version : ĠInt , Ġend Version : ĠInt , Ġmigrate Procedure : ĠSupport SQLite Database . () Ġ-> ĠUnit ): ĠMigration Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠMigration ( start Version , Ġend Version ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmigrate ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . migrate Procedure () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }