Branch data Line data Source code
1 : : /******************************************************************** 2 : : * gnc-dbiprovider.cpp: Encapsulate differences among Dbi backends. * 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_DBIPROVIDER_HPP__ 25 : : #define __GNC_DBIPROVIDER_HPP__ 26 : : 27 : : #include <dbi/dbi.h> 28 : : #include <string> 29 : : #include <vector> 30 : : 31 : : /** 32 : : * Provides the primary abstraction for different DBI backends. 33 : : */ 34 : : class GncSqlConnection; 35 : : struct GncSqlColumnInfo; 36 : : using ColVec = std::vector<GncSqlColumnInfo>; 37 : : using StrVec = std::vector<std::string>; 38 : : class GncDbiProvider 39 : : { 40 : : public: 41 : 0 : virtual ~GncDbiProvider() = default; 42 : : virtual StrVec get_table_list(dbi_conn conn, const std::string& table) = 0; 43 : : virtual void append_col_def(std::string& ddl, 44 : : const GncSqlColumnInfo& info) = 0; 45 : : virtual StrVec get_index_list (dbi_conn conn) = 0; 46 : : virtual void drop_index(dbi_conn conn, const std::string& index) = 0; 47 : : }; 48 : : 49 : : using GncDbiProviderPtr = std::unique_ptr<GncDbiProvider>; 50 : : 51 : : #endif //__GNC_DBIPROVIDER_HPP__