27 lines
855 B
Gleam
27 lines
855 B
Gleam
import gleam/dynamic/decode.{type Decoder}
|
|
import gleam/time/timestamp.{type Timestamp}
|
|
import spacetraders_models/ship_nav_route_waypoint.{type ShipNavRouteWaypoint}
|
|
import spacetraders_sdk/internal/time
|
|
|
|
pub type ShipNavRoute {
|
|
ShipNavRoute(
|
|
destination: ShipNavRouteWaypoint,
|
|
origin: ShipNavRouteWaypoint,
|
|
departure_time: Timestamp,
|
|
arrival: Timestamp,
|
|
)
|
|
}
|
|
|
|
pub fn decoder() -> Decoder(ShipNavRoute) {
|
|
use destination <- decode.field(
|
|
"destination",
|
|
ship_nav_route_waypoint.decoder(),
|
|
)
|
|
use origin <- decode.field("origin", ship_nav_route_waypoint.decoder())
|
|
use departure_time <- decode.field(
|
|
"departureTime",
|
|
time.rfc3339_timestamp_decoder(),
|
|
)
|
|
use arrival <- decode.field("arrival", time.rfc3339_timestamp_decoder())
|
|
decode.success(ShipNavRoute(destination:, origin:, departure_time:, arrival:))
|
|
}
|