gleam-spacetraders-sdk/src/models/shipyard.gleam
Lily Rose 64f3729d0c
Some checks are pending
test / test (push) Waiting to run
Refactoring and general tidying up
2025-06-17 19:04:29 +10:00

39 lines
1.1 KiB
Gleam

import gleam/dynamic/decode.{type Decoder}
import gleam/option.{type Option}
import models/ship_type.{type ShipType}
import models/shipyard_ship.{type ShipyardShip}
import models/shipyard_symbol.{type ShipyardSymbol}
import models/shipyard_transaction.{type ShipyardTransaction}
pub type Shipyard {
Shipyard(
symbol: ShipyardSymbol,
ship_types: List(ShipType),
transactions: Option(List(ShipyardTransaction)),
ships: Option(List(ShipyardShip)),
modifications_fee: Int,
)
}
pub fn decoder() -> Decoder(Shipyard) {
use symbol <- decode.field("symbol", shipyard_symbol.decoder())
use ship_types <- decode.field("shipTypes", decode.list(ship_type.decoder()))
use transactions <- decode.optional_field(
"transactions",
option.None,
decode.optional(decode.list(shipyard_transaction.decoder())),
)
use ships <- decode.optional_field(
"ships",
option.None,
decode.optional(decode.list(shipyard_ship.decoder())),
)
use modifications_fee <- decode.field("modificationsFee", decode.int)
decode.success(Shipyard(
symbol:,
ship_types:,
transactions:,
ships:,
modifications_fee:,
))
}