Branch data Line data Source code
1 : : /********************************************************************
2 : : * gnc-slots-sql.h: load and save data to SQL *
3 : : * *
4 : : * This program is free software; you can redistribute it and/or *
5 : : * modify it under the terms of the GNU General Public License as *
6 : : * published by the Free Software Foundation; either version 2 of *
7 : : * the License, or (at your option) any later version. *
8 : : * *
9 : : * This program is distributed in the hope that it will be useful, *
10 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 : : * GNU General Public License for more details. *
13 : : * *
14 : : * You should have received a copy of the GNU General Public License*
15 : : * along with this program; if not, contact: *
16 : : * *
17 : : * Free Software Foundation Voice: +1-617-542-5942 *
18 : : * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
19 : : * Boston, MA 02110-1301, USA gnu@gnu.org *
20 : : \********************************************************************/
21 : : /** @file gnc-slots-sql.h
22 : : * @brief load and save accounts data to SQL
23 : : * @author Copyright (c) 2006-2008 Phil Longstaff <plongstaff@rogers.com>
24 : : *
25 : : * This file implements the top-level QofBackend API for saving/
26 : : * restoring data to/from an SQL database
27 : : */
28 : :
29 : : #ifndef GNC_SLOTS_SQL_H
30 : : #define GNC_SLOTS_SQL_H
31 : :
32 : : #include <glib.h>
33 : : #include "guid.h"
34 : : #include "qof.h"
35 : : #include "gnc-sql-object-backend.hpp"
36 : :
37 : : /**
38 : : * Slots are neither loadable nor committable. Note that the default
39 : : * write() implementation is also a no-op.
40 : : */
41 : : class GncSqlSlotsBackend : public GncSqlObjectBackend
42 : : {
43 : : public:
44 : : GncSqlSlotsBackend();
45 : 0 : void load_all(GncSqlBackend*) override { return; }
46 : : void create_tables(GncSqlBackend*) override;
47 : 0 : bool commit(GncSqlBackend*, QofInstance*) override { return false; }
48 : : };
49 : :
50 : : /**
51 : : * gnc_sql_slots_save - Saves slots for an object to the db.
52 : : *
53 : : * @param sql_be SQL backend
54 : : * @param guid Object guid
55 : : * @param is_infant Is this an infant object?
56 : : * @param inst The QodInstance owning the slots.
57 : : * @return TRUE if successful, FALSE if error
58 : : */
59 : : gboolean gnc_sql_slots_save (GncSqlBackend* sql_be, const GncGUID* guid,
60 : : gboolean is_infant, QofInstance* inst);
61 : :
62 : : /**
63 : : * gnc_sql_slots_delete - Deletes slots for an object from the db.
64 : : *
65 : : * @param sql_be SQL backend
66 : : * @param guid Object guid
67 : : * @return TRUE if successful, FALSE if error
68 : : */
69 : : gboolean gnc_sql_slots_delete (GncSqlBackend* sql_be, const GncGUID* guid);
70 : :
71 : : /** Loads slots for an object from the db.
72 : : *
73 : : * @param sql_be SQL backend
74 : : */
75 : : void gnc_sql_slots_load (GncSqlBackend* sql_be, QofInstance* inst);
76 : :
77 : : typedef QofInstance* (*BookLookupFn) (const GncGUID* guid,
78 : : const QofBook* book);
79 : :
80 : : /**
81 : : * gnc_sql_slots_load_for_sql_subquery - Loads slots for all objects whose guid is
82 : : * supplied by a subquery. The subquery should be of the form "SELECT DISTINCT guid FROM ...".
83 : : * This is faster than loading for one object at a time because fewer SQL queries * are used.
84 : : *
85 : : * @param sql_be SQL backend
86 : : * @param subquery Subquery SQL string
87 : : * @param lookup_fn Lookup function to get the right object from the book
88 : : */
89 : : void gnc_sql_slots_load_for_sql_subquery (GncSqlBackend* sql_be,
90 : : const std::string subquery,
91 : : BookLookupFn lookup_fn);
92 : :
93 : : void gnc_sql_init_slots_handler (void);
94 : :
95 : : #endif /* GNC_SLOTS_SQL_H */
|