From b806fa8305dc448a85905737d6d68c43355e56b2 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Sat, 3 Apr 2010 17:28:01 +1300 Subject: [PATCH] A new trigger allowing calendar_alarm.component to be edited. The trigger will then cause the caldav_data record to be updated with the new alarm component, and the etag is changed. --- dba/caldav_functions.sql | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/dba/caldav_functions.sql b/dba/caldav_functions.sql index a9f4ac51..f4eb6eed 100644 --- a/dba/caldav_functions.sql +++ b/dba/caldav_functions.sql @@ -1222,3 +1222,24 @@ BEGIN END $$ LANGUAGE 'PlPgSQL' STRICT; + +DROP TRIGGER alarm_changed ON calendar_alarm CASCADE; +CREATE or REPLACE FUNCTION alarm_changed() RETURNS TRIGGER AS $$ +DECLARE + oldcomponent TEXT; + newcomponent TEXT; +BEGIN + -- in case we trigger on other events in future + IF TG_OP = 'UPDATE' THEN + IF NEW.component != OLD.component THEN + UPDATE caldav_data + SET caldav_data = replace( caldav_data, OLD.component, NEW.component ), + dav_etag = md5(replace( caldav_data, OLD.component, NEW.component )) + WHERE caldav_data.dav_id = NEW.dav_id; + END IF; + END IF; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; +CREATE TRIGGER alarm_changed AFTER UPDATE ON calendar_alarm + FOR EACH ROW EXECUTE PROCEDURE alarm_changed();