/* Ċ Ġ* ĠThis Ġis Ġfree Ġand Ġun enc umber ed Ġsoftware Ġreleased Ġinto Ġthe Ġpublic Ġdomain , Ġfollowing Ġ< https :// un license . org > Ċ Ġ*/ Ċ Ċ package Ġcom . pull vert . kot ys a . android Ċ Ċ import Ġandroid . database . sqlite . SQLite Open Helper Ċ import Ġcom . pull vert . kot ys a . Tables Ċ import Ġcom . pull vert . kot ys a . test .* Ċ Ċ abstract Ġclass ĠAbstract UserRepository ( ĊĠĠĠĠĠĠĠ Ġsq Lite Open Helper : ĠSQLite Open Helper , ĊĠĠĠĠĠĠĠ Ġtables : ĠTables Ċ ) Ġ: ĠRepository Ġ{ ĊĊĠĠĠ Ġprotected Ġval Ġsql Client Ġ= Ġsq Lite Open Helper . sql Client ( tables ) ĊĊĠĠĠ Ġoverride Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate Table () ĊĠĠĠĠĠĠĠ Ġinsert Roles () ĊĠĠĠĠĠĠĠ Ġinsert Users () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete () Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete All From Users () ĊĠĠĠĠĠĠĠ Ġdelete All From Roles () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Table () Ġ{ ĊĠĠĠĠĠĠĠ Ġsql Client . createTable < Sq Lite Role >() ĊĠĠĠĠĠĠĠ Ġsql Client . createTable < Sq Lite User >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinsert Roles () Ġ= Ġsql Client . insert ( sq Lite User , Ġsq Lite Admin , Ġsq Lite God ) ĊĊĠĠĠ Ġfun Ġinsert Users () Ġ= Ġsql Client . insert ( sq Lite J doe , Ġsq Lite B boss ) ĊĊĠĠĠ Ġfun Ġdelete All From Users () Ġ= Ġsql Client . delete All From Table < Sq Lite User >() ĊĊĠĠĠ Ġprivate Ġfun Ġdelete All From Roles () Ġ= Ġsql Client . delete All From Table < Sq Lite Role >() ĊĊĠĠĠ Ġfun Ġinsert J Do e () Ġ= Ġsql Client . insert ( sq Lite J doe ) ĊĊĠĠĠ Ġfun Ġselect All () Ġ= Ġsql Client . selectAll < Sq Lite User >() ĊĊĠĠĠ Ġfun Ġselect First By First ame ( firstname : ĠString ) Ġ= Ġsql Client . select < Sq Lite User >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Ġ{ Ġit [ Sq Lite User :: firstname ] Ġeq Ġfirst name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fetch First OrNull () Ċ } Ċ