37 lines
994 B
Elixir
37 lines
994 B
Elixir
defmodule Aprsme.Repo.Migrations.RecreateNotifyPacketsInsertFunction do
|
|
use Ecto.Migration
|
|
|
|
def up do
|
|
execute "DROP TRIGGER IF EXISTS packets_notify_insert ON packets;"
|
|
execute "DROP FUNCTION IF EXISTS notify_packets_insert();"
|
|
|
|
execute """
|
|
CREATE OR REPLACE FUNCTION notify_packets_insert() RETURNS trigger AS $$
|
|
DECLARE
|
|
payload TEXT;
|
|
BEGIN
|
|
payload := json_build_object(
|
|
'id', NEW.id,
|
|
'sender', NEW.sender,
|
|
'lat', NEW.lat,
|
|
'lon', NEW.lon,
|
|
'inserted_at', NEW.inserted_at
|
|
)::text;
|
|
PERFORM pg_notify('aprs_packets', payload);
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
"""
|
|
|
|
execute """
|
|
CREATE TRIGGER packets_notify_insert
|
|
AFTER INSERT ON packets
|
|
FOR EACH ROW EXECUTE FUNCTION notify_packets_insert();
|
|
"""
|
|
end
|
|
|
|
def down do
|
|
execute "DROP TRIGGER IF EXISTS packets_notify_insert ON packets;"
|
|
execute "DROP FUNCTION IF EXISTS notify_packets_insert();"
|
|
end
|
|
end
|