/*
This file is part of TALER
Copyright (C) 2014, 2015, 2016 INRIA
TALER is free software; you can redistribute it and/or modify it under the
terms of the GNU Lesser 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.GPL. If not, If not, see
*/
/**
* @file include/taler_merchantdb_plugin.h
* @brief database access for the merchant
* @author Florian Dold
* @author Christian Grothoff
*/
#ifndef TALER_MERCHANTDB_PLUGIN_H
#define TALER_MERCHANTDB_PLUGIN_H
#include
#include
/**
* Handle to interact with the database.
*/
struct TALER_MERCHANTDB_Plugin;
/**
* Handle to interact with the database.
*/
struct TALER_MERCHANTDB_Plugin
{
/**
* Closure for all callbacks.
*/
void *cls;
/**
* Name of the library which generated this plugin. Set by the
* plugin loader.
*/
char *library_name;
/**
* Initialize merchant tables
*
* @param cls closure
* @param tmp #GNUNET_YES if the tables are to be made temporary i.e. their
* contents are dropped when the @a conn is closed
* @return #GNUNET_OK upon success; #GNUNET_SYSERR upon failure
*/
int
(*initialize) (void *cls,
int tmp);
/**
* Insert payment confirmation from the exchange into the database.
*
* @param cls closure
* @param h_contract hash of the contract
* @param h_wire hash of our wire details
* @param transaction_id of the contract
* @param timestamp time of the confirmation
* @param refund refund deadline
* @param amount_without_fee amount the exchange will deposit
* @param coin_pub public key of the coin
* @param exchange_proof proof from exchange that coin was accepted
* @return #GNUNET_OK on success, #GNUNET_SYSERR upon error
*/
int
(*store_payment) (void *cls,
const struct GNUNET_HashCode *h_contract,
const struct GNUNET_HashCode *h_wire,
uint64_t transaction_id,
struct GNUNET_TIME_Absolute timestamp,
struct GNUNET_TIME_Absolute refund,
const struct TALER_Amount *amount_without_fee,
const struct TALER_CoinSpendPublicKeyP *coin_pub,
json_t *exchange_proof);
/**
* Check whether a payment has already been stored
*
* @param cls our plugin handle
* @param transaction_id the transaction id to search into
* the db
*
* @return #GNUNET_OK if found, #GNUNET_NO if not, #GNUNET_SYSERR
* upon error
*/
int
(*check_payment) (void *cls,
uint64_t transaction_id);
};
#endif