iot_demo_phoenix/lib/weather_tracker/weather_conditions/weather_conditions.ex

45 lines
1.0 KiB
Elixir

defmodule WeatherTracker.WeatherConditions.WeatherCondition do
use Ecto.Schema
import Ecto.Changeset
@allowed_fields [
:altitude_m,
:pressure_pa,
:temperature_c,
:co2_eq_ppm,
:tvoc_ppb,
:uva_raw,
:uvb_raw,
:uvia,
:uvib,
:uvi
]
@derive {Jason.Encoder, only: @allowed_fields}
@primary_key false
schema "weather_conditions" do
field :timestamp, :naive_datetime
field :altitude_m, :decimal
field :pressure_pa, :decimal
field :temperature_c, :decimal
field :co2_eq_ppm, :decimal
field :tvoc_ppb, :decimal
field :uva_raw, :decimal
field :uvb_raw, :decimal
field :uvia, :decimal
field :uvib, :decimal
field :uvi, :decimal
end
def create_changeset(weather_condition = %__MODULE__{}, attrs) do
timestamp =
NaiveDateTime.utc_now()
|> NaiveDateTime.truncate(:second)
weather_condition
|> cast(attrs, @allowed_fields)
|> validate_required(@allowed_fields)
|> put_change(:timestamp, timestamp)
end
end