DatabaseHandler.kt 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package eu.kanade.data
  2. import androidx.paging.PagingSource
  3. import com.squareup.sqldelight.Query
  4. import com.squareup.sqldelight.Transacter
  5. import eu.kanade.tachiyomi.Database
  6. import kotlinx.coroutines.flow.Flow
  7. interface DatabaseHandler {
  8. suspend fun <T> await(inTransaction: Boolean = false, block: suspend Database.() -> T): T
  9. suspend fun <T : Any> awaitList(
  10. inTransaction: Boolean = false,
  11. block: suspend Database.() -> Query<T>,
  12. ): List<T>
  13. suspend fun <T : Any> awaitOne(
  14. inTransaction: Boolean = false,
  15. block: suspend Database.() -> Query<T>,
  16. ): T
  17. suspend fun <T : Any> awaitOneOrNull(
  18. inTransaction: Boolean = false,
  19. block: suspend Database.() -> Query<T>,
  20. ): T?
  21. fun <T : Any> subscribeToList(block: Database.() -> Query<T>): Flow<List<T>>
  22. fun <T : Any> subscribeToOne(block: Database.() -> Query<T>): Flow<T>
  23. fun <T : Any> subscribeToOneOrNull(block: Database.() -> Query<T>): Flow<T?>
  24. fun <T : Any> subscribeToPagingSource(
  25. countQuery: Database.() -> Query<Long>,
  26. transacter: Database.() -> Transacter,
  27. queryProvider: Database.(Long, Long) -> Query<T>,
  28. ): PagingSource<Long, T>
  29. }