Loading app/core/src/main/java/com/fsck/k9/mailstore/MessageStore.kt +5 −0 Original line number Diff line number Diff line Loading @@ -176,6 +176,11 @@ interface MessageStore { */ fun getFolderId(folderServerId: String): Long? /** * Find a folder with the given store ID and return its server ID. */ fun getFolderServerId(folderId: Long): String? /** * Retrieve the number of messages in a folder. */ Loading app/storage/src/main/java/com/fsck/k9/storage/messages/K9MessageStore.kt +4 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ class K9MessageStore( private val copyMessageOperations = CopyMessageOperations(database, attachmentFileManager, threadMessageOperations) private val moveMessageOperations = MoveMessageOperations(database, threadMessageOperations) private val flagMessageOperations = FlagMessageOperations(database) private val retrieveMessageOperations = RetrieveMessageOperations(database) private val deleteMessageOperations = DeleteMessageOperations(database, attachmentFileManager) private val createFolderOperations = CreateFolderOperations(database) private val retrieveFolderOperations = RetrieveFolderOperations(database) Loading Loading @@ -134,6 +133,10 @@ class K9MessageStore( return retrieveFolderOperations.getFolderId(folderServerId) } override fun getFolderServerId(folderId: Long): String? { return retrieveFolderOperations.getFolderServerId(folderId) } override fun getMessageCount(folderId: Long): Int { return retrieveFolderOperations.getMessageCount(folderId) } Loading app/storage/src/main/java/com/fsck/k9/storage/messages/RetrieveFolderOperations.kt +16 −0 Original line number Diff line number Diff line Loading @@ -131,6 +131,22 @@ internal class RetrieveFolderOperations(private val lockableDatabase: LockableDa } } fun getFolderServerId(folderId: Long): String? { return lockableDatabase.execute(false) { db -> db.query( "folders", arrayOf("server_id"), "id = ?", arrayOf(folderId.toString()), null, null, null ).use { cursor -> if (cursor.moveToFirst()) cursor.getString(0) else null } } } fun getMessageCount(folderId: Long): Int { return lockableDatabase.execute(false) { db -> db.rawQuery( Loading app/storage/src/test/java/com/fsck/k9/storage/messages/RetrieveFolderOperationsTest.kt +19 −0 Original line number Diff line number Diff line Loading @@ -302,6 +302,25 @@ class RetrieveFolderOperationsTest : RobolectricTest() { assertThat(result).isNull() } @Test fun `get folder server id`() { val (_, folderId2) = listOf( sqliteDatabase.createFolder(serverId = "folder1"), sqliteDatabase.createFolder(serverId = "folder2"), ) val result = retrieveFolderOperations.getFolderServerId(folderId2) assertThat(result).isEqualTo("folder2") } @Test fun `get folder server id should return null if no folder was found`() { val result = retrieveFolderOperations.getFolderServerId(folderId = 1) assertThat(result).isNull() } @Test fun `get message count from empty folder`() { val folderId = sqliteDatabase.createFolder() Loading Loading
app/core/src/main/java/com/fsck/k9/mailstore/MessageStore.kt +5 −0 Original line number Diff line number Diff line Loading @@ -176,6 +176,11 @@ interface MessageStore { */ fun getFolderId(folderServerId: String): Long? /** * Find a folder with the given store ID and return its server ID. */ fun getFolderServerId(folderId: Long): String? /** * Retrieve the number of messages in a folder. */ Loading
app/storage/src/main/java/com/fsck/k9/storage/messages/K9MessageStore.kt +4 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ class K9MessageStore( private val copyMessageOperations = CopyMessageOperations(database, attachmentFileManager, threadMessageOperations) private val moveMessageOperations = MoveMessageOperations(database, threadMessageOperations) private val flagMessageOperations = FlagMessageOperations(database) private val retrieveMessageOperations = RetrieveMessageOperations(database) private val deleteMessageOperations = DeleteMessageOperations(database, attachmentFileManager) private val createFolderOperations = CreateFolderOperations(database) private val retrieveFolderOperations = RetrieveFolderOperations(database) Loading Loading @@ -134,6 +133,10 @@ class K9MessageStore( return retrieveFolderOperations.getFolderId(folderServerId) } override fun getFolderServerId(folderId: Long): String? { return retrieveFolderOperations.getFolderServerId(folderId) } override fun getMessageCount(folderId: Long): Int { return retrieveFolderOperations.getMessageCount(folderId) } Loading
app/storage/src/main/java/com/fsck/k9/storage/messages/RetrieveFolderOperations.kt +16 −0 Original line number Diff line number Diff line Loading @@ -131,6 +131,22 @@ internal class RetrieveFolderOperations(private val lockableDatabase: LockableDa } } fun getFolderServerId(folderId: Long): String? { return lockableDatabase.execute(false) { db -> db.query( "folders", arrayOf("server_id"), "id = ?", arrayOf(folderId.toString()), null, null, null ).use { cursor -> if (cursor.moveToFirst()) cursor.getString(0) else null } } } fun getMessageCount(folderId: Long): Int { return lockableDatabase.execute(false) { db -> db.rawQuery( Loading
app/storage/src/test/java/com/fsck/k9/storage/messages/RetrieveFolderOperationsTest.kt +19 −0 Original line number Diff line number Diff line Loading @@ -302,6 +302,25 @@ class RetrieveFolderOperationsTest : RobolectricTest() { assertThat(result).isNull() } @Test fun `get folder server id`() { val (_, folderId2) = listOf( sqliteDatabase.createFolder(serverId = "folder1"), sqliteDatabase.createFolder(serverId = "folder2"), ) val result = retrieveFolderOperations.getFolderServerId(folderId2) assertThat(result).isEqualTo("folder2") } @Test fun `get folder server id should return null if no folder was found`() { val result = retrieveFolderOperations.getFolderServerId(folderId = 1) assertThat(result).isNull() } @Test fun `get message count from empty folder`() { val folderId = sqliteDatabase.createFolder() Loading