Files
archived-teslamate/lib/teslamate/log/charge.ex
2020-04-11 14:49:44 +02:00

68 lines
1.9 KiB
Elixir

defmodule TeslaMate.Log.Charge do
use Ecto.Schema
import Ecto.Changeset
alias TeslaMate.Log.ChargingProcess
schema "charges" do
field :date, :utc_datetime_usec
field :battery_heater, :boolean
field :battery_heater_on, :boolean
field :battery_heater_no_power, :boolean
field :battery_level, :integer
field :usable_battery_level, :integer
field :charge_energy_added, :decimal, read_after_writes: true
field :charger_actual_current, :integer
field :charger_phases, :integer, default: 1
field :charger_pilot_current, :integer
field :charger_power, :integer
field :charger_voltage, :integer
field :conn_charge_cable, :string
field :fast_charger_present, :boolean
field :fast_charger_brand, :string
field :fast_charger_type, :string
field :ideal_battery_range_km, :decimal, read_after_writes: true
field :rated_battery_range_km, :decimal, read_after_writes: true
field :not_enough_power_to_heat, :boolean
field :outside_temp, :decimal, read_after_writes: true
belongs_to :charging_process, ChargingProcess
end
@doc false
def changeset(charge, attrs) do
charge
|> cast(attrs, [
:date,
:battery_heater_no_power,
:battery_heater_on,
:battery_heater,
:battery_level,
:usable_battery_level,
:charge_energy_added,
:charger_actual_current,
:charger_phases,
:charger_pilot_current,
:charger_power,
:charger_voltage,
:conn_charge_cable,
:fast_charger_present,
:fast_charger_brand,
:fast_charger_type,
:ideal_battery_range_km,
:rated_battery_range_km,
:not_enough_power_to_heat,
:outside_temp
])
|> validate_required([
:date,
:charging_process_id,
:charge_energy_added,
:charger_power,
:ideal_battery_range_km
])
|> validate_number(:charger_phases, greater_than: 0)
|> foreign_key_constraint(:charging_process_id)
end
end