gleam-spacetraders-sdk/src/models/market_trade_good.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

41 lines
1.2 KiB
Gleam

import gleam/dynamic/decode.{type Decoder}
import gleam/option.{type Option}
import models/activity_level.{type ActivityLevel}
import models/supply_level.{type SupplyLevel}
import models/trade_good_type.{type TradeGoodType}
import models/trade_symbol.{type TradeSymbol}
pub type MarketTradeGood {
MarketTradeGood(
symbol: TradeSymbol,
type_: TradeGoodType,
trade_volume: Int,
supply: SupplyLevel,
activity: Option(ActivityLevel),
purchase_price: Int,
sell_price: Int,
)
}
pub fn decoder() -> Decoder(MarketTradeGood) {
use symbol <- decode.field("symbol", trade_symbol.decoder())
use type_ <- decode.field("type", trade_good_type.decoder())
use trade_volume <- decode.field("tradeVolume", decode.int)
use supply <- decode.field("supply", supply_level.decoder())
use activity <- decode.optional_field(
"activity",
option.None,
decode.optional(activity_level.decoder()),
)
use purchase_price <- decode.field("purchasePrice", decode.int)
use sell_price <- decode.field("sellPrice", decode.int)
decode.success(MarketTradeGood(
symbol:,
type_:,
trade_volume:,
supply:,
activity:,
purchase_price:,
sell_price:,
))
}