namespace QRBee.Api.Services.Database
{
///
/// Database interface
///
public interface IStorage
{
///
/// Insert userInfo into database
///
/// Information to be inserted
Task PutUserInfo(UserInfo info);
///
/// Retrieve user information from database
///
/// Identifier by which user information will be retrieved
/// User information
Task GetUserInfo(string email);
///
/// Update user record
///
/// New user record
///
Task UpdateUser(UserInfo info);
///
/// Insert transactionInfo into database
///
/// Information to be inserted
Task PutTransactionInfo(TransactionInfo info);
///
/// Try to find if the Transaction already exists in the database
///
/// parameter by which to find TransactionInfo
/// null if transaction doesn't exist or TransactionInfo
Task TryGetTransactionInfoByTransactionId(string id);
///
/// Retrieve transaction information from database
///
/// Identifier by which transaction information will be retrieved
/// Transaction information
Task GetTransactionInfoByTransactionId(string id);
Task> GetTransactionsByStatus(TransactionInfo.TransactionStatus status);
///
/// Update transaction after execution
///
/// Transaction to be updated
Task UpdateTransaction(TransactionInfo info);
///
/// Inserts CertificateInfo into database
///
/// Information to be inserted
///
Task InsertCertificate(CertificateInfo info);
///
/// Retrieve certificate information from database
///
/// Identifier by which certificate information will be retrieved
/// Certificate information
Task GetCertificateInfoByCertificateId(string id);
///
/// Retrieve certificate information from database
///
/// Identifier by which certificate information will be retrieved
/// Certificate information
Task GetCertificateInfoByUserId(string clientId);
}
}