From 29660a6926fa52799168f07d3fbf94a2f099c165 Mon Sep 17 00:00:00 2001 From: Roman Makeev <57789105+makeevrserg@users.noreply.github.com> Date: Tue, 17 Sep 2024 16:43:08 +0300 Subject: [PATCH] Fix multiple files (#13) * try up version * add file id exclusion * up version 0.5.1 * add file id exclusion --- gradle.properties | 2 +- .../presentation/SignalRouteRegistry.kt | 31 ++++++++++++++++--- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index aec271e..f5d77bb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.parallel=true makeevrserg.project.name=IRDBBackend makeevrserg.project.url=https://github.com/flipperdevices/IRDB-Backend makeevrserg.project.group=com.flipperdevices.ifrmvp.backend -makeevrserg.project.version.string=0.5.0 +makeevrserg.project.version.string=0.5.1 makeevrserg.project.description=Api for IfrSample makeevrserg.project.developers=makeevrserg|Makeev Roman|makeevrserg@gmail.com # Java diff --git a/web-api/src/main/kotlin/com/flipperdevices/ifrmvp/backend/route/signal/presentation/SignalRouteRegistry.kt b/web-api/src/main/kotlin/com/flipperdevices/ifrmvp/backend/route/signal/presentation/SignalRouteRegistry.kt index c2fea51..8aed98b 100644 --- a/web-api/src/main/kotlin/com/flipperdevices/ifrmvp/backend/route/signal/presentation/SignalRouteRegistry.kt +++ b/web-api/src/main/kotlin/com/flipperdevices/ifrmvp/backend/route/signal/presentation/SignalRouteRegistry.kt @@ -54,13 +54,21 @@ internal class SignalRouteRegistry( * order by INFRARED_FILE."signal_count" desc */ private fun getIncludedFileIds(signalRequestModel: SignalRequestModel, brandId: Long): Query { + val excludedFileIds = transaction(database) { + InfraredFileToSignalTable.select(InfraredFileToSignalTable.infraredFileId) + .where { + InfraredFileToSignalTable.signalId inList + signalRequestModel.failedResults + .map(SignalRequestModel.SignalResultData::signalId) + }.map { it[InfraredFileToSignalTable.infraredFileId].value } + } return transaction(database) { InfraredFileTable .join( otherTable = InfraredFileToSignalTable, onColumn = InfraredFileTable.id, otherColumn = InfraredFileToSignalTable.infraredFileId, - joinType = JoinType.INNER + joinType = JoinType.LEFT ) .select(InfraredFileTable.id, InfraredFileTable.signalCount) .groupBy(InfraredFileTable.id) @@ -70,15 +78,29 @@ internal class SignalRouteRegistry( val successSignalIds = signalRequestModel .successResults .map(SignalRequestModel.SignalResultData::signalId) - if (successSignalIds.isNotEmpty()) { - andWhere { + var nextQuery = this + nextQuery = if (successSignalIds.isNotEmpty()) { + nextQuery.andWhere { InfraredFileToSignalTable .signalId .inList(successSignalIds) } } else { - this + nextQuery } + val failedSignalIds = signalRequestModel + .failedResults + .map(SignalRequestModel.SignalResultData::signalId) + nextQuery = if (failedSignalIds.isNotEmpty()) { + nextQuery.andWhere { + InfraredFileToSignalTable + .infraredFileId + .notInList(excludedFileIds) + } + } else { + nextQuery + } + nextQuery } } } @@ -119,6 +141,7 @@ internal class SignalRouteRegistry( .or { SignalKeyTable.hash.eq(identifier.hash) } } } + is IfrKeyIdentifier.Name -> { andWhere { SignalKeyTable.remoteKeyName.eq(identifier.name)