mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-27 12:15:50 +01:00
Add some more missing indexes for foreign keys and create test.
This commit is contained in:
@@ -2,10 +2,6 @@ package org.signal.spinner
|
||||
|
||||
import android.database.Cursor
|
||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
import org.signal.core.util.SqlUtil
|
||||
import org.signal.core.util.readToList
|
||||
import org.signal.core.util.requireNonNullString
|
||||
import org.signal.core.util.requireString
|
||||
|
||||
fun SupportSQLiteDatabase.getTableNames(): List<String> {
|
||||
val out = mutableListOf<String>()
|
||||
@@ -30,22 +26,6 @@ fun SupportSQLiteDatabase.getTriggers(): Cursor {
|
||||
return this.query("SELECT * FROM sqlite_master WHERE type='trigger' ORDER BY name ASC")
|
||||
}
|
||||
|
||||
fun SupportSQLiteDatabase.getForeignKeys(): List<ForeignKeyConstraint> {
|
||||
return SqlUtil.getAllTables(this)
|
||||
.map { table ->
|
||||
this.query("PRAGMA foreign_key_list($table)").readToList { cursor ->
|
||||
ForeignKeyConstraint(
|
||||
table = table,
|
||||
column = cursor.requireNonNullString("from"),
|
||||
dependsOnTable = cursor.requireNonNullString("table"),
|
||||
dependsOnColumn = cursor.requireNonNullString("to"),
|
||||
onDelete = cursor.requireString("on_delete") ?: "NOTHING"
|
||||
)
|
||||
}
|
||||
}
|
||||
.flatten()
|
||||
}
|
||||
|
||||
fun SupportSQLiteDatabase.getTableRowCount(table: String): Int {
|
||||
return this.query("SELECT COUNT(*) FROM $table").use {
|
||||
if (it.moveToFirst()) {
|
||||
@@ -55,11 +35,3 @@ fun SupportSQLiteDatabase.getTableRowCount(table: String): Int {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class ForeignKeyConstraint(
|
||||
val table: String,
|
||||
val column: String,
|
||||
val dependsOnTable: String,
|
||||
val dependsOnColumn: String,
|
||||
val onDelete: String
|
||||
)
|
||||
|
||||
@@ -8,6 +8,8 @@ import com.github.jknack.handlebars.Template
|
||||
import com.github.jknack.handlebars.helper.ConditionalHelpers
|
||||
import fi.iki.elonen.NanoHTTPD
|
||||
import org.signal.core.util.ExceptionUtil
|
||||
import org.signal.core.util.ForeignKeyConstraint
|
||||
import org.signal.core.util.getForeignKeys
|
||||
import org.signal.core.util.logging.Log
|
||||
import org.signal.spinner.Spinner.DatabaseConfig
|
||||
import java.lang.IllegalArgumentException
|
||||
|
||||
Reference in New Issue
Block a user