from migrations.fixtures.delphi_tables.v8.triggers.base_trigger import BaseTrigger, TriggerType class UserTrigger(BaseTrigger): table = "User" function_name = "log_user_changes" type = TriggerType.ROW.value def on_update(self): return f""" IF NEW.manager_id != OLD.manager_id THEN UPDATE connectors SET manager = manager_table.email FROM ({self.__take_manager_email()}) as manager_table WHERE connectors.user_id = NEW.id; END IF; """ def __take_manager_email(self, state="NEW"): return f""" SELECT mt.email as email FROM "User" u LEFT OUTER JOIN "User" mt ON mt.id = u.manager_id WHERE u.id = {state}.id """