Improve JdbcChatMemoryRepository to simplify findConversationIds()

Signed-off-by: Yanming Zhou <zhouyanming@gmail.com>
This commit is contained in:
Yanming Zhou
2025-05-16 10:12:51 +08:00
committed by Mark Pollack
parent 4ae26547db
commit bbc2bbf661
4 changed files with 9 additions and 10 deletions

View File

@@ -77,14 +77,7 @@ public final class JdbcChatMemoryRepository implements ChatMemoryRepository {
@Override
public List<String> findConversationIds() {
List<String> conversationIds = this.jdbcTemplate.query(this.dialect.getSelectConversationIdsSql(), rs -> {
var ids = new ArrayList<String>();
while (rs.next()) {
ids.add(rs.getString(1));
}
return ids;
});
return conversationIds != null ? conversationIds : List.of();
return this.jdbcTemplate.queryForList(dialect.getSelectConversationIdsSql(), String.class);
}
@Override

View File

@@ -73,6 +73,8 @@ public abstract class AbstractJdbcChatMemoryRepositoryIT {
this.chatMemoryRepository.saveAll(conversationId, List.of(message));
assertThat(chatMemoryRepository.findConversationIds()).contains(conversationId);
// Use dialect to get the appropriate SQL query
JdbcChatMemoryRepositoryDialect dialect = JdbcChatMemoryRepositoryDialect
.from(this.jdbcTemplate.getDataSource());
@@ -96,6 +98,8 @@ public abstract class AbstractJdbcChatMemoryRepositoryIT {
this.chatMemoryRepository.saveAll(conversationId, messages);
assertThat(chatMemoryRepository.findConversationIds()).contains(conversationId);
// Use dialect to get the appropriate SQL query
JdbcChatMemoryRepositoryDialect dialect = JdbcChatMemoryRepositoryDialect
.from(this.jdbcTemplate.getDataSource());

View File

@@ -29,7 +29,8 @@ import org.springframework.test.context.jdbc.Sql;
* @author Mark Pollack
*/
@SpringBootTest(classes = JdbcChatMemoryRepositoryMysqlIT.TestConfiguration.class)
@TestPropertySource(properties = { "spring.datasource.url=jdbc:tc:mariadb:10.3.39:///" })
@TestPropertySource(properties = { "spring.datasource.url=jdbc:tc:mariadb:10.3.39:///",
"spring.datasource.hikari.maximum-pool-size=20", "spring.datasource.hikari.minimum-idle=5" })
@Sql(scripts = "classpath:org/springframework/ai/chat/memory/repository/jdbc/schema-mariadb.sql")
class JdbcChatMemoryRepositoryMysqlIT extends AbstractJdbcChatMemoryRepositoryIT {

View File

@@ -46,7 +46,8 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Mark Pollack
*/
@SpringBootTest(classes = JdbcChatMemoryRepositoryPostgresqlIT.TestConfiguration.class)
@TestPropertySource(properties = "spring.datasource.url=jdbc:tc:postgresql:17:///")
@TestPropertySource(properties = { "spring.datasource.url=jdbc:tc:postgresql:17:///",
"spring.datasource.hikari.maximum-pool-size=20", "spring.datasource.hikari.minimum-idle=5" })
@Sql(scripts = "classpath:org/springframework/ai/chat/memory/repository/jdbc/schema-postgresql.sql")
class JdbcChatMemoryRepositoryPostgresqlIT extends AbstractJdbcChatMemoryRepositoryIT {