44 lines
1.4 KiB
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:,
|
|
))
|
|
}
|