EnumWithCaseConventionSerializer
A specialized serializer for mapping Kotlin Enums to their PostgreSQL representations.
This serializer is essential when your Enums use different naming conventions in Kotlin (e.g., PascalCase) and PostgreSQL (e.g., SNAKE_CASE_UPPER). It ensures that the value stored in the JSONB payload correctly correctly matches the database's expectations.
Key Features
Bidirectional Mapping: Automatically converts names during both serialization and deserialization.
Convention Support: Integrates with CaseConvention for flexible name transformations.
Usage Example
@Serializable(with = LegionStatusSerializer::class)
@PgEnum(pgConvention = CaseConvention.SNAKE_CASE_UPPER)
enum class LegionStatus { Garrisoned, OnMarch, InBattle, Victorious }
object LegionStatusSerializer : EnumWithCaseConventionSerializer<LegionStatus>(
enumName = "LegionStatus",
entries = LegionStatus.entries,
pgConvention = CaseConvention.SNAKE_CASE_UPPER,
kotlinConvention = CaseConvention.PASCAL_CASE
)Parameters
The enum class to be serialized.
A unique identifier for the enum in the serialization descriptor.
The list of all enum values (typically provided via EnumClass.entries).
The naming convention used in the database (default: SNAKE_CASE_UPPER).
The naming convention used in your Kotlin code (default: PASCAL_CASE).