diff --git a/layers/housenumber/housenumber_centroid.sql b/layers/housenumber/housenumber_centroid.sql index 101f701f..1d1cf83a 100644 --- a/layers/housenumber/housenumber_centroid.sql +++ b/layers/housenumber/housenumber_centroid.sql @@ -7,3 +7,37 @@ END; $$ LANGUAGE plpgsql; SELECT convert_housenumber_point(); + +-- Handle updates + +CREATE SCHEMA housenumber; + +CREATE TABLE IF NOT EXISTS housenumber.updates(id serial primary key, t text, unique (t)); +CREATE OR REPLACE FUNCTION housenumber.flag() RETURNS trigger AS $$ +BEGIN + INSERT INTO housenumber.updates(t) VALUES ('y') ON CONFLICT(t) DO NOTHING; + RETURN null; +END; +$$ language plpgsql; + +CREATE OR REPLACE FUNCTION housenumber.refresh() RETURNS trigger AS + $BODY$ + BEGIN + RAISE LOG 'Refresh housenumber'; + SELECT convert_housenumber_point(); + DELETE FROM housenumber.updates; + RETURN null; + END; + $BODY$ +language plpgsql; + +CREATE TRIGGER trigger_flag + AFTER INSERT OR UPDATE OR DELETE ON osm_housenumber_point + FOR EACH STATEMENT + EXECUTE PROCEDURE housenumber.flag(); + +CREATE CONSTRAINT TRIGGER trigger_refresh + AFTER INSERT ON housenumber.updates + INITIALLY DEFERRED + FOR EACH ROW + EXECUTE PROCEDURE housenumber.refresh(); diff --git a/layers/poi/poi_polygon_update.sql b/layers/poi/poi_polygon_update.sql index 2840f297..51259e5c 100644 --- a/layers/poi/poi_polygon_update.sql +++ b/layers/poi/poi_polygon_update.sql @@ -9,3 +9,36 @@ $$ LANGUAGE plpgsql; SELECT convert_poi_point(); +-- Handle updates + +CREATE SCHEMA poi; + +CREATE TABLE IF NOT EXISTS poi.updates(id serial primary key, t text, unique (t)); +CREATE OR REPLACE FUNCTION poi.flag() RETURNS trigger AS $$ +BEGIN + INSERT INTO poi.updates(t) VALUES ('y') ON CONFLICT(t) DO NOTHING; + RETURN null; +END; +$$ language plpgsql; + +CREATE OR REPLACE FUNCTION poi.refresh() RETURNS trigger AS + $BODY$ + BEGIN + RAISE LOG 'Refresh poi'; + SELECT convert_poi_point(); + DELETE FROM poi.updates; + RETURN null; + END; + $BODY$ +language plpgsql; + +CREATE TRIGGER trigger_flag + AFTER INSERT OR UPDATE OR DELETE ON osm_poi_polygon + FOR EACH STATEMENT + EXECUTE PROCEDURE poi.flag(); + +CREATE CONSTRAINT TRIGGER trigger_refresh + AFTER INSERT ON poi.updates + INITIALLY DEFERRED + FOR EACH ROW + EXECUTE PROCEDURE poi.refresh();