Skip to content

Commit

Permalink
Fix DB check in new backend
Browse files Browse the repository at this point in the history
  • Loading branch information
dae committed Jul 11, 2022
1 parent 0361c94 commit 6faf3c2
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 1 deletion.
46 changes: 46 additions & 0 deletions AnkiDroid/src/main/java/com/ichi2/anki/DatabaseCheck.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/***************************************************************************************
* Copyright (c) 2022 Ankitects Pty Ltd <https://apps.ankiweb.net> *
* *
* This program is free software; you can redistribute it and/or modify it under *
* the terms of the GNU General Public License as published by the Free Software *
* Foundation; either version 3 of the License, or (at your option) any later *
* version. *
* *
* This program is distributed in the hope that it will be useful, but WITHOUT ANY *
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A *
* PARTICULAR PURPOSE. See the GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License along with *
* this program. If not, see <http://www.gnu.org/licenses/>. *
****************************************************************************************/

package com.ichi2.anki

import timber.log.Timber

fun DeckPicker.handleDatabaseCheck() {
val col = CollectionHelper.getInstance().getCol(baseContext).newBackend
val deckPicker = this
catchingLifecycleScope(this) {
val problems = runInBackgroundWithProgress(col, {
if (it.hasDatabaseCheck()) {
// TODO: show progress in GUI
it.databaseCheck.run {
if (stageTotal > 0) {
Timber.i("$stage: $stageCurrent/$stageTotal")
} else {
Timber.i("$stage")
}
}
}
}) {
col.fixIntegrity()
}
val message = if (problems.isNotEmpty()) {
problems.joinToString("\n")
} else {
col.tr.databaseCheckRebuilt()
}
deckPicker.showSimpleMessageDialog(message)
}
}
6 changes: 5 additions & 1 deletion AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt
Original file line number Diff line number Diff line change
Expand Up @@ -1370,7 +1370,11 @@ open class DeckPicker :

private fun performIntegrityCheck() {
Timber.i("performIntegrityCheck()")
TaskManager.launchCollectionTask(CheckDatabase(), CheckDatabaseListener())
if (BackendFactory.defaultLegacySchema) {
TaskManager.launchCollectionTask(CheckDatabase(), CheckDatabaseListener())
} else {
handleDatabaseCheck()
}
}

private fun mediaCheckListener(): MediaCheckListener {
Expand Down
6 changes: 6 additions & 0 deletions AnkiDroid/src/main/java/com/ichi2/libanki/CollectionV16.kt
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,10 @@ class CollectionV16(
fun i18nResourcesRaw(input: ByteArray): ByteArray {
return backend.i18nResourcesRaw(input = input)
}

/** Fixes and optimizes the database. If any errors are encountered, a list of
* problems is returned. Throws if DB is unreadable. */
fun fixIntegrity(): List<String> {
return backend.checkDatabase()
}
}

0 comments on commit 6faf3c2

Please sign in to comment.