aboutsummaryrefslogtreecommitdiff
path: root/src/auditordb/auditor_do_get_balance.sql
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2024-01-18 12:08:53 +0100
committerChristian Grothoff <christian@grothoff.org>2024-02-07 23:48:45 +0100
commite0d46f96859b33b3f04791028e30bce4f0173567 (patch)
tree18478e55759cf318da746e64353183601dfb3899 /src/auditordb/auditor_do_get_balance.sql
parentb5de0afa73c0b8f7bcf988e2bc00f07f4f6cf42e (diff)
downloadexchange-e0d46f96859b33b3f04791028e30bce4f0173567.tar.xz
auditordb tabularasa
Diffstat (limited to 'src/auditordb/auditor_do_get_balance.sql')
-rw-r--r--src/auditordb/auditor_do_get_balance.sql47
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';