gotlin/examples/mapping.gt

40 lines
922 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") }
}
}