diff --git a/app/src/main/java/org/hydev/wearsync/Extensions.kt b/app/src/main/java/org/hydev/wearsync/Extensions.kt index 1e9edbe..aa2e12b 100644 --- a/app/src/main/java/org/hydev/wearsync/Extensions.kt +++ b/app/src/main/java/org/hydev/wearsync/Extensions.kt @@ -141,4 +141,21 @@ object GsonExtensions { inline fun Gson.parse(json: String?) = fromJson(json, object : TypeToken() {}.type) inline fun String.parseJson() = GSON.parse(this) } + +object Database { + class ColumnNotFound(col: String) : RuntimeException(col) + + fun Cursor.col(name: String) = getColumnIndex(name).also { if (it == -1) throw ColumnNotFound(name) } + + infix fun Cursor.str(name: String) = getStringOrNull(col(name)) + infix fun Cursor.int(name: String) = getIntOrNull(col(name)) + + class CursorIterator(val c: Cursor) : Iterator + { + override fun hasNext() = !c.isAfterLast + override fun next() = c.apply { moveToNext() } + } + + val Cursor.iterator get() = CursorIterator(this) + val Cursor.seq get() = iterator.asSequence() }