gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] branch master updated: create coin history table via tr


From: gnunet
Subject: [taler-exchange] branch master updated: create coin history table via triggers
Date: Sat, 16 Sep 2023 14:04:44 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 94a313d7 create coin history table via triggers
94a313d7 is described below

commit 94a313d74b403f7afa130a999ab2171414f86a46
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sat Sep 16 14:04:36 2023 +0200

    create coin history table via triggers
---
 src/exchangedb/0002-purse_decision.sql         | 38 +++++++++++++++++++
 src/exchangedb/0002-purse_deposits.sql         | 38 ++++++++++++++++++-
 src/exchangedb/0002-recoup.sql                 | 14 +++++--
 src/exchangedb/0002-recoup_refresh.sql         | 51 +++++++++++++++++++++++++-
 src/exchangedb/0002-refresh_commitments.sql    | 36 ++++++++++++++++++
 src/exchangedb/0002-refunds.sql                | 38 ++++++++++++++++++-
 src/exchangedb/0002-reserves_open_deposits.sql | 38 ++++++++++++++++++-
 src/exchangedb/pg_get_coin_transactions.c      | 18 ++++-----
 8 files changed, 255 insertions(+), 16 deletions(-)

diff --git a/src/exchangedb/0002-purse_decision.sql 
b/src/exchangedb/0002-purse_decision.sql
index 8ebd80da..3eeeea8a 100644
--- a/src/exchangedb/0002-purse_decision.sql
+++ b/src/exchangedb/0002-purse_decision.sql
@@ -69,6 +69,39 @@ END
 $$;
 
 
+CREATE OR REPLACE FUNCTION purse_decision_insert_trigger()
+  RETURNS trigger
+  LANGUAGE plpgsql
+  AS $$
+BEGIN
+  INSERT INTO exchange.coin_history
+    (coin_pub
+    ,table_name
+    ,serial_id)
+  SELECT
+    pd.coin_pub
+   ,'purse_decision'
+   ,NEW.purse_decision_serial_id
+  FROM purse_deposits pd
+  WHERE purse_pub = NEW.purse_pub;
+  RETURN NEW;
+END $$;
+COMMENT ON FUNCTION purse_decision_insert_trigger()
+  IS 'Automatically generate coin history entry.';
+
+
+CREATE FUNCTION master_table_purse_decision()
+RETURNS VOID
+LANGUAGE plpgsql
+AS $$
+BEGIN
+  CREATE TRIGGER purse_decision_on_insert
+    AFTER INSERT
+     ON purse_decision
+     FOR EACH ROW EXECUTE FUNCTION purse_decision_insert_trigger();
+END $$;
+
+
 INSERT INTO exchange_tables
     (name
     ,version
@@ -85,4 +118,9 @@ INSERT INTO exchange_tables
     ,'exchange-0002'
     ,'constrain'
     ,TRUE
+    ,FALSE),
+    ('purse_decision'
+    ,'exchange-0002'
+    ,'master'
+    ,TRUE
     ,FALSE);
diff --git a/src/exchangedb/0002-purse_deposits.sql 
b/src/exchangedb/0002-purse_deposits.sql
index e83e0738..2d2be515 100644
--- a/src/exchangedb/0002-purse_deposits.sql
+++ b/src/exchangedb/0002-purse_deposits.sql
@@ -1,6 +1,6 @@
 --
 -- This file is part of TALER
--- Copyright (C) 2014--2022 Taler Systems SA
+-- Copyright (C) 2014--2023 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
@@ -121,6 +121,37 @@ END
 $$;
 
 
+CREATE OR REPLACE FUNCTION purse_deposits_insert_trigger()
+  RETURNS trigger
+  LANGUAGE plpgsql
+  AS $$
+BEGIN
+  INSERT INTO exchange.coin_history
+    (coin_pub
+    ,table_name
+    ,serial_id)
+ VALUES
+    (NEW.coin_pub
+    ,'purse_deposits'
+    ,NEW.purse_deposit_serial_id);
+  RETURN NEW;
+END $$;
+COMMENT ON FUNCTION purse_deposits_insert_trigger()
+  IS 'Automatically generate coin history entry.';
+
+
+CREATE FUNCTION master_table_purse_deposits()
+RETURNS VOID
+LANGUAGE plpgsql
+AS $$
+BEGIN
+  CREATE TRIGGER purse_deposits_on_insert
+    AFTER INSERT
+     ON purse_deposits
+     FOR EACH ROW EXECUTE FUNCTION purse_deposits_insert_trigger();
+END $$;
+
+
 INSERT INTO exchange_tables
     (name
     ,version
@@ -142,4 +173,9 @@ INSERT INTO exchange_tables
     ,'exchange-0002'
     ,'foreign'
     ,TRUE
+    ,FALSE),
+    ('purse_deposits'
+    ,'exchange-0002'
+    ,'master'
+    ,TRUE
     ,FALSE);
