added triggers for user balance calculation
This commit is contained in:
parent
0f81113d65
commit
4ad165f4a7
@ -40,3 +40,53 @@ INSERT INTO ledger_statuses (status_id, name) VALUES
|
||||
(2, 'ratified'),
|
||||
(3, 'disputed'),
|
||||
(4, 'settled');
|
||||
|
||||
DELIMITER //
|
||||
CREATE TRIGGER after_ledger_insert
|
||||
AFTER INSERT ON ledger
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.status_id = 1 THEN
|
||||
UPDATE user_balances
|
||||
SET total_pending = total_pending + NEW.amount
|
||||
WHERE user_id = NEW.user_id AND currency_code = NEW.currency_code;
|
||||
ELSEIF NEW.status_id IN (2, 4) THEN
|
||||
UPDATE user_balances
|
||||
SET total_confirmed = total_confirmed + NEW.amount
|
||||
WHERE user_id = NEW.user_id AND currency_code = NEW.currency_code;
|
||||
END IF;
|
||||
END //
|
||||
CREATE TRIGGER after_ledger_update
|
||||
AFTER UPDATE ON ledger
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF OLD.status_id = 1 THEN
|
||||
UPDATE user_balances SET total_pending = total_pending - OLD.amount
|
||||
WHERE user_id = OLD.user_id AND currency_code = OLD.currency_code;
|
||||
ELSEIF OLD.status_id IN (2, 4) THEN
|
||||
UPDATE user_balances SET total_confirmed = total_confirmed - OLD.amount
|
||||
WHERE user_id = OLD.user_id AND currency_code = OLD.currency_code;
|
||||
END IF;
|
||||
IF NEW.status_id = 1 THEN
|
||||
UPDATE user_balances SET total_pending = total_pending + NEW.amount
|
||||
WHERE user_id = NEW.user_id AND currency_code = NEW.currency_code;
|
||||
ELSEIF NEW.status_id IN (2, 4) THEN
|
||||
UPDATE user_balances SET total_confirmed = total_confirmed + NEW.amount
|
||||
WHERE user_id = NEW.user_id AND currency_code = NEW.currency_code;
|
||||
END IF;
|
||||
END //
|
||||
CREATE TRIGGER after_ledger_delete
|
||||
AFTER DELETE ON ledger
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF OLD.status_id = 1 THEN
|
||||
UPDATE user_balances SET total_pending = total_pending - OLD.amount
|
||||
WHERE user_id = OLD.user_id AND currency_code = OLD.currency_code;
|
||||
ELSEIF OLD.status_id IN (2, 4) THEN
|
||||
UPDATE user_balances SET total_confirmed = total_confirmed - OLD.amount
|
||||
WHERE user_id = OLD.user_id AND currency_code = OLD.currency_code;
|
||||
END IF;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user