mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-20 16:49:40 +01:00
Update nullability of CallLinkTable column.
This commit is contained in:
committed by
Greyson Parrelli
parent
93efc21452
commit
5c78de2f46
@@ -27,7 +27,7 @@ class CallLinkTable(context: Context, databaseHelper: SignalDatabase) : Database
|
||||
const val CREATE_TABLE = """
|
||||
CREATE TABLE $TABLE_NAME (
|
||||
$ID INTEGER PRIMARY KEY,
|
||||
$ROOT_KEY BLOB NOT NULL,
|
||||
$ROOT_KEY BLOB,
|
||||
$ROOM_ID TEXT NOT NULL UNIQUE,
|
||||
$ADMIN_KEY BLOB,
|
||||
$NAME TEXT NOT NULL,
|
||||
|
||||
@@ -47,6 +47,7 @@ import org.thoughtcrime.securesms.database.helpers.migration.V188_FixMessageReci
|
||||
import org.thoughtcrime.securesms.database.helpers.migration.V189_CreateCallLinkTableColumnsAndRebuildFKReference
|
||||
import org.thoughtcrime.securesms.database.helpers.migration.V190_UniqueMessageMigration
|
||||
import org.thoughtcrime.securesms.database.helpers.migration.V191_UniqueMessageMigrationV2
|
||||
import org.thoughtcrime.securesms.database.helpers.migration.V192_CallLinkTableNullableRootKeys
|
||||
|
||||
/**
|
||||
* Contains all of the database migrations for [SignalDatabase]. Broken into a separate file for cleanliness.
|
||||
@@ -55,7 +56,7 @@ object SignalDatabaseMigrations {
|
||||
|
||||
val TAG: String = Log.tag(SignalDatabaseMigrations.javaClass)
|
||||
|
||||
const val DATABASE_VERSION = 191
|
||||
const val DATABASE_VERSION = 192
|
||||
|
||||
@JvmStatic
|
||||
fun migrate(context: Application, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
|
||||
@@ -230,6 +231,10 @@ object SignalDatabaseMigrations {
|
||||
if (oldVersion < 191) {
|
||||
V191_UniqueMessageMigrationV2.migrate(context, db, oldVersion, newVersion)
|
||||
}
|
||||
|
||||
if (oldVersion < 192) {
|
||||
V192_CallLinkTableNullableRootKeys.migrate(context, db, oldVersion, newVersion)
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright 2023 Signal Messenger, LLC
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
package org.thoughtcrime.securesms.database.helpers.migration
|
||||
|
||||
import android.app.Application
|
||||
import net.zetetic.database.sqlcipher.SQLiteDatabase
|
||||
import org.signal.core.util.SqlUtil
|
||||
import org.signal.core.util.logging.Log
|
||||
|
||||
/**
|
||||
* Allow ROOT_KEY in CallLinkTable to be null.
|
||||
*/
|
||||
object V192_CallLinkTableNullableRootKeys : SignalDatabaseMigration {
|
||||
|
||||
private val TAG = Log.tag(V192_CallLinkTableNullableRootKeys::class.java)
|
||||
|
||||
override fun migrate(context: Application, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
|
||||
db.execSQL("DROP TABLE call_link")
|
||||
db.execSQL(
|
||||
"""
|
||||
CREATE TABLE call_link (
|
||||
_id INTEGER PRIMARY KEY,
|
||||
root_key BLOB,
|
||||
room_id TEXT NOT NULL UNIQUE,
|
||||
admin_key BLOB,
|
||||
name TEXT NOT NULL,
|
||||
restrictions INTEGER NOT NULL,
|
||||
revoked INTEGER NOT NULL,
|
||||
expiration INTEGER NOT NULL,
|
||||
avatar_color TEXT NOT NULL
|
||||
)
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
val foreignKeyViolations: List<SqlUtil.ForeignKeyViolation> = SqlUtil.getForeignKeyViolations(db, "call")
|
||||
if (foreignKeyViolations.isNotEmpty()) {
|
||||
Log.w(TAG, "Foreign key violations!\n${foreignKeyViolations.joinToString(separator = "\n")}")
|
||||
throw IllegalStateException("Foreign key violations!")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user