diff --git a/src/exchangedb/0002-recoup.sql b/src/exchangedb/0002-recoup.sql
index c3f96f49..600091b6 100644
--- a/src/exchangedb/0002-recoup.sql
+++ b/src/exchangedb/0002-recoup.sql
@@ -1,6 +1,6 @@
 --
 -- This file is part of TALER
--- Copyright (C) 2014--2022 Taler Systems SA
+-- Copyright (C) 2014--2023 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
@@ -171,10 +171,18 @@ BEGIN
   VALUES
     (NEW.reserve_out_serial_id
     ,NEW.coin_pub);
-  RETURN NEW;
+  INSERT INTO exchange.coin_history
+    (coin_pub
+    ,table_name
+    ,serial_id)
+  VALUES
+    (NEW.coin_pub
+    ,'recoup'
+    ,NEW.recoup_uuid);
+ RETURN NEW;
 END $$;
 COMMENT ON FUNCTION recoup_insert_trigger()
-  IS 'Replicate recoup inserts into recoup_by_reserve table.';
+  IS 'Replicates recoup inserts into recoup_by_reserve table and updates the 
coin_history table.';
 
 
 CREATE FUNCTION recoup_delete_trigger()
diff --git a/src/exchangedb/0002-recoup_refresh.sql 
b/src/exchangedb/0002-recoup_refresh.sql
index 5234078a..45c78557 100644
--- a/src/exchangedb/0002-recoup_refresh.sql
+++ b/src/exchangedb/0002-recoup_refresh.sql
@@ -1,6 +1,6 @@
 --
 -- This file is part of TALER
--- Copyright (C) 2014--2022 Taler Systems SA
+-- Copyright (C) 2014--2023 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
@@ -126,6 +126,50 @@ END
 $$;
 
 
+CREATE OR REPLACE FUNCTION recoup_refresh_insert_trigger()
+  RETURNS trigger
+  LANGUAGE plpgsql
+  AS $$
+BEGIN
+  INSERT INTO exchange.coin_history
+    (coin_pub
+    ,table_name
+    ,serial_id)
+  VALUES
+     (NEW.coin_pub
+    ,'recoup_refresh::NEW'
+    ,NEW.recoup_refresh_uuid);
+  INSERT INTO exchange.coin_history
+    (coin_pub
+    ,table_name
+    ,serial_id)
+  SELECT
+     melt.old_coin_pub
+    ,'recoup_refresh::OLD'
+    ,NEW.recoup_refresh_uuid
+    FROM refresh_revealed_coins rrc
+    JOIN refresh_commitments melt
+      USING (melt_serial_id)
+    WHERE rrc.rrc_serial = NEW.rrc_serial;
+  RETURN NEW;
+END $$;
+COMMENT ON FUNCTION coin_deposits_insert_trigger()
+  IS 'Automatically generate coin history entry.';
+
+
+CREATE FUNCTION master_table_recoup_refresh()
+RETURNS VOID
+LANGUAGE plpgsql
+AS $$
+BEGIN
+  CREATE TRIGGER recoup_refresh_on_insert
+    AFTER INSERT
+     ON recoup_refresh
+     FOR EACH ROW EXECUTE FUNCTION recoup_refresh_insert_trigger();
+END $$;
+
+
+
 INSERT INTO exchange_tables
     (name
     ,version
@@ -147,4 +191,9 @@ INSERT INTO exchange_tables
     ,'exchange-0002'
     ,'foreign'
     ,TRUE
+    ,FALSE),
+    ('recoup_refresh'
+    ,'exchange-0002'
+    ,'master'
+    ,TRUE
     ,FALSE);
diff --git a/src/exchangedb/0002-refresh_commitments.sql 
b/src/exchangedb/0002-refresh_commitments.sql
index 614fc637..50e298c2 100644
--- a/src/exchangedb/0002-refresh_commitments.sql
+++ b/src/exchangedb/0002-refresh_commitments.sql
@@ -106,6 +106,37 @@ END
 $$;
 
 
