mirror of
https://github.com/teslamate-org/teslamate.git
synced 2026-01-24 21:06:08 +08:00
71 lines
2.0 KiB
Elixir
71 lines
2.0 KiB
Elixir
defmodule TeslaMate.Log.Position do
|
|
use Ecto.Schema
|
|
import Ecto.Changeset
|
|
|
|
alias TeslaMate.Log.{Car, Drive}
|
|
|
|
schema "positions" do
|
|
field :date, :utc_datetime_usec
|
|
field :latitude, :decimal, read_after_writes: true
|
|
field :longitude, :decimal, read_after_writes: true
|
|
field :elevation, :integer
|
|
|
|
field :speed, :integer
|
|
field :power, :integer
|
|
field :odometer, :float
|
|
field :ideal_battery_range_km, :decimal, read_after_writes: true
|
|
field :est_battery_range_km, :decimal, read_after_writes: true
|
|
field :rated_battery_range_km, :decimal, read_after_writes: true
|
|
field :battery_level, :integer
|
|
field :usable_battery_level, :integer
|
|
field :battery_heater, :boolean
|
|
field :battery_heater_on, :boolean
|
|
field :battery_heater_no_power, :boolean
|
|
field :outside_temp, :decimal, read_after_writes: true
|
|
field :inside_temp, :decimal, read_after_writes: true
|
|
field :fan_status, :integer
|
|
field :driver_temp_setting, :decimal, read_after_writes: true
|
|
field :passenger_temp_setting, :decimal, read_after_writes: true
|
|
field :is_climate_on, :boolean
|
|
field :is_rear_defroster_on, :boolean
|
|
field :is_front_defroster_on, :boolean
|
|
|
|
belongs_to(:car, Car)
|
|
belongs_to(:drive, Drive)
|
|
end
|
|
|
|
@doc false
|
|
def changeset(position, attrs) do
|
|
position
|
|
|> cast(attrs, [
|
|
:car_id,
|
|
:date,
|
|
:latitude,
|
|
:longitude,
|
|
:elevation,
|
|
:speed,
|
|
:power,
|
|
:odometer,
|
|
:ideal_battery_range_km,
|
|
:est_battery_range_km,
|
|
:rated_battery_range_km,
|
|
:battery_level,
|
|
:usable_battery_level,
|
|
:battery_heater_no_power,
|
|
:battery_heater_on,
|
|
:battery_heater,
|
|
:inside_temp,
|
|
:outside_temp,
|
|
:fan_status,
|
|
:driver_temp_setting,
|
|
:passenger_temp_setting,
|
|
:is_climate_on,
|
|
:is_rear_defroster_on,
|
|
:is_front_defroster_on
|
|
])
|
|
|> validate_required([:car_id, :date, :latitude, :longitude])
|
|
|> foreign_key_constraint(:car_id)
|
|
|> foreign_key_constraint(:drive_id)
|
|
end
|
|
end
|