[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [taler-anastasis] branch master updated: Worked on recovery
From: |
gnunet |
Subject: |
[GNUnet-SVN] [taler-anastasis] branch master updated: Worked on recovery_document upload |
Date: |
Tue, 22 Oct 2019 00:32:31 +0200 |
This is an automated email from the git hooks/post-receive script.
dennis-neufeld pushed a commit to branch master
in repository anastasis.
The following commit(s) were added to refs/heads/master by this push:
new c733ae8 Worked on recovery_document upload
c733ae8 is described below
commit c733ae84027eb667643aed21dcb94b958926101d
Author: Dennis Neufeld <address@hidden>
AuthorDate: Mon Oct 21 22:31:50 2019 +0000
Worked on recovery_document upload
---
src/backup-db/DB-Schema.png | Bin 22631 -> 0 bytes
src/backup-db/plugin_anastasis_postgres.c | 93 +++++++++++++++++++++++++-----
2 files changed, 78 insertions(+), 15 deletions(-)
diff --git a/src/backup-db/DB-Schema.png b/src/backup-db/DB-Schema.png
deleted file mode 100644
index 6a214c5..0000000
Binary files a/src/backup-db/DB-Schema.png and /dev/null differ
diff --git a/src/backup-db/plugin_anastasis_postgres.c
b/src/backup-db/plugin_anastasis_postgres.c
index 9ff91cb..b2d1266 100644
--- a/src/backup-db/plugin_anastasis_postgres.c
+++ b/src/backup-db/plugin_anastasis_postgres.c
@@ -231,22 +231,85 @@ postgres_store_recovery_document (void *cls,
uint32_t *version)
{
struct PostgresClosure *pg = cls;
+ enum GNUNET_DB_QueryStatus qs;
+ struct GNUNET_TIME_Absolute paid_until;
+
+ check_connection (pg);
+ if (GNUNET_OK !=
+ begin_transaction (pg))
+ {
+ GNUNET_break (0);
+ return GNUNET_DB_STATUS_HARD_ERROR;
+ }
+
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (anastasis_pub),
- GNUNET_PQ_query_param_fixed_size (data, data_size),
- GNUNET_PQ_query_param_auto_from_type (payment_secret),
- // GNUNET_PQ_query_param_uint32 (version),
GNUNET_PQ_query_param_end
};
+ struct GNUNET_PQ_ResultSpec rs[] = {
+ TALER_PQ_result_spec_absolute_time ("paid_until",
+ &paid_until),
+ GNUNET_PQ_result_spec_end
+ };
+
+ qs = GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
+ "user_select",
+ params,
+ rs);
+
+ switch (qs)
+ {
+ case GNUNET_DB_STATUS_HARD_ERROR:
+ rollback (pg);
+ return qs;
+ case GNUNET_DB_STATUS_SOFT_ERROR:
+ // FIXME: or: retry internally?
+ rollback (pg);
+ return qs;
+ case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
+ return GNUNET_DB_STATUS_UNKNOWN_USER; //FIXME: This status has to be
defined!
+ case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
+ paid_until = GNUNET_TIME_absolute_max (GNUNET_TIME_absolute_get (),
+ paid_until);
+ break;
+ }
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "inserting recovery document: user_id: %s, version: %i.\n",
- GNUNET_p2s (anastasis_pub),
- version);
- check_connection (pg);
- return GNUNET_PQ_eval_prepared_non_select (pg->conn,
- "store_recovery_document",
- params);
+
+ //upload if last payment is still valid
+ if (GNUNET_TIME_absolute_get_difference(GNUNET_TIME_absolute_get, paid_until
!= 0))
+ {
+ struct GNUNET_PQ_QueryParam params[] = {
+ GNUNET_PQ_query_param_auto_from_type (anastasis_pub),
+ GNUNET_PQ_query_param_fixed_size (data, data_size),
+ GNUNET_PQ_query_param_end
+ };
+
+ qs = GNUNET_PQ_eval_prepared_non_select (pg->conn,
+ "recovery_document_insert",
//FIXME: Has to be defined
+ params);
+ }
+
+ switch (qs)
+ {
+ case GNUNET_DB_STATUS_HARD_ERROR:
+ rollback (pg);
+ return qs;
+ case GNUNET_DB_STATUS_SOFT_ERROR:
+ // FIXME: or: retry internally?
+ rollback (pg);
+ return qs;
+ case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
+ GNUNET_break (0);
+ rollback (pg);
+ return GNUNET_DB_STATUS_HARD_ERROR;
+ case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
+ break;
+ }
+
+ qs = commit_transaction (pg);
+ if (qs < 0)
+ return qs;
+ return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;
}
@@ -374,8 +437,8 @@ postgres_record_payment (void *cls,
/* user did not yet exist, create */
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (anastasis_pub),
- GNUNET_PQ_query_param_absolute_time (&paid_until),
- GNUNET_PQ_query_param_end
+ GNUNET_PQ_query_param_absolute_time (&paid_until),
+ GNUNET_PQ_query_param_end
};
qs = GNUNET_PQ_eval_prepared_non_select (pg->conn,
@@ -386,9 +449,9 @@ postgres_record_payment (void *cls,
{
/* user exists, update */
struct GNUNET_PQ_QueryParam params[] = {
- GNUNET_PQ_query_param_absolute_time (&paid_until),
+ GNUNET_PQ_query_param_absolute_time (&paid_until),
GNUNET_PQ_query_param_auto_from_type (anastasis_pub),
- GNUNET_PQ_query_param_end
+ GNUNET_PQ_query_param_end
};
qs = GNUNET_PQ_eval_prepared_non_select (pg->conn,
--
To stop receiving notification emails like this one, please contact
address@hidden.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [taler-anastasis] branch master updated: Worked on recovery_document upload,
gnunet <=