18 lines
585 B
Gleam
18 lines
585 B
Gleam
import gleam/dynamic/decode.{type Decoder}
|
|
import gleam/option.{type Option}
|
|
import spacetraders_models/ship_fuel_consumed.{type ShipFuelConsumed}
|
|
|
|
pub type ShipFuel {
|
|
ShipFuel(current: Int, capacity: Int, consumed: Option(ShipFuelConsumed))
|
|
}
|
|
|
|
pub fn decoder() -> Decoder(ShipFuel) {
|
|
use current <- decode.field("current", decode.int)
|
|
use capacity <- decode.field("capacity", decode.int)
|
|
use consumed <- decode.optional_field(
|
|
"consumed",
|
|
option.None,
|
|
decode.optional(ship_fuel_consumed.decoder()),
|
|
)
|
|
decode.success(ShipFuel(current:, capacity:, consumed:))
|
|
}
|