diff --git a/CHANGELOG.md b/CHANGELOG.md index 531412ca634..5abe1a574f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 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/gradle.properties b/gradle.properties index 058c79dbe60..9463c6c6975 100644 --- a/gradle.properties +++ b/gradle.properties @@ -45,5 +45,5 @@ dokka_version=1.5.0 # Project data group=dev.inmo -version=0.5.19 -android_code_version=60 +version=0.5.20 +android_code_version=61 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,