from migrations.fixtures.delphi_tables.v1.triggers.base_trigger import BaseTrigger class UserLabelTrigger(BaseTrigger): table = "UserLabel" function_name = "log_user_label_changes" def on_insert(self): return "INSERT INTO user_labels(user_id, decibel_label_id) VALUES(NEW.user_id, NEW.label_id);" def on_update(self): return """ IF OLD.user_id = NEW.user_id THEN UPDATE user_labels SET decibel_label_id = NEW.label_id WHERE user_id = NEW.user_id; ELSIF OLD.label_id = NEW.label_id THEN UPDATE user_labels SET user_id = NEW.user_id WHERE decibel_label_id = NEW.decibel_label_id; END IF; """ def on_delete(self): return "DELETE FROM user_labels WHERE user_id = OLD.user_id AND decibel_label_id = OLD.label_id;"