package com.vincent.rsf.server.ai.store;
|
|
import com.vincent.rsf.server.ai.config.AiDefaults;
|
import com.vincent.rsf.server.ai.dto.AiResolvedConfig;
|
import com.vincent.rsf.server.ai.store.support.AiRedisExecutor;
|
import com.vincent.rsf.server.ai.store.support.AiRedisIndexSupport;
|
import com.vincent.rsf.server.ai.store.support.AiRedisKeys;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Component;
|
|
@Component
|
@RequiredArgsConstructor
|
public class AiConfigCacheStore {
|
|
private final AiRedisExecutor aiRedisExecutor;
|
private final AiRedisIndexSupport aiRedisIndexSupport;
|
private final AiRedisKeys aiRedisKeys;
|
|
public AiResolvedConfig getResolvedConfig(Long tenantId, String promptCode, Long aiParamId) {
|
return aiRedisExecutor.readJson(aiRedisKeys.buildConfigKey(tenantId, promptCode, aiParamId), AiResolvedConfig.class);
|
}
|
|
public void cacheResolvedConfig(Long tenantId, String promptCode, Long aiParamId, AiResolvedConfig config) {
|
String key = aiRedisKeys.buildConfigKey(tenantId, promptCode, aiParamId);
|
aiRedisExecutor.writeJson(key, config, AiDefaults.CONFIG_CACHE_TTL_SECONDS);
|
aiRedisIndexSupport.remember(aiRedisKeys.buildConfigIndexKey(tenantId), key);
|
}
|
|
public void evictTenantConfigCaches(Long tenantId) {
|
aiRedisIndexSupport.deleteTrackedKeys(aiRedisKeys.buildConfigIndexKey(tenantId));
|
}
|
}
|