prop/lib/microwaveprop/terrain.ex
Graham McIntire dc66252fdc
Reduce dead tuples by using conditional upserts and skip-on-conflict
- HRRR, IEMRE, terrain: on_conflict: :nothing (immutable data)
- Surface obs, soundings, solar: conditional WHERE (only update when values differ)
- set_enrichment_status!: skip rows already at target status
2026-04-04 17:32:57 -05:00

27 lines
592 B
Elixir

defmodule Microwaveprop.Terrain do
@moduledoc false
import Ecto.Query
alias Microwaveprop.Repo
alias Microwaveprop.Terrain.TerrainProfile
def upsert_terrain_profile(attrs) do
%TerrainProfile{}
|> TerrainProfile.changeset(attrs)
|> Repo.insert(
on_conflict: :nothing,
conflict_target: [:contact_id]
)
end
def get_terrain_profile(contact_id) do
Repo.get_by(TerrainProfile, contact_id: contact_id)
end
def has_terrain_profile?(contact_id) do
TerrainProfile
|> where([t], t.contact_id == ^contact_id)
|> Repo.exists?()
end
end