Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

/**
* @author Mick Semb Wever
* @author Jihoon Kim
* @since 1.0.0
*/
@AutoConfiguration(after = CassandraAutoConfiguration.class)
Expand All @@ -50,8 +51,8 @@ public CassandraChatMemory chatMemory(CassandraChatMemoryProperties properties,
if (!properties.isInitializeSchema()) {
builder = builder.disallowSchemaChanges();
}
if (null != properties.getTimeToLiveSeconds()) {
builder = builder.withTimeToLive(properties.getTimeToLiveSeconds());
if (null != properties.getTimeToLive()) {
builder = builder.withTimeToLive(properties.getTimeToLive());
}

return CassandraChatMemory.create(builder.build());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

/**
* @author Mick Semb Wever
* @author Jihoon Kim
* @since 1.0.0
*/
@ConfigurationProperties(CassandraChatMemoryProperties.CONFIG_PREFIX)
Expand All @@ -45,7 +46,7 @@ public class CassandraChatMemoryProperties extends CommonChatMemoryProperties {

private String userColumn = CassandraChatMemoryConfig.DEFAULT_USER_COLUMN_NAME;

private Duration timeToLiveSeconds = null;
private Duration timeToLive = null;

public String getKeyspace() {
return this.keyspace;
Expand Down Expand Up @@ -80,12 +81,12 @@ public void setUserColumn(String userColumn) {
}

@Nullable
public Duration getTimeToLiveSeconds() {
return this.timeToLiveSeconds;
public Duration getTimeToLive() {
return this.timeToLive;
}

public void setTimeToLiveSeconds(Duration timeToLiveSeconds) {
this.timeToLiveSeconds = timeToLiveSeconds;
public void setTimeToLive(Duration timeToLive) {
this.timeToLive = timeToLive;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package org.springframework.ai.autoconfigure.chat.memory.cassandra;

import java.time.Duration;
import java.util.List;

import com.datastax.driver.core.utils.UUIDs;
Expand All @@ -37,6 +38,7 @@

/**
* @author Mick Semb Wever
* @author Jihoon Kim
* @since 1.0.0
*/
@Testcontainers
Expand All @@ -57,7 +59,7 @@ void addAndGet() {
this.contextRunner.withPropertyValues("spring.cassandra.contactPoints=" + getContactPointHost())
.withPropertyValues("spring.cassandra.port=" + getContactPointPort())
.withPropertyValues("spring.cassandra.localDatacenter=" + cassandraContainer.getLocalDatacenter())

.withPropertyValues("spring.ai.chat.memory.cassandra.time-to-live=" + getTimeToLive())
.run(context -> {
CassandraChatMemory memory = context.getBean(CassandraChatMemory.class);

Expand All @@ -84,6 +86,20 @@ void addAndGet() {
.isEqualTo(MessageType.ASSISTANT);
assertThat(memory.get(sessionId, Integer.MAX_VALUE).get(0).getContent()).isEqualTo("test answer");

CassandraChatMemoryProperties properties = context.getBean(CassandraChatMemoryProperties.class);
assertThat(properties.getTimeToLive()).isEqualTo(getTimeToLive());
});
}

@Test
void compareTimeToLive_ISO8601Format() {
this.contextRunner.withPropertyValues("spring.cassandra.contactPoints=" + getContactPointHost())
.withPropertyValues("spring.cassandra.port=" + getContactPointPort())
.withPropertyValues("spring.cassandra.localDatacenter=" + cassandraContainer.getLocalDatacenter())
.withPropertyValues("spring.ai.chat.memory.cassandra.time-to-live=" + getTimeToLiveString())
.run(context -> {
CassandraChatMemoryProperties properties = context.getBean(CassandraChatMemoryProperties.class);
assertThat(properties.getTimeToLive()).isEqualTo(Duration.parse(getTimeToLiveString()));
});
}

Expand All @@ -95,4 +111,12 @@ private String getContactPointPort() {
return String.valueOf(cassandraContainer.getContactPoint().getPort());
}

private Duration getTimeToLive() {
return Duration.ofSeconds(12000);
}

private String getTimeToLiveString() {
return "PT1M";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

/**
* @author Mick Semb Wever
* @author Jihoon Kim
* @since 1.0.0
*/
class CassandraChatMemoryPropertiesTest {
Expand All @@ -37,7 +38,7 @@ void defaultValues() {
assertThat(props.getTable()).isEqualTo(CassandraChatMemoryConfig.DEFAULT_TABLE_NAME);
assertThat(props.getAssistantColumn()).isEqualTo(CassandraChatMemoryConfig.DEFAULT_ASSISTANT_COLUMN_NAME);
assertThat(props.getUserColumn()).isEqualTo(CassandraChatMemoryConfig.DEFAULT_USER_COLUMN_NAME);
assertThat(props.getTimeToLiveSeconds()).isNull();
assertThat(props.getTimeToLive()).isNull();
assertThat(props.isInitializeSchema()).isTrue();
}

Expand All @@ -48,14 +49,14 @@ void customValues() {
props.setTable("my_table");
props.setAssistantColumn("my_assistant_column");
props.setUserColumn("my_user_column");
props.setTimeToLiveSeconds(Duration.ofDays(1));
props.setTimeToLive(Duration.ofDays(1));
props.setInitializeSchema(false);

assertThat(props.getKeyspace()).isEqualTo("my_keyspace");
assertThat(props.getTable()).isEqualTo("my_table");
assertThat(props.getAssistantColumn()).isEqualTo("my_assistant_column");
assertThat(props.getUserColumn()).isEqualTo("my_user_column");
assertThat(props.getTimeToLiveSeconds()).isEqualTo(Duration.ofDays(1));
assertThat(props.getTimeToLive()).isEqualTo(Duration.ofDays(1));
assertThat(props.isInitializeSchema()).isFalse();
}

Expand Down