DynamicDtoEnumSerializer

open class DynamicDtoEnumSerializer<E : Enum<E>>(serialName: String, entries: List<E>, pgConvention: CaseConvention = CaseConvention.SNAKE_CASE_UPPER, kotlinConvention: CaseConvention = CaseConvention.PASCAL_CASE) : KSerializer<E>

Base serializer for enum values used within org.octavius.data.type.DynamicDto.

Handles conversion between Kotlin enum names and PostgreSQL storage conventions. Extend this class to create a serializer for your specific enum type.

Usage Example

@Serializable(with = OrderStatusSerializer::class)
@PgEnum(pgConvention = CaseConvention.SNAKE_CASE_UPPER)
enum class OrderStatus { Pending, InProgress, Completed }

object OrderStatusSerializer : DynamicDtoEnumSerializer<OrderStatus>(
serialName = "OrderStatus",
entries = OrderStatus.entries,
pgConvention = CaseConvention.SNAKE_CASE_UPPER,
kotlinConvention = CaseConvention.PASCAL_CASE
)

Parameters

E

The enum type to serialize.

serialName

Name used in the serialization descriptor.

entries

List of all enum values (use EnumClass.entries).

pgConvention

Naming convention used in PostgreSQL (e.g., 'PENDING', 'in_progress').

kotlinConvention

Naming convention used in Kotlin enum (e.g., Pending, InProgress).

Constructors

Link copied to clipboard
constructor(serialName: String, entries: List<E>, pgConvention: CaseConvention = CaseConvention.SNAKE_CASE_UPPER, kotlinConvention: CaseConvention = CaseConvention.PASCAL_CASE)

Properties

Link copied to clipboard
open override val descriptor: SerialDescriptor

Functions

Link copied to clipboard
open override fun deserialize(decoder: Decoder): E
Link copied to clipboard
open override fun serialize(encoder: Encoder, value: E)