gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: handle case where purse was alre


From: gnunet
Subject: [taler-exchange] branch master updated: handle case where purse was already deleted on merge
Date: Wed, 28 Dec 2022 12:58:33 +0100

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 f864d66d handle case where purse was already deleted on merge
f864d66d is described below

commit f864d66d930690449e855d0a7aa0b146174f4388
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Wed Dec 28 12:58:30 2022 +0100

    handle case where purse was already deleted on merge
---
 src/exchangedb/exchange_do_delete_purse.sql |  4 ++++
 src/exchangedb/exchange_do_purse_merge.sql  | 31 ++++++++++++++++++++---------
 2 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/src/exchangedb/exchange_do_delete_purse.sql 
b/src/exchangedb/exchange_do_delete_purse.sql
index 1e6540ec..a57f2545 100644
--- a/src/exchangedb/exchange_do_delete_purse.sql
+++ b/src/exchangedb/exchange_do_delete_purse.sql
@@ -62,6 +62,10 @@ THEN
   RETURN;
 END IF;
 
+-- Delete contract associated with purse, if it exists.
+DELETE FROM contracts
+  WHERE purse_pub=in_purse_pub;
+
 -- store purse decision
 INSERT INTO purse_decision
   (purse_pub
diff --git a/src/exchangedb/exchange_do_purse_merge.sql 
b/src/exchangedb/exchange_do_purse_merge.sql
index 2e799c9f..f02dd5dc 100644
--- a/src/exchangedb/exchange_do_purse_merge.sql
+++ b/src/exchangedb/exchange_do_purse_merge.sql
@@ -42,6 +42,7 @@ DECLARE
   my_in_reserve_quota BOOLEAN;
 BEGIN
 
+
 IF in_partner_url IS NULL
 THEN
   my_partner_serial_id=NULL;
@@ -124,6 +125,27 @@ THEN
   out_conflict=FALSE;
   RETURN;
 END IF;
+
+
+-- Remember how this purse was finished. This will conflict
+-- if the purse was already decided previously.
+INSERT INTO purse_decision
+  (purse_pub
+  ,action_timestamp
+  ,refunded)
+VALUES
+  (in_purse_pub
+  ,in_merge_timestamp
+  ,FALSE)
+ON CONFLICT DO NOTHING;
+
+IF NOT FOUND
+THEN
+  -- Purse was already decided (possibly deleted or merged differently).
+  out_conflict=TRUE;
+  RETURN;
+END IF;
+
 out_conflict=FALSE;
 
 
@@ -138,15 +160,6 @@ INSERT INTO reserves
   ,in_expiration_date)
   ON CONFLICT DO NOTHING;
 
--- Remember how this purse was finished.
-INSERT INTO purse_decision
-  (purse_pub
-  ,action_timestamp
-  ,refunded)
-VALUES
-  (in_purse_pub
-  ,in_merge_timestamp
-  ,FALSE);
 
 IF (my_in_reserve_quota)
 THEN

-- 
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]