Update: Migrate from Database to DatabaseX (4.7/5 in replacing SQLite with Room)

This commit is contained in:
machiav3lli
2021-11-01 01:05:15 +01:00
parent 9235ed6e0d
commit dc65c060e7
15 changed files with 128 additions and 99 deletions

View File

@ -15,7 +15,7 @@ import androidx.core.app.NotificationCompat
import androidx.fragment.app.Fragment
import com.looker.droidify.*
import com.looker.droidify.content.Preferences
import com.looker.droidify.database.Database
import com.looker.droidify.database.DatabaseX
import com.looker.droidify.entity.ProductItem
import com.looker.droidify.entity.Repository
import com.looker.droidify.index.RepositoryUpdater
@ -25,6 +25,7 @@ import com.looker.droidify.utility.extension.android.asSequence
import com.looker.droidify.utility.extension.android.notificationManager
import com.looker.droidify.utility.extension.resources.getColorFromAttr
import com.looker.droidify.utility.extension.text.formatSize
import com.looker.droidify.utility.getProductItem
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.disposables.Disposable
@ -92,7 +93,7 @@ class SyncService : ConnectionService<SyncService.Binder>() {
}
fun sync(request: SyncRequest) {
val ids = Database.RepositoryAdapter.getAll(null)
val ids = db.repositoryDao.all.mapNotNull { it.data }
.asSequence().filter { it.enabled }.map { it.id }.toList()
sync(ids, request)
}
@ -118,7 +119,7 @@ class SyncService : ConnectionService<SyncService.Binder>() {
}
fun setEnabled(repository: Repository, enabled: Boolean): Boolean {
Database.RepositoryAdapter.put(repository.enable(enabled))
db.repositoryDao.put(repository.enable(enabled))
if (enabled) {
if (repository.id != currentTask?.task?.repositoryId && !tasks.any { it.repositoryId == repository.id }) {
tasks += Task(repository.id, true)
@ -137,10 +138,10 @@ class SyncService : ConnectionService<SyncService.Binder>() {
}
fun deleteRepository(repositoryId: Long): Boolean {
val repository = Database.RepositoryAdapter.get(repositoryId)
val repository = db.repositoryDao.get(repositoryId)?.data
return repository != null && run {
setEnabled(repository, false)
Database.RepositoryAdapter.markAsDeleted(repository.id)
db.repositoryDao.markAsDeleted(repository.id)
true
}
}
@ -148,12 +149,14 @@ class SyncService : ConnectionService<SyncService.Binder>() {
private val binder = Binder()
override fun onBind(intent: Intent): Binder = binder
lateinit var db: DatabaseX
private var stateDisposable: Disposable? = null
override fun onCreate() {
super.onCreate()
db = DatabaseX.getInstance(applicationContext)
if (Android.sdk(26)) {
NotificationChannel(
NOTIFICATION_CHANNEL_SYNCING,
@ -330,7 +333,7 @@ class SyncService : ConnectionService<SyncService.Binder>() {
if (currentTask == null) {
if (tasks.isNotEmpty()) {
val task = tasks.removeAt(0)
val repository = Database.RepositoryAdapter.get(task.repositoryId)
val repository = db.repositoryDao.get(task.repositoryId)?.data
if (repository != null && repository.enabled) {
val lastStarted = started
val newStarted =
@ -374,7 +377,7 @@ class SyncService : ConnectionService<SyncService.Binder>() {
if (hasUpdates && Preferences[Preferences.Key.UpdateNotify]) {
val disposable = RxUtils
.querySingle { it ->
Database.ProductAdapter
db.productDao
.query(
installed = true,
updates = true,
@ -384,8 +387,7 @@ class SyncService : ConnectionService<SyncService.Binder>() {
signal = it
)
.use {
it.asSequence().map(Database.ProductAdapter::transformItem)
.toList()
it.asSequence().map { it.getProductItem() }.toList()
}
}
.subscribeOn(Schedulers.io())