blob: 782a31f89c538ab2aa8814b9c6c0ef7d83994598 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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';
|