diff options
author | Joseph <Joseph.xu@efrei.net> | 2022-11-16 11:44:48 -0500 |
---|---|---|
committer | Joseph <Joseph.xu@efrei.net> | 2022-11-21 10:40:08 -0500 |
commit | f60e38077c7e2ddd2ac6ae3e35c4b27f3225512a (patch) | |
tree | c867e47b3edefb8324f58157bbf0e12678cc17df /src/exchangedb/procedures.sql | |
parent | 9d43bf92c45e771afdada11851393e0a82a91078 (diff) | |
download | exchange-f60e38077c7e2ddd2ac6ae3e35c4b27f3225512a.tar.xz |
some modifications on batch_test for reserves_in
Diffstat (limited to 'src/exchangedb/procedures.sql')
-rw-r--r-- | src/exchangedb/procedures.sql | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/exchangedb/procedures.sql b/src/exchangedb/procedures.sql index a732ef75f..a9d90294e 100644 --- a/src/exchangedb/procedures.sql +++ b/src/exchangedb/procedures.sql @@ -2521,3 +2521,61 @@ BEGIN END $$; COMMIT; + +/*************************************************************/ + + +CREATE OR REPLACE FUNCTION bash_reserves_in( + IN amount_val INT8, + IN amount_frac INT4, + IN rpub BYTEA, + IN now INT8, + IN min_reserve_gc INT8, + OUT reserve_found BOOLEAN, + OUT ruuid INT8) +LANGUAGE plpgsql +AS $$ +DECLARE + existed BOOLEAN; + not_existed BOOLEAN; +BEGIN + SELECT reserves.reserve_uuid into ruuid from reserves + where reserves.reserve_pub = rpub; + IF ruuid IS NOT NULL + THEN + existed = TRUE; + UPDATE reserves + SET (current_balance_val + ,current_balance_frac + ,expiration_date + ,gc_date) = + (amount_val + ,amount_frac + ,now + ,min_reserve_gc) + WHERE + reserve_pub = rpub + RETURNING existed into reserve_found; + END IF; + IF NOT FOUND + THEN + SELECT MAX(reserve_uuid)+1 into ruuid from reserves; + existed = FALSE; + INSERT INTO reserves + (reserve_uuid + ,reserve_pub + ,current_balance_val + ,current_balance_frac + ,expiration_date + ,gc_date) + VALUES + (ruuid + ,rpub + ,amount_val + ,amount_frac + ,now + ,min_reserve_gc) RETURNING existed into reserve_found; + + END IF; + +END $$; |