From 4127deeb2c62c79bce0df4d9b8d2f00c5e5238c6 Mon Sep 17 00:00:00 2001 From: Arjan Mundy Date: Fri, 26 May 2023 13:03:45 -0400 Subject: [PATCH] Advanced Filter. --- .../HttpTransactionDatabaseRepository.kt | 18 ++++- .../internal/data/room/HttpTransactionDao.kt | 5 +- .../HttpTransactionDatabaseRepositoryTest.kt | 65 +++++++++++++++++++ 3 files changed, 83 insertions(+), 5 deletions(-) diff --git a/library/src/main/kotlin/com/chuckerteam/chucker/internal/data/repository/HttpTransactionDatabaseRepository.kt b/library/src/main/kotlin/com/chuckerteam/chucker/internal/data/repository/HttpTransactionDatabaseRepository.kt index 6171e7a82..b04f2e672 100644 --- a/library/src/main/kotlin/com/chuckerteam/chucker/internal/data/repository/HttpTransactionDatabaseRepository.kt +++ b/library/src/main/kotlin/com/chuckerteam/chucker/internal/data/repository/HttpTransactionDatabaseRepository.kt @@ -9,9 +9,20 @@ import com.chuckerteam.chucker.internal.support.distinctUntilChanged internal class HttpTransactionDatabaseRepository(private val database: ChuckerDatabase) : HttpTransactionRepository { private val transactionDao get() = database.transactionDao() - + private val customQueryRegex = """method *: *(get|put|post|patch|delete) *""" + .toRegex(RegexOption.IGNORE_CASE) override fun getFilteredTransactionTuples(code: String, path: String): LiveData> { - val pathQuery = if (path.isNotEmpty()) "%$path%" else "%" + val pathQuery = if (path.isNotEmpty() && + !customQueryRegex.containsMatchIn(path) + ) { + "%$path%" + } else if (customQueryRegex + .containsMatchIn(input = path) + ) { + path.substring(path.indexOf(':') + 1).trim() + } else { + "%" + } return transactionDao.getFilteredTuples( "$code%", pathQuery = pathQuery, @@ -19,7 +30,8 @@ internal class HttpTransactionDatabaseRepository(private val database: ChuckerDa * Refer