prop/lib/microwaveprop/terrain/terrain_profile.ex
Graham McIntire 254e64dedc
Rename qsos to contacts throughout codebase, keep DB table name
Rename all modules, functions, variables, routes, and UI text from
qso/qsos to contact/contacts. Database table stays as "qsos" to avoid
migration. Add /qsos -> /contacts redirects for old URLs.
2026-04-01 11:25:04 -05:00

34 lines
1 KiB
Elixir

defmodule Microwaveprop.Terrain.TerrainProfile do
@moduledoc false
use Ecto.Schema
import Ecto.Changeset
@primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id
schema "terrain_profiles" do
belongs_to :contact, Microwaveprop.Radio.Contact, foreign_key: :qso_id
field :sample_count, :integer
field :path_points, {:array, :map}
field :max_elevation_m, :float
field :min_clearance_m, :float
field :diffraction_db, :float
field :fresnel_hit_count, :integer
field :obstructed_count, :integer
field :verdict, :string
timestamps(type: :utc_datetime)
end
@required_fields ~w(qso_id sample_count path_points verdict)a
@optional_fields ~w(max_elevation_m min_clearance_m diffraction_db fresnel_hit_count obstructed_count)a
def changeset(profile, attrs) do
profile
|> cast(attrs, @required_fields ++ @optional_fields)
|> validate_required(@required_fields)
|> foreign_key_constraint(:qso_id)
|> unique_constraint([:qso_id])
end
end