40 lines
916 B
Text
40 lines
916 B
Text
package main
|
|
|
|
data class AddressEntity(var city: String)
|
|
data class AddressResponse(var city: String)
|
|
|
|
enum EntityState {
|
|
Active
|
|
Failed(String)
|
|
}
|
|
|
|
enum ResponseState {
|
|
Active
|
|
Failed(String)
|
|
Pending
|
|
}
|
|
|
|
data class AccountEntity(
|
|
var id: String,
|
|
var address: AddressEntity,
|
|
var labels: List<String>,
|
|
var state: EntityState
|
|
)
|
|
|
|
data class AccountResponse(
|
|
var address: AddressResponse,
|
|
var id: String,
|
|
var labels: List<String>,
|
|
var state: ResponseState
|
|
)
|
|
|
|
fun main() {
|
|
val entity = AccountEntity("account-1", AddressEntity("Berlin"), listOf("active"), EntityState.Active)
|
|
val response = entity.mapTo<AccountResponse>()
|
|
println(response.address.city)
|
|
match (response.state) {
|
|
ResponseState.Active -> { println("active") }
|
|
ResponseState.Failed(reason) -> { println(reason) }
|
|
ResponseState.Pending -> { println("pending") }
|
|
}
|
|
}
|