diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c8296c0..1cad8af 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ dokka = "2.2.0" mavenPublish = "0.37.0" coroutines = "1.11.0" serialization = "1.11.0" -lettuce = "6.5.1.RELEASE" +lettuce = "7.6.0.RELEASE" postgresql = "42.7.13" hikari = "7.1.0" testcontainers = "2.0.5" diff --git a/kmemo-store-redis/src/main/kotlin/dev/kmemo/store/redis/RedisStore.kt b/kmemo-store-redis/src/main/kotlin/dev/kmemo/store/redis/RedisStore.kt index 43c4543..567fcfc 100644 --- a/kmemo-store-redis/src/main/kotlin/dev/kmemo/store/redis/RedisStore.kt +++ b/kmemo-store-redis/src/main/kotlin/dev/kmemo/store/redis/RedisStore.kt @@ -287,13 +287,20 @@ public class RedisStore( } } - private enum class Ft : ProtocolKeyword { - CREATE, - SEARCH, - ; + /** + * A RediSearch command keyword. Deliberately not an enum: Lettuce 7 added `name()` to + * [ProtocolKeyword], and a Kotlin enum's implicit `name` property compiles to the same JVM + * signature, so the two clash and the class no longer compiles. + */ + private class Ft private constructor(private val keyword: String) : ProtocolKeyword { + private val encoded = ("FT.$keyword").toByteArray(US_ASCII) - private val encoded = ("FT." + name).toByteArray(US_ASCII) override fun getBytes(): ByteArray = encoded + + companion object { + val CREATE = Ft("CREATE") + val SEARCH = Ft("SEARCH") + } } private companion object {