From ec598923bb64ddd102f15f0c293af0deeac9007c Mon Sep 17 00:00:00 2001 From: Angular2guy Date: Tue, 20 Feb 2024 19:18:16 +0100 Subject: [PATCH] fix: filter tables --- .../usecase/service/TableService.java | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/backend/src/main/java/ch/xxx/aidoclibchat/usecase/service/TableService.java b/backend/src/main/java/ch/xxx/aidoclibchat/usecase/service/TableService.java index 56b03e9..d2936e9 100644 --- a/backend/src/main/java/ch/xxx/aidoclibchat/usecase/service/TableService.java +++ b/backend/src/main/java/ch/xxx/aidoclibchat/usecase/service/TableService.java @@ -151,17 +151,22 @@ private Prompt createPrompt(SearchDto searchDto, EmbeddingContainer documentCont final AtomicReference joinColumn = new AtomicReference(""); final AtomicReference joinTable = new AtomicReference(""); final AtomicReference columnValue = new AtomicReference(""); - sortedRowDocs.stream().filter(myDoc -> minRowDistance <= MAX_ROW_DISTANCE).findFirst().ifPresent(myRowDoc -> { - joinTable.set(((String) myRowDoc.getMetadata().get(MetaData.TABLE_NAME))); - joinColumn.set(((String) myRowDoc.getMetadata().get(MetaData.DATANAME))); - tableColumnNames.columnNames().add(((String) myRowDoc.getMetadata().get(MetaData.DATANAME))); - columnValue.set(myRowDoc.getContent()); - this.tableMetadataRepository - .findByTableNameIn(List.of(((String) myRowDoc.getMetadata().get(MetaData.TABLE_NAME)))).stream() - .map(myTableMetadata -> new TableNameSchema(myTableMetadata.getTableName(), - myTableMetadata.getTableDdl())) - .findFirst().ifPresent(myRecord -> tableRecords.add(myRecord)); - }); + sortedRowDocs.stream().filter(myDoc -> minRowDistance <= MAX_ROW_DISTANCE) + .filter(myRowDoc -> tableRecords.stream() + .filter(myRecord -> myRecord.name().equals(myRowDoc.getMetadata().get(MetaData.TABLE_NAME))) + .findFirst().isEmpty()) + .findFirst().ifPresent(myRowDoc -> { + joinTable.set(((String) myRowDoc.getMetadata().get(MetaData.TABLE_NAME))); + joinColumn.set(((String) myRowDoc.getMetadata().get(MetaData.DATANAME))); + tableColumnNames.columnNames().add(((String) myRowDoc.getMetadata().get(MetaData.DATANAME))); + columnValue.set(myRowDoc.getContent()); + this.tableMetadataRepository + .findByTableNameIn(List.of(((String) myRowDoc.getMetadata().get(MetaData.TABLE_NAME)))) + .stream() + .map(myTableMetadata -> new TableNameSchema(myTableMetadata.getTableName(), + myTableMetadata.getTableDdl())) + .findFirst().ifPresent(myRecord -> tableRecords.add(myRecord)); + }); var messages = this.createMessages(searchDto, minRowDistance, tableColumnNames, tableRecords, joinColumn, joinTable, columnValue); Prompt prompt = new Prompt(messages);