- 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
27 lines
592 B
Elixir
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
|