LCOV - code coverage report
Current view: top level - exchangedb - pg_gc.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 17 19 89.5 %
Date: 2025-06-05 21:03:14 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /*
       2             :    This file is part of TALER
       3             :    Copyright (C) 2022 Taler Systems SA
       4             : 
       5             :    TALER is free software; you can redistribute it and/or modify it under the
       6             :    terms of the GNU General Public License as published by the Free Software
       7             :    Foundation; either version 3, or (at your option) any later version.
       8             : 
       9             :    TALER is distributed in the hope that it will be useful, but WITHOUT ANY
      10             :    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
      11             :    A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
      12             : 
      13             :    You should have received a copy of the GNU General Public License along with
      14             :    TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
      15             :  */
      16             : /**
      17             :  * @file exchangedb/pg_gc.c
      18             :  * @brief Implementation of the gc function for Postgres
      19             :  * @author Christian Grothoff
      20             :  */
      21             : #include "platform.h"
      22             : #include "taler_error_codes.h"
      23             : #include "taler_dbevents.h"
      24             : #include "taler_pq_lib.h"
      25             : #include "pg_gc.h"
      26             : #include "pg_helper.h"
      27             : 
      28             : 
      29             : enum GNUNET_GenericReturnValue
      30          33 : TEH_PG_gc (void *cls)
      31             : {
      32          33 :   struct PostgresClosure *pg = cls;
      33          33 :   struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get ();
      34             :   struct GNUNET_TIME_Absolute long_ago;
      35          33 :   struct GNUNET_PQ_QueryParam params[] = {
      36          33 :     GNUNET_PQ_query_param_absolute_time (&long_ago),
      37          33 :     GNUNET_PQ_query_param_absolute_time (&now),
      38             :     GNUNET_PQ_query_param_end
      39             :   };
      40             :   struct GNUNET_PQ_Context *conn;
      41             :   enum GNUNET_GenericReturnValue ret;
      42             : 
      43             :   /* Keep wire fees for 10 years, that should always
      44             :      be enough _and_ they are tiny so it does not
      45             :      matter to make this tight */
      46          33 :   long_ago = GNUNET_TIME_absolute_subtract (
      47             :     now,
      48             :     GNUNET_TIME_relative_multiply (
      49             :       GNUNET_TIME_UNIT_YEARS,
      50             :       10));
      51             :   {
      52          33 :     struct GNUNET_PQ_ExecuteStatement es[] = {
      53          33 :       GNUNET_PQ_make_try_execute ("SET search_path TO exchange;"),
      54             :       GNUNET_PQ_EXECUTE_STATEMENT_END
      55             :     };
      56          33 :     struct GNUNET_PQ_PreparedStatement ps[] = {
      57          33 :       GNUNET_PQ_make_prepare ("run_gc",
      58             :                               "CALL"
      59             :                               " exchange_do_gc"
      60             :                               " ($1,$2);"),
      61             :       GNUNET_PQ_PREPARED_STATEMENT_END
      62             :     };
      63             : 
      64          33 :     conn = GNUNET_PQ_connect_with_cfg (pg->cfg,
      65             :                                        "exchangedb-postgres",
      66             :                                        NULL,
      67             :                                        es,
      68             :                                        ps);
      69             :   }
      70          33 :   if (NULL == conn)
      71           0 :     return GNUNET_SYSERR;
      72          33 :   ret = GNUNET_OK;
      73          33 :   if (0 > GNUNET_PQ_eval_prepared_non_select (conn,
      74             :                                               "run_gc",
      75             :                                               params))
      76           0 :     ret = GNUNET_SYSERR;
      77          33 :   GNUNET_PQ_disconnect (conn);
      78          33 :   return ret;
      79             : }

Generated by: LCOV version 1.16