/* * Copyright 2025 Google. This software is provided as-is, without warranty or representation for any use or purpose. * Your use of it is subject to your agreement with Google. */ package com.example.config; import com.example.dto.dialogflow.conversation.ConversationMessageDTO; import com.example.dto.dialogflow.conversation.ConversationSessionDTO; import com.example.dto.dialogflow.notification.NotificationSessionDTO; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory; import org.springframework.data.redis.core.ReactiveRedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfig { @Bean public ReactiveRedisTemplate reactiveRedisTemplate(ReactiveRedisConnectionFactory factory, ObjectMapper objectMapper) { Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(objectMapper, ConversationSessionDTO.class); RedisSerializationContext.RedisSerializationContextBuilder builder = RedisSerializationContext.newSerializationContext(new StringRedisSerializer()); RedisSerializationContext context = builder.value(serializer).build(); return new ReactiveRedisTemplate<>(factory, context); } @Bean public ReactiveRedisTemplate reactiveNotificationRedisTemplate(ReactiveRedisConnectionFactory factory, ObjectMapper objectMapper) { Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(objectMapper, NotificationSessionDTO.class); RedisSerializationContext.RedisSerializationContextBuilder builder = RedisSerializationContext.newSerializationContext(new StringRedisSerializer()); RedisSerializationContext context = builder.value(serializer).build(); return new ReactiveRedisTemplate<>(factory, context); } @Bean public ReactiveRedisTemplate reactiveMessageRedisTemplate(ReactiveRedisConnectionFactory factory, ObjectMapper objectMapper) { Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(objectMapper, ConversationMessageDTO.class); RedisSerializationContext.RedisSerializationContextBuilder builder = RedisSerializationContext.newSerializationContext(new StringRedisSerializer()); RedisSerializationContext context = builder.value(serializer).build(); return new ReactiveRedisTemplate<>(factory, context); } @Bean public ReactiveRedisTemplate reactiveStringRedisTemplate(ReactiveRedisConnectionFactory factory) { return new ReactiveRedisTemplate<>(factory, RedisSerializationContext.string()); } }