diff --git a/CHANGELOG.md b/CHANGELOG.md index 89dd5bfdb53..5abe1a574f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## 0.5.20 +* `Repos`: + * `Common` + * `Android`: + * `*OrNull` analogs of `Cursor.get*(String)` extensions have been added + * Extensions `Cursor.getFloat` and `Cursor.getFloatOrNull` have been added + ## 0.5.19 * `LanguageCode`: diff --git a/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/DatabaseOperations.kt b/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/DatabaseOperations.kt index d473afd0255..567ada5b667 100644 --- a/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/DatabaseOperations.kt +++ b/repos/common/src/main/kotlin/dev/inmo/micro_utils/repos/DatabaseOperations.kt @@ -2,6 +2,8 @@ package dev.inmo.micro_utils.repos import android.database.Cursor import android.database.sqlite.SQLiteDatabase +import androidx.core.database.* +import dev.inmo.micro_utils.repos.getLongOrNull fun createTableQuery( tableName: String, @@ -32,6 +34,11 @@ fun SQLiteDatabase.createTable( fun Cursor.getString(columnName: String): String = getString( getColumnIndexOrThrow(columnName) ) +fun Cursor.getStringOrNull(columnName: String): String? { + return getStringOrNull( + getColumnIndex(columnName).takeIf { it != -1 } ?: return null + ) +} /** * @throws IllegalArgumentException @@ -39,6 +46,11 @@ fun Cursor.getString(columnName: String): String = getString( fun Cursor.getShort(columnName: String): Short = getShort( getColumnIndexOrThrow(columnName) ) +fun Cursor.getShortOrNull(columnName: String): Short? { + return getShortOrNull( + getColumnIndex(columnName).takeIf { it != -1 } ?: return null + ) +} /** * @throws IllegalArgumentException @@ -46,6 +58,11 @@ fun Cursor.getShort(columnName: String): Short = getShort( fun Cursor.getLong(columnName: String): Long = getLong( getColumnIndexOrThrow(columnName) ) +fun Cursor.getLongOrNull(columnName: String): Long? { + return getLongOrNull( + getColumnIndex(columnName).takeIf { it != -1 } ?: return null + ) +} /** * @throws IllegalArgumentException @@ -53,6 +70,23 @@ fun Cursor.getLong(columnName: String): Long = getLong( fun Cursor.getInt(columnName: String): Int = getInt( getColumnIndexOrThrow(columnName) ) +fun Cursor.getIntOrNull(columnName: String): Int? { + return getIntOrNull( + getColumnIndex(columnName).takeIf { it != -1 } ?: return null + ) +} + +/** + * @throws IllegalArgumentException + */ +fun Cursor.getFloat(columnName: String): Float = getFloat( + getColumnIndexOrThrow(columnName) +) +fun Cursor.getFloatOrNull(columnName: String): Float? { + return getFloatOrNull( + getColumnIndex(columnName).takeIf { it != -1 } ?: return null + ) +} /** * @throws IllegalArgumentException @@ -60,6 +94,11 @@ fun Cursor.getInt(columnName: String): Int = getInt( fun Cursor.getDouble(columnName: String): Double = getDouble( getColumnIndexOrThrow(columnName) ) +fun Cursor.getDoubleOrNull(columnName: String): Double? { + return getDoubleOrNull( + getColumnIndex(columnName).takeIf { it != -1 } ?: return null + ) +} fun SQLiteDatabase.select( table: String,