+CREATE OR REPLACE FUNCTION refresh_commitments_insert_trigger()
+  RETURNS trigger
+  LANGUAGE plpgsql
+  AS $$
+BEGIN
+  INSERT INTO exchange.coin_history
+    (coin_pub
+    ,table_name
+    ,serial_id)
+ VALUES
+     (NEW.old_coin_pub
+    ,'refresh_commitments'
+    ,NEW.melt_serial_id);
+  RETURN NEW;
+END $$;
+COMMENT ON FUNCTION refresh_commitments_insert_trigger()
+  IS 'Automatically generate coin history entry.';
+
+
+CREATE FUNCTION master_table_refresh_commitments()
+RETURNS VOID
+LANGUAGE plpgsql
+AS $$
+BEGIN
+  CREATE TRIGGER refresh_commitments_on_insert
+    AFTER INSERT
+     ON refresh_commitments
+     FOR EACH ROW EXECUTE FUNCTION refresh_commitments_insert_trigger();
+END $$;
+
+
 INSERT INTO exchange_tables
     (name
     ,version
@@ -127,4 +158,9 @@ INSERT INTO exchange_tables
     ,'exchange-0002'
     ,'foreign'
     ,TRUE
+    ,FALSE),
+   ('refresh_commitments'
+    ,'exchange-0002'
+    ,'master'
+    ,TRUE
     ,FALSE);
diff --git a/src/exchangedb/0002-refunds.sql b/src/exchangedb/0002-refunds.sql
index 6eae5532..2a40bc19 100644
--- a/src/exchangedb/0002-refunds.sql
+++ b/src/exchangedb/0002-refunds.sql
@@ -1,6 +1,6 @@
 --
 -- This file is part of TALER
--- Copyright (C) 2014--2022 Taler Systems SA
+-- Copyright (C) 2014--2023 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
@@ -102,6 +102,37 @@ END
 $$;
 
 
+CREATE OR REPLACE FUNCTION refunds_insert_trigger()
+  RETURNS trigger
+  LANGUAGE plpgsql
+  AS $$
+BEGIN
+  INSERT INTO exchange.coin_history
+    (coin_pub
+    ,table_name
+    ,serial_id)
+ VALUES
+     (NEW.coin_pub
+    ,'refunds'
+    ,NEW.refund_serial_id);
+  RETURN NEW;
+END $$;
+COMMENT ON FUNCTION refunds_insert_trigger()
+  IS 'Automatically generate coin history entry.';
+
+
+CREATE FUNCTION master_table_refunds()
+RETURNS VOID
+LANGUAGE plpgsql
+AS $$
+BEGIN
+  CREATE TRIGGER refunds_on_insert
+    AFTER INSERT
+     ON refunds
+     FOR EACH ROW EXECUTE FUNCTION refunds_insert_trigger();
+END $$;
+
+
 INSERT INTO exchange_tables
     (name
     ,version
@@ -123,4 +154,9 @@ INSERT INTO exchange_tables
     ,'exchange-0002'
     ,'foreign'
     ,TRUE
+    ,FALSE),
+    ('refunds'
+    ,'exchange-0002'
+    ,'master'
+    ,TRUE
     ,FALSE);
diff --git a/src/exchangedb/0002-reserves_open_deposits.sql 
b/src/exchangedb/0002-reserves_open_deposits.sql
index b1a292dd..776859df 100644
--- a/src/exchangedb/0002-reserves_open_deposits.sql
+++ b/src/exchangedb/0002-reserves_open_deposits.sql
@@ -1,6 +1,6 @@
 --
 -- This file is part of TALER
--- Copyright (C) 2014--2022 Taler Systems SA
+-- Copyright (C) 2014--2023 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
@@ -80,6 +80,37 @@ END
 $$;
 
 
+CREATE OR REPLACE FUNCTION reserves_open_deposits_insert_trigger()
+  RETURNS trigger
+  LANGUAGE plpgsql
+  AS $$
+BEGIN
+  INSERT INTO exchange.coin_history
+    (coin_pub
+    ,table_name
+    ,serial_id)
+ VALUES
+     (NEW.coin_pub
+    ,'reserves_open_deposits'
+    ,NEW.reserve_open_deposit_uuid);
+  RETURN NEW;
+END $$;
+COMMENT ON FUNCTION reserves_open_deposits_insert_trigger()
+  IS 'Automatically generate coin history entry.';
+
+
+CREATE FUNCTION master_table_reserves_open_deposits()
+RETURNS VOID
+LANGUAGE plpgsql
+AS $$
+BEGIN
+  CREATE TRIGGER reserves_open_deposits_on_insert
+    AFTER INSERT
+     ON reserves_open_deposits
+     FOR EACH ROW EXECUTE FUNCTION reserves_open_deposits_insert_trigger();
+END $$;
+
+
 INSERT INTO exchange_tables
     (name
     ,version
@@ -96,4 +127,9 @@ INSERT INTO exchange_tables
     ,'exchange-0002'
     ,'constrain'
     ,TRUE
+    ,FALSE),
+    ('reserves_open_deposits'
+    ,'exchange-0002'
+    ,'master'
+    ,TRUE
     ,FALSE);
diff --git a/src/exchangedb/pg_get_coin_transactions.c 
b/src/exchangedb/pg_get_coin_transactions.c
index 5deb3fdc..4f431792 100644
--- a/src/exchangedb/pg_get_coin_transactions.c
+++ b/src/exchangedb/pg_get_coin_transactions.c
@@ -729,7 +729,7 @@ TEH_PG_get_coin_transactions (
     .db_cls = cls
   };
 
-  PREPARE (pg,
+  PREPARE (pg, // done!
            "get_deposit_with_coin_pub",
            "SELECT"
            " cdep.amount_with_fee"
@@ -757,7 +757,7 @@ TEH_PG_get_coin_transactions (
            " JOIN denominations denoms"
            "   USING (denominations_serial)"
            " WHERE cdep.coin_pub=$1;");
-  PREPARE (pg,
+  PREPARE (pg, // done!
            "get_refresh_session_by_coin",
            "SELECT"
            " rc"
@@ -773,7 +773,7 @@ TEH_PG_get_coin_transactions (
            " JOIN denominations denoms"
            "   USING (denominations_serial)"
            " WHERE old_coin_pub=$1;");
-  PREPARE (pg,
+  PREPARE (pg, // done!
            "get_purse_deposit_by_coin_pub",
            "SELECT"
            " partner_base_url"
@@ -798,7 +798,7 @@ TEH_PG_get_coin_transactions (
            // FIXME: use to-be-created materialized index
            // on coin_pub (query crosses partitions!)
            " WHERE pd.coin_pub=$1;");
-  PREPARE (pg,
+  PREPARE (pg, // done!
            "get_refunds_by_coin",
            "SELECT"
            " bdep.merchant_pub"
@@ -818,7 +818,7 @@ TEH_PG_get_coin_transactions (
            " JOIN denominations denom"
            "   USING (denominations_serial)"
            " WHERE ref.coin_pub=$1;");
-  PREPARE (pg,
+  PREPARE (pg, // done!
            "get_purse_decision_by_coin_pub",
            "SELECT"
            " pdes.purse_pub"
@@ -834,7 +834,7 @@ TEH_PG_get_coin_transactions (
            "   USING (denominations_serial)"
            " WHERE pd.coin_pub=$1"
            "   AND pdes.refunded;");
-  PREPARE (pg,
+  PREPARE (pg, // done!
            "recoup_by_old_coin",
            "SELECT"
            " coins.coin_pub"
@@ -856,7 +856,7 @@ TEH_PG_get_coin_transactions (
            "       JOIN refresh_revealed_coins rrc"
            "           USING (melt_serial_id)"
            "    WHERE old_coin_pub=$1);");
-  PREPARE (pg,
+  PREPARE (pg, // done
            "recoup_by_coin",
            "SELECT"
            " reserves.reserve_pub"
@@ -882,7 +882,7 @@ TEH_PG_get_coin_transactions (
            " WHERE coins.coin_pub=$1;");
   /* Used in #postgres_get_coin_transactions() to obtain recoup transactions
      for a refreshed coin */
-  PREPARE (pg,
+  PREPARE (pg, // done!
            "recoup_by_refreshed_coin",
            "SELECT"
            " old_coins.coin_pub AS old_coin_pub"
@@ -905,7 +905,7 @@ TEH_PG_get_coin_transactions (
            "    JOIN denominations denoms"
            "      ON (denoms.denominations_serial = 
coins.denominations_serial)"
            " WHERE coins.coin_pub=$1;");
-  PREPARE (pg,
+  PREPARE (pg, // done
            "reserve_open_by_coin",
            "SELECT"
            " reserve_open_deposit_uuid"

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]