28 lines
844 B
Gleam
28 lines
844 B
Gleam
import gleam/dynamic/decode.{type Decoder}
|
|
import spacetraders_models/trade_symbol.{type TradeSymbol}
|
|
import spacetraders_models/waypoint_symbol.{type WaypointSymbol}
|
|
|
|
pub type ContractDeliverGood {
|
|
ContractDeliverGood(
|
|
trade_symbol: TradeSymbol,
|
|
destination_symbol: WaypointSymbol,
|
|
units_required: Int,
|
|
units_fulfilled: Int,
|
|
)
|
|
}
|
|
|
|
pub fn decoder() -> Decoder(ContractDeliverGood) {
|
|
use trade_symbol <- decode.field("tradeSymbol", trade_symbol.decoder())
|
|
use destination_symbol <- decode.field(
|
|
"destinationSymbol",
|
|
waypoint_symbol.decoder(),
|
|
)
|
|
use units_required <- decode.field("unitsRequired", decode.int)
|
|
use units_fulfilled <- decode.field("unitsFulfilled", decode.int)
|
|
decode.success(ContractDeliverGood(
|
|
trade_symbol:,
|
|
destination_symbol:,
|
|
units_required:,
|
|
units_fulfilled:,
|
|
))
|
|
}
|