LCOV - code coverage report
Current view: top level - libgnucash/backend/sql - gnc-sql-connection.hpp (source / functions) Coverage Total Hit
Test: gnucash.info Lines: 0.0 % 2 0
Test Date: 2026-11-02 18:19:43 Functions: 0.0 % 2 0
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /***********************************************************************\
       2              :  * gnc-sql-connection.hpp: Encapsulate a SQL database connection.      *
       3              :  *                                                                     *
       4              :  * Copyright 2016 John Ralls <jralls@ceridwen.us>                      *
       5              :  *                                                                     *
       6              :  * This program is free software; you can redistribute it and/or       *
       7              :  * modify it under the terms of the GNU General Public License as      *
       8              :  * published by the Free Software Foundation; either version 2 of      *
       9              :  * the License, or (at your option) any later version.                 *
      10              :  *                                                                     *
      11              :  * This program is distributed in the hope that it will be useful,     *
      12              :  * but WITHOUT ANY WARRANTY; without even the implied warranty of      *
      13              :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       *
      14              :  * GNU General Public License for more details.                        *
      15              :  *                                                                     *
      16              :  * You should have received a copy of the GNU General Public License   *
      17              :  * along with this program; if not, contact:                           *
      18              :  *                                                                     *
      19              :  * Free Software Foundation           Voice:  +1-617-542-5942          *
      20              :  * 51 Franklin Street, Fifth Floor    Fax:    +1-617-542-2652          *
      21              :  * Boston, MA  02110-1301,  USA       gnu@gnu.org                      *
      22              : \***********************************************************************/
      23              : 
      24              : #ifndef __GNC_SQL_CONNECTION_HPP__
      25              : #define __GNC_SQL_CONNECTION_HPP__
      26              : 
      27              : #include <qof.h>
      28              : #include <memory>
      29              : #include <string>
      30              : #include <vector>
      31              : 
      32              : class GncSqlResult;
      33              : using GncSqlResultPtr = GncSqlResult*;
      34              : class GncSqlColumnTableEntry;
      35              : using GncSqlColumnTableEntryPtr = std::shared_ptr<GncSqlColumnTableEntry>;
      36              : using EntryVec = std::vector<GncSqlColumnTableEntryPtr>;
      37              : using PairVec = std::vector<std::pair<std::string, std::string>>;
      38              : struct GncSqlColumnInfo;
      39              : using ColVec = std::vector<GncSqlColumnInfo>;
      40              : 
      41              : /**
      42              :  * SQL statement provider.
      43              :  */
      44              : class GncSqlStatement
      45              : {
      46              : public:
      47            0 :     virtual ~GncSqlStatement() {}
      48              :     virtual const char* to_sql() const = 0;
      49              :     virtual void add_where_cond (QofIdTypeConst, const PairVec&) = 0;
      50              : };
      51              : 
      52              : using GncSqlStatementPtr = std::unique_ptr<GncSqlStatement>;
      53              : 
      54              : /**
      55              :  * Encapsulate the connection to the database. This is an abstract class; the
      56              :  * implementation is database-specific.
      57              :  */
      58              : class GncSqlConnection
      59              : {
      60              : public:
      61              :     /** Returns NULL if error */
      62            0 :     virtual ~GncSqlConnection() = default;
      63              :     virtual GncSqlResultPtr execute_select_statement (const GncSqlStatementPtr&)
      64              :         noexcept = 0;
      65              :     /** Returns false if error */
      66              :     virtual int execute_nonselect_statement (const GncSqlStatementPtr&)
      67              :         noexcept = 0;
      68              :     virtual GncSqlStatementPtr create_statement_from_sql (const std::string&)
      69              :         const noexcept = 0;
      70              :     /** Returns true if successful */
      71              :     virtual bool does_table_exist (const std::string&) const noexcept = 0;
      72              :     /** Returns TRUE if successful, false if error */
      73              :     virtual bool begin_transaction () noexcept = 0;
      74              :     /** Returns TRUE if successful, FALSE if error */
      75              :     virtual bool rollback_transaction () noexcept = 0;
      76              :     /** Returns TRUE if successful, FALSE if error */
      77              :     virtual bool commit_transaction () noexcept = 0;
      78              :     /** Returns TRUE if successful, FALSE if error */
      79              :     virtual bool create_table (const std::string&, const ColVec&)
      80              :         const noexcept = 0;
      81              :     /** Returns TRUE if successful, FALSE if error */
      82              :     virtual bool create_index (const std::string&, const std::string&,
      83              :                                const EntryVec&) const noexcept = 0;
      84              :     /** Returns TRUE if successful, FALSE if error */
      85              :     virtual bool add_columns_to_table (const std::string&, const ColVec&)
      86              :         const noexcept = 0;
      87              :     virtual std::string quote_string (const std::string&)
      88              :         const noexcept = 0;
      89              :     /** Get the connection error value.
      90              :      * If not 0 will normally be meaningless outside of implementation code.
      91              :      */
      92              :     virtual int dberror() const noexcept = 0;
      93              :     virtual void set_error(QofBackendError error, unsigned int repeat,
      94              :                            bool retry) noexcept = 0;
      95              :     virtual bool verify() noexcept = 0;
      96              :     virtual bool retry_connection(const char* msg) noexcept = 0;
      97              : 
      98              : };
      99              : 
     100              : 
     101              : #endif //__GNC_SQL_CONNECTION_HPP__
        

Generated by: LCOV version 2.0-1