Improve updates to CdsDatabase.

This commit is contained in:
Greyson Parrelli
2022-04-26 13:59:24 -04:00
parent eccb796199
commit 8cb74fb776
9 changed files with 66 additions and 30 deletions

View File

@@ -278,7 +278,7 @@ public class AttachmentDatabase extends Database {
}
SQLiteDatabase database = databaseHelper.getSignalReadableDatabase();
SqlUtil.Query query = SqlUtil.buildCollectionQuery(MMS_ID, mmsIds);
SqlUtil.Query query = SqlUtil.buildSingleCollectionQuery(MMS_ID, mmsIds);
Map<Long, List<DatabaseAttachment>> output = new HashMap<>();

View File

@@ -68,13 +68,10 @@ class CdsDatabase(context: Context, databaseHelper: SignalDatabase) : Database(c
SqlUtil.buildBulkInsert(TABLE_NAME, arrayOf(E164), insertValues)
.forEach { writableDatabase.execSQL(it.where, it.whereArgs) }
for (e164 in seenE164s) {
writableDatabase
.update(TABLE_NAME)
.values(LAST_SEEN_AT to lastSeen)
.where("$E164 = ?", e164)
.run()
}
val contentValues = contentValuesOf(LAST_SEEN_AT to lastSeen)
SqlUtil.buildCollectionQuery(E164, seenE164s)
.forEach { query -> writableDatabase.update(TABLE_NAME, contentValues, query.where, query.whereArgs) }
writableDatabase.setTransactionSuccessful()
} finally {

View File

@@ -330,7 +330,7 @@ public abstract class MessageDatabase extends Database implements MmsSmsColumns
}
SQLiteDatabase db = databaseHelper.getSignalWritableDatabase();
SqlUtil.Query where = SqlUtil.buildCollectionQuery(ID, ids);
SqlUtil.Query where = SqlUtil.buildSingleCollectionQuery(ID, ids);
ContentValues values = new ContentValues();
values.put(NOTIFIED_TIMESTAMP, timestamp);

View File

@@ -1378,7 +1378,7 @@ open class RecipientDatabase(context: Context, databaseHelper: SignalDatabase) :
db.beginTransaction()
try {
val query = SqlUtil.buildCollectionQuery(ID, ids)
val query = SqlUtil.buildSingleCollectionQuery(ID, ids)
val values = ContentValues().apply {
put(MUTE_UNTIL, until)
}
@@ -2518,7 +2518,7 @@ open class RecipientDatabase(context: Context, databaseHelper: SignalDatabase) :
}
if (Util.hasItems(idsToUpdate)) {
val query = SqlUtil.buildCollectionQuery(ID, idsToUpdate)
val query = SqlUtil.buildSingleCollectionQuery(ID, idsToUpdate)
val values = ContentValues(1).apply {
put(PROFILE_SHARING, 1)
}
@@ -2536,7 +2536,7 @@ open class RecipientDatabase(context: Context, databaseHelper: SignalDatabase) :
return
}
var query = SqlUtil.buildCollectionQuery(ID, recipientIds)
var query = SqlUtil.buildSingleCollectionQuery(ID, recipientIds)
val db = writableDatabase
db.query(TABLE_NAME, arrayOf(ID), "${query.where} AND $GROUPS_IN_COMMON = 0", query.whereArgs, null, null, null).use { cursor ->
@@ -2547,7 +2547,7 @@ open class RecipientDatabase(context: Context, databaseHelper: SignalDatabase) :
}
if (Util.hasItems(idsToUpdate)) {
query = SqlUtil.buildCollectionQuery(ID, idsToUpdate)
query = SqlUtil.buildSingleCollectionQuery(ID, idsToUpdate)
val values = ContentValues().apply {
put(GROUPS_IN_COMMON, 1)
}

View File

@@ -119,7 +119,7 @@ class SessionDatabase(context: Context, databaseHelper: SignalDatabase) : Databa
}
fun getAllFor(serviceId: ServiceId, addressNames: List<String?>): List<SessionRow> {
val query: SqlUtil.Query = SqlUtil.buildCollectionQuery(ADDRESS, addressNames)
val query: SqlUtil.Query = SqlUtil.buildSingleCollectionQuery(ADDRESS, addressNames)
val results: MutableList<SessionRow> = LinkedList()
val queryString = "$ACCOUNT_ID = ? AND (${query.where})"

View File

@@ -472,7 +472,7 @@ public class ThreadDatabase extends Database {
db.beginTransaction();
try {
SqlUtil.Query query = SqlUtil.buildCollectionQuery(ID, threadIds);
SqlUtil.Query query = SqlUtil.buildSingleCollectionQuery(ID, threadIds);
ContentValues contentValues = new ContentValues();
contentValues.put(READ, ReadStatus.FORCED_UNREAD.serialize());
@@ -1062,7 +1062,7 @@ public class ThreadDatabase extends Database {
public Map<RecipientId, Long> getThreadIdsIfExistsFor(@NonNull RecipientId ... recipientIds) {
SQLiteDatabase db = databaseHelper.getSignalReadableDatabase();
SqlUtil.Query query = SqlUtil.buildCollectionQuery(RECIPIENT_ID, Arrays.asList(recipientIds));
SqlUtil.Query query = SqlUtil.buildSingleCollectionQuery(RECIPIENT_ID, Arrays.asList(recipientIds));
Map<RecipientId, Long> results = new HashMap<>();
try (Cursor cursor = db.query(TABLE_NAME, new String[]{ ID, RECIPIENT_ID }, query.getWhere(), query.getWhereArgs(), null, null, null, "1")) {
@@ -1140,7 +1140,7 @@ public class ThreadDatabase extends Database {
public @NonNull List<RecipientId> getRecipientIdsForThreadIds(Collection<Long> threadIds) {
SQLiteDatabase db = databaseHelper.getSignalReadableDatabase();
SqlUtil.Query query = SqlUtil.buildCollectionQuery(ID, threadIds);
SqlUtil.Query query = SqlUtil.buildSingleCollectionQuery(ID, threadIds);
List<RecipientId> ids = new ArrayList<>(threadIds.size());
try (Cursor cursor = db.query(TABLE_NAME, new String[] { RECIPIENT_ID }, query.getWhere(), query.getWhereArgs(), null, null, null)) {

View File

@@ -7,8 +7,6 @@ import android.database.Cursor;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.annimon.stream.Stream;
import org.signal.core.util.CursorUtil;
import org.thoughtcrime.securesms.util.Base64;
import org.signal.core.util.SqlUtil;
@@ -67,7 +65,7 @@ public class UnknownStorageIdDatabase extends Database {
*/
public List<StorageId> getAllWithTypes(List<Integer> types) {
List<StorageId> ids = new ArrayList<>();
SqlUtil.Query query = SqlUtil.buildCollectionQuery(TYPE, types);
SqlUtil.Query query = SqlUtil.buildSingleCollectionQuery(TYPE, types);
try (Cursor cursor = databaseHelper.getSignalReadableDatabase().query(TABLE_NAME, null, query.getWhere(), query.getWhereArgs(), null, null, null)) {
while (cursor != null && cursor.moveToNext()) {