Something went wrong. Try again.
🐿️ Type safe SQL in Gleam
Something went wrong. Try again.
921 B · 45 lines
at bits-support
12345678910111213141516171819202122232425262728293031323334353637383940414243444546---version: 1.4.0title: enum decodingfile: ./test/squirrel_test.gleamtest_name: enum_decoding_test---import gleam/dynamic/decodeimport pogpub type QueryRow { QueryRow(squirrel_colour: SquirrelColour)}pub fn query( db: pog.Connection,) -> Result(pog.Returned(QueryRow), pog.QueryError) { let decoder = { use squirrel_colour <- decode.field(0, squirrel_colour_decoder()) decode.success(QueryRow(squirrel_colour:)) } "select 'red'::squirrel_colour" |> pog.query |> pog.returning(decoder) |> pog.execute(db)}pub type SquirrelColour { LightBrown Grey Red}fn squirrel_colour_decoder() -> decode.Decoder(SquirrelColour) { use squirrel_colour <- decode.then(decode.string) case squirrel_colour { "light brown" -> decode.success(LightBrown) "grey" -> decode.success(Grey) "red" -> decode.success(Red) _ -> decode.failure(LightBrown, "SquirrelColour") }}