diff options
author | Christian Grothoff <christian@grothoff.org> | 2024-01-18 12:08:53 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2024-02-07 23:48:45 +0100 |
commit | e0d46f96859b33b3f04791028e30bce4f0173567 (patch) | |
tree | 18478e55759cf318da746e64353183601dfb3899 /src/auditordb/auditor_do_get_balance.sql | |
parent | b5de0afa73c0b8f7bcf988e2bc00f07f4f6cf42e (diff) | |
download | exchange-e0d46f96859b33b3f04791028e30bce4f0173567.tar.xz |
auditordb tabularasa
Diffstat (limited to 'src/auditordb/auditor_do_get_balance.sql')
-rw-r--r-- | src/auditordb/auditor_do_get_balance.sql | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/auditordb/auditor_do_get_balance.sql b/src/auditordb/auditor_do_get_balance.sql new file mode 100644 index 000000000..782a31f89 --- /dev/null +++ b/src/auditordb/auditor_do_get_balance.sql @@ -0,0 +1,47 @@ +-- +-- This file is part of TALER +-- Copyright (C) 2024 Taler Systems SA +-- +-- TALER is free software; you can redistribute it and/or modify it under the +-- terms of the GNU General Public License as published by the Free Software +-- Foundation; either version 3, or (at your option) any later version. +-- +-- TALER is distributed in the hope that it will be useful, but WITHOUT ANY +-- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +-- A PARTICULAR PURPOSE. See the GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License along with +-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +-- +-- @author Christian Grothoff + +CREATE OR REPLACE FUNCTION auditor_do_get_balance( + IN in_keys TEXT[]) +RETURNS taler_amount +LANGUAGE plpgsql +AS $$ +DECLARE + my_key TEXT; + my_rec RECORD; + my_val taler_amount; +BEGIN + FOREACH my_key IN ARRAY in_keys + LOOP + SELECT (ab.balance_value).val + ,(ab.balance_value).frac + INTO my_rec + FROM auditor_balances ab + WHERE balance_key=my_key; + IF FOUND + THEN + my_val.val = my_rec.val; + my_val.frac = my_rec.frac; + RETURN my_val; + ELSE + RETURN NULL; + END IF; + END LOOP; +END $$; + +COMMENT ON FUNCTION auditor_do_get_balance(TEXT[]) + IS 'Finds all balances associated with the array of keys given as the argument and returns them in order'; |