package Ġcom . m ity ush ov n . mining quiz . database . topic Dao Ċ Ċ import Ġandroid . database . sqlite . SQLite Database Ċ import Ġcom . m ity ush ov n . mining quiz . database . App SQLite Contract Ċ import Ġcom . m ity ush ov n . mining quiz . di . scopes . MainActivity Scope Ċ import Ġcom . m ity ush ov n . mining quiz . models . domain . Topic Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* Ġ@ author ĠNik ita ĠM ity ush ov Ġ 8 . 0 4 . 2 2 Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ* ĠImplementation Ġof ĠTopic Dao API Ġinterface . Ċ Ġ* Ġ@ see ĠTopic Dao API Ċ Ġ*/ Ċ @ MainActivity Scope Ċ class ĠTopic Dao Ġ@ Inject Ġconstructor ( val Ġdb : ĠSQLite Database ) Ġ: ĠTopic Dao API Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ see ĠTopic Dao API . getAll Topics ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll Topics (): ĠFlow < List < Topic >> Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 ) Ġdb Ġquery ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġdb . raw Query ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp SQLite Contract . Topic Table . SELECT _ ALL _ TOP ICS _ QUERY , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 ) Ġhandle Ġresponse ( cursor ) ĊĠĠĠĠĠĠĠ Ġcursor . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor . count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" There Ġare Ġno Ġtopics Ġin Ġthe Ġdb ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Topic >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 3 Ġiterate Ġthrough Ġcursor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTopic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtopic Id Ġ= Ġcursor . getInt ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getColumnIndex OrThrow ( App SQLite Contract . Topic Table . COLUMN _ TOPIC _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Topic Ġ= Ġcursor . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getColumnIndex OrThrow ( App SQLite Contract . Topic Table . COLUMN _ NAME _ TOPIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Exam Ġ= Ġcursor . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getColumnIndex OrThrow ( App SQLite Contract . Exam Table . COLUMN _ NAME _ EX AM ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 3 ) Ġemit Ġresult ĠList < Topic > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }