gleam-spacetraders-sdk/src/spacetraders_sdk/models/ship_engine.gleam

44 lines
1.4 KiB
Gleam

import gleam/dynamic/decode.{type Decoder}
import spacetraders_sdk/models/engine_symbol.{type EngineSymbol}
import spacetraders_sdk/models/ship_component_condition.{
type ShipComponentCondition,
}
import spacetraders_sdk/models/ship_component_integrity.{
type ShipComponentIntegrity,
}
import spacetraders_sdk/models/ship_component_quality.{type ShipComponentQuality}
import spacetraders_sdk/models/ship_requirements.{type ShipRequirements}
pub type ShipEngine {
ShipEngine(
symbol: EngineSymbol,
name: String,
condition: ShipComponentCondition,
integrity: ShipComponentIntegrity,
description: String,
speed: Int,
requirements: ShipRequirements,
quality: ShipComponentQuality,
)
}
pub fn decoder() -> Decoder(ShipEngine) {
use symbol <- decode.field("symbol", engine_symbol.decoder())
use name <- decode.field("name", decode.string)
use condition <- decode.field("condition", ship_component_condition.decoder())
use integrity <- decode.field("integrity", ship_component_integrity.decoder())
use description <- decode.field("description", decode.string)
use speed <- decode.field("speed", decode.int)
use requirements <- decode.field("requirements", ship_requirements.decoder())
use quality <- decode.field("quality", ship_component_quality.decoder())
decode.success(ShipEngine(
symbol:,
name:,
condition:,
integrity:,
description:,
speed:,
requirements:,
quality:,
))
}