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

37 lines
764 B
Gleam

import gleam/dynamic/decode.{type Decoder}
import gleam/json.{type Json}
pub type SurveySize {
Small
Moderate
Large
}
pub fn parse(value: String) -> Result(SurveySize, Nil) {
case value {
"SMALL" -> Ok(Small)
"MODERATE" -> Ok(Moderate)
"LARGE" -> Ok(Large)
_ -> Error(Nil)
}
}
pub fn decoder() -> Decoder(SurveySize) {
use value <- decode.then(decode.string)
case parse(value) {
Ok(survey_size) -> decode.success(survey_size)
Error(Nil) -> decode.failure(Small, "SurveySize")
}
}
pub fn to_string(survey_size: SurveySize) -> String {
case survey_size {
Small -> "SMALL"
Moderate -> "MODERATE"
Large -> "LARGE"
}
}
pub fn encode(survey_size: SurveySize) -> Json {
json.string(to_string(survey_size))
}