42 #if defined( S_SPLINT_S )
43 #include "splint-defs.h"
48 #define TABLE_NAME "prices"
49 #define TABLE_VERSION 2
51 #define PRICE_MAX_SOURCE_LEN 2048
52 #define PRICE_MAX_TYPE_LEN 2048
58 {
"commodity_guid", CT_COMMODITYREF, 0,
COL_NNUL,
"commodity" },
59 {
"currency_guid", CT_COMMODITYREF, 0,
COL_NNUL,
"currency" },
60 {
"date", CT_TIMESPEC, 0,
COL_NNUL,
"date" },
61 {
"source", CT_STRING, PRICE_MAX_SOURCE_LEN, 0,
"source" },
62 {
"type", CT_STRING, PRICE_MAX_TYPE_LEN, 0,
"type" },
63 {
"value", CT_NUMERIC, 0,
COL_NNUL,
"value" },
75 g_return_val_if_fail( be != NULL, NULL );
76 g_return_val_if_fail( row != NULL, NULL );
80 gnc_price_begin_edit( pPrice );
82 gnc_price_commit_edit( pPrice );
95 g_return_if_fail( be != NULL );
103 gnc_sql_statement_dispose( stmt );
104 if ( result != NULL )
107 GncSqlRow* row = gnc_sql_result_get_first_row( result );
111 while ( row != NULL )
113 pPrice = load_single_price( be, row );
115 if ( pPrice != NULL )
120 row = gnc_sql_result_get_next_row( result );
122 gnc_sql_result_dispose( result );
125 sql = g_strdup_printf(
"SELECT DISTINCT guid FROM %s", TABLE_NAME );
138 g_return_if_fail( be != NULL );
145 else if ( version == 1 )
151 PINFO(
"Prices table upgraded from version 1 to version %d\n", TABLE_VERSION);
163 gboolean is_ok = TRUE;
165 g_return_val_if_fail( be != NULL, FALSE );
166 g_return_val_if_fail( inst != NULL, FALSE );
167 g_return_val_if_fail( GNC_IS_PRICE(inst), FALSE );
169 is_infant = qof_instance_get_infant( inst );
183 if ( op != OP_DB_DELETE )
186 (void)gnc_sql_save_commodity( be, gnc_price_get_commodity( pPrice ) );
187 is_ok = gnc_sql_save_commodity( be, gnc_price_get_currency( pPrice ) );
199 write_price(
GNCPrice* p, gpointer data )
203 g_return_val_if_fail( p != NULL, FALSE );
204 g_return_val_if_fail( data != NULL, FALSE );
208 s->is_ok = save_price( s->be, QOF_INSTANCE(p) );
220 g_return_val_if_fail( be != NULL, FALSE );
231 gnc_sql_init_price_handler(
void )
235 GNC_SQL_BACKEND_VERSION,
239 create_prices_tables,
GNCPrice * gnc_price_create(QofBook *book)
gboolean qof_object_register_backend(QofIdTypeConst type_name, const char *backend_name, gpointer be_data)
gint gnc_sql_get_table_version(const GncSqlBackend *be, const gchar *table_name)
void gnc_sql_upgrade_table(GncSqlBackend *be, const gchar *table_name, const GncSqlColumnTableEntry *col_table)
a simple price database for gnucash
#define G_LOG_DOMAIN
Functions providing the SX List as a plugin page.
#define PINFO(format, args...)
load and save data to SQL
load and save accounts data to SQL
GncSqlStatement * gnc_sql_create_select_statement(GncSqlBackend *be, const gchar *table_name)
void gnc_price_unref(GNCPrice *p)
gboolean qof_instance_get_destroying(gconstpointer ptr)
gboolean gnc_pricedb_add_price(GNCPriceDB *db, GNCPrice *p)
gboolean gnc_sql_create_table(GncSqlBackend *be, const gchar *table_name, gint table_version, const GncSqlColumnTableEntry *col_table)
load and save data to SQL
load and save data to SQL
GNCPriceDB * gnc_pricedb_get_db(QofBook *book)
void gnc_sql_slots_load_for_sql_subquery(GncSqlBackend *be, const gchar *subquery, BookLookupFn lookup_fn)
gboolean gnc_sql_set_table_version(GncSqlBackend *be, const gchar *table_name, gint version)
gboolean gnc_pricedb_foreach_price(GNCPriceDB *db, gboolean(*f)(GNCPrice *p, gpointer user_data), gpointer user_data, gboolean stable_order)
GncSqlResult * gnc_sql_execute_select_statement(GncSqlBackend *be, GncSqlStatement *stmt)
void gnc_sql_load_object(const GncSqlBackend *be, GncSqlRow *row, QofIdTypeConst obj_name, gpointer pObject, const GncSqlColumnTableEntry *table)
void gnc_pricedb_set_bulk_update(GNCPriceDB *db, gboolean bulk_update)
gboolean gnc_sql_do_db_operation(GncSqlBackend *be, E_DB_OPERATION op, const gchar *table_name, QofIdTypeConst obj_name, gpointer pObject, const GncSqlColumnTableEntry *table)
const gchar * QofLogModule