45 lines
1.0 KiB
Elixir
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
|