a8cb77cc7e
* Migrate History screen database call to SQLDelight
- Move all migrations to SQLDelight
- Move all tables to SQLDelight
Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>
* Changes from review comments
* Add adapters to database
* Remove logging of database version in App
* Change query name for paging source queries
* Update migrations
* Make SQLite Callback handle migration
- To ensure it updates the database
* Use SQLDelight Schema version for Callback database version
Co-authored-by: inorichi <3521738+inorichi@users.noreply.github.com>
(cherry picked from commit b1f46ed830)
# Conflicts:
# app/src/main/java/eu/kanade/tachiyomi/data/database/DatabaseHelper.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/DbOpenCallback.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/tables/CategoryTable.kt
# app/src/main/java/eu/kanade/tachiyomi/data/database/tables/MangaTable.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/setting/database/ClearDatabasePresenter.kt
# build.gradle.kts
40 lines
1.2 KiB
Kotlin
40 lines
1.2 KiB
Kotlin
package eu.kanade.data
|
|
|
|
import androidx.paging.PagingSource
|
|
import com.squareup.sqldelight.Query
|
|
import com.squareup.sqldelight.Transacter
|
|
import eu.kanade.tachiyomi.Database
|
|
import kotlinx.coroutines.flow.Flow
|
|
|
|
interface DatabaseHandler {
|
|
|
|
suspend fun <T> await(inTransaction: Boolean = false, block: suspend Database.() -> T): T
|
|
|
|
suspend fun <T : Any> awaitList(
|
|
inTransaction: Boolean = false,
|
|
block: suspend Database.() -> Query<T>
|
|
): List<T>
|
|
|
|
suspend fun <T : Any> awaitOne(
|
|
inTransaction: Boolean = false,
|
|
block: suspend Database.() -> Query<T>
|
|
): T
|
|
|
|
suspend fun <T : Any> awaitOneOrNull(
|
|
inTransaction: Boolean = false,
|
|
block: suspend Database.() -> Query<T>
|
|
): T?
|
|
|
|
fun <T : Any> subscribeToList(block: Database.() -> Query<T>): Flow<List<T>>
|
|
|
|
fun <T : Any> subscribeToOne(block: Database.() -> Query<T>): Flow<T>
|
|
|
|
fun <T : Any> subscribeToOneOrNull(block: Database.() -> Query<T>): Flow<T?>
|
|
|
|
fun <T : Any> subscribeToPagingSource(
|
|
countQuery: Database.() -> Query<Long>,
|
|
transacter: Database.() -> Transacter,
|
|
queryProvider: Database.(Long, Long) -> Query<T>
|
|
): PagingSource<Long, T>
|
|
}
|