gleam-spacetraders-sdk/src/models/contract.gleam
Lily Rose cc8edbed02
Some checks are pending
test / test (push) Waiting to run
Add functioning sdk
2025-06-17 01:43:06 +10:00

38 lines
1,014 B
Gleam

import gleam/dynamic/decode.{type Decoder}
import gleam/option.{type Option}
import models/contract_terms.{type ContractTerms}
import utils/decode as decode_utils
pub type Contract {
Contract(
id: String,
faction_symbol: String,
type_: String,
terms: ContractTerms,
accepted: Bool,
fulfilled: Bool,
deadline_to_accept: Option(String),
)
}
pub fn decoder() -> Decoder(Contract) {
use id <- decode.field("id", decode.string)
use faction_symbol <- decode.field("factionSymbol", decode.string)
use type_ <- decode.field("type", decode.string)
use terms <- decode.field("terms", contract_terms.decoder())
use accepted <- decode.field("accepted", decode.bool)
use fulfilled <- decode.field("fulfilled", decode.bool)
use deadline_to_accept <- decode_utils.field_key_value_optional(
"deadlineToAccept",
decode.string,
)
decode.success(Contract(
id:,
faction_symbol:,
type_:,
terms:,
accepted:,
fulfilled:,
deadline_to_accept:,
))
}