Packages
zoi
0.5.3
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.1
0.16.0
0.15.0
0.14.1
0.14.0
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.9.0-rc.1
0.9.0-rc.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Zoi is a schema validation library for Elixir, designed to provide a simple and flexible way to define and validate data.
Current section
Files
Jump to
Current section
Files
lib/asdf.ex
# defmodule Asdf do
# @fiat_crypto_symbols Zoi.enum(["USD", "USDT", "BRL", "EUR", "JPY", "BTC"])
#
# @quote Zoi.map(
# @fiat_crypto_symbols,
# Zoi.object(
# %{
# price:
# Zoi.optional(Zoi.decimal(coerce: true) |> Zoi.transform({__MODULE__, :hi, []})),
# last_updated: Zoi.datetime(coerce: true)
# },
# coerce: true
# )
# )
# @currency_data Zoi.object(%{quote: @quote}, coerce: true)
# # @schema Zoi.object(
# # %{
# # data: Zoi.map(@fiat_crypto_symbols, @currency_data)
# # },
# # coerce: true
# # )
#
# @schema Zoi.object(%{data: Zoi.array(@currency_data)}, coerce: true)
#
# def hi(_decimal, _ctx) do
# 2
# end
#
# def parse() do
# params = %{
# "data" => [
# %{
# "amount" => 1,
# "id" => 2790,
# "last_updated" => "2025-08-28T14:34:58.000Z",
# "name" => "Euro",
# "quote" => %{
# "BRL" => %{
# "last_updated" => "2025-08-28T14:35:58.000Z",
# "price" => 6.320665443882321
# },
# "BTC" => %{
# "last_updated" => "2025-08-28T14:35:00.000Z",
# "price" => 1.036447497212581e-5
# },
# "JPY" => %{
# "last_updated" => "2025-08-28T14:35:58.000Z",
# "price" => 171.68195147035894
# },
# "USD" => %{
# "last_updated" => "2025-08-28T14:34:58.000Z",
# "price" => 1.16826524294076
# },
# "USDT" => %{
# "last_updated" => "2025-08-28T14:35:00.000Z",
# "price" => 1.168228877468982
# }
# },
# "symbol" => "EUR"
# }
# ],
# "status" => %{
# "credit_count" => 5,
# "elapsed" => 67,
# "error_code" => 0,
# "error_message" => nil,
# "notice" => nil,
# "timestamp" => "2025-08-28T14:37:13.531Z"
# }
# }
#
# Zoi.parse(@schema, params)
# end
# end