| 110 | {{{ |
| 111 | CREATE OR REPLACE FUNCTION after_transaction_trigger2() |
| 112 | RETURNS TRIGGER AS $$ |
| 113 | BEGIN |
| 114 | IF NEW.type = 'Deposit' THEN |
| 115 | -- Log deposit as a self-transfer |
| 116 | INSERT INTO transfer(s_id, r_id) |
| 117 | VALUES (NEW.account_id, NEW.account_id); |
| 118 | |
| 119 | ELSIF NEW.type = 'Withdrawal' THEN |
| 120 | -- Log withdrawal as a self-transfer |
| 121 | INSERT INTO transfer(s_id, r_id) |
| 122 | VALUES (NEW.account_id, NEW.account_id); |
| 123 | |
| 124 | ELSIF NEW.type LIKE '(MKD) Transfer Out to%' OR |
| 125 | NEW.type LIKE '(USD) Transfer Out to%' OR |
| 126 | NEW.type LIKE '(EUR) Transfer Out to%' OR |
| 127 | NEW.type LIKE '(GBP) Transfer Out to%' THEN |
| 128 | |
| 129 | -- Extract recipient username and insert into transfer table |
| 130 | INSERT INTO transfer(s_id, r_id) |
| 131 | SELECT NEW.account_id, |
| 132 | (SELECT id FROM account |
| 133 | WHERE username = TRIM(SUBSTRING(NEW.type FROM POSITION('Transfer Out to ' IN NEW.type) + 15)) |
| 134 | LIMIT 1); |
| 135 | |
| 136 | END IF; |
| 137 | |
| 138 | RETURN NEW; |
| 139 | END; |
| 140 | $$ LANGUAGE plpgsql; |
| 141 | |
| 142 | CREATE TRIGGER after_transaction2 |
| 143 | AFTER INSERT ON transaction |
| 144 | FOR EACH ROW |
| 145 | EXECUTE FUNCTION after_transaction_trigger2(); |
| 146 | |
| 147 | |
| 148 | }}} |
| 149 | |