Add idempotent migration to ensure precip_1h_in and wx_codes columns exist, then reset weather_queued flag and clear stale observations so the cron re-fetches with precipitation data included.
32 lines
822 B
Elixir
32 lines
822 B
Elixir
defmodule Microwaveprop.Repo.Migrations.EnsurePrecipitationColumns do
|
|
use Ecto.Migration
|
|
|
|
def up do
|
|
execute """
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'surface_observations' AND column_name = 'precip_1h_in'
|
|
) THEN
|
|
ALTER TABLE surface_observations ADD COLUMN precip_1h_in double precision;
|
|
END IF;
|
|
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'surface_observations' AND column_name = 'wx_codes'
|
|
) THEN
|
|
ALTER TABLE surface_observations ADD COLUMN wx_codes character varying(255);
|
|
END IF;
|
|
END
|
|
$$;
|
|
"""
|
|
end
|
|
|
|
def down do
|
|
alter table(:surface_observations) do
|
|
remove :precip_1h_in
|
|
remove :wx_codes
|
|
end
|
|
end
|
|
end
|