Introduce katze_array_from_sqlite () and katze_array_from_statement ()
This commit is contained in:
parent
a49f1f7814
commit
bd97f069d4
2 changed files with 111 additions and 0 deletions
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#include <glib/gstdio.h>
|
#include <glib/gstdio.h>
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
|
#include <sqlite3.h>
|
||||||
|
|
||||||
#if HAVE_LIBXML
|
#if HAVE_LIBXML
|
||||||
#include <libxml/parser.h>
|
#include <libxml/parser.h>
|
||||||
|
@ -752,3 +753,105 @@ midori_array_to_file (KatzeArray* array,
|
||||||
g_critical ("Cannot write KatzeArray to unknown format '%s'.", format);
|
g_critical ("Cannot write KatzeArray to unknown format '%s'.", format);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
katze_item_set_value_from_column (sqlite3_stmt* stmt,
|
||||||
|
gint column,
|
||||||
|
KatzeItem* item)
|
||||||
|
{
|
||||||
|
const gchar* name;
|
||||||
|
|
||||||
|
name = sqlite3_column_name (stmt, column);
|
||||||
|
g_return_if_fail (name != NULL);
|
||||||
|
|
||||||
|
if (g_str_equal (name, "uri"))
|
||||||
|
{
|
||||||
|
const unsigned char* uri;
|
||||||
|
uri = sqlite3_column_text (stmt, column);
|
||||||
|
if (uri && uri[0])
|
||||||
|
katze_item_set_uri (item, (gchar*)uri);
|
||||||
|
}
|
||||||
|
else if (g_str_equal (name, "title") || g_str_equal (name, "name"))
|
||||||
|
{
|
||||||
|
const unsigned char* title;
|
||||||
|
title = sqlite3_column_text (stmt, column);
|
||||||
|
katze_item_set_name (item, (gchar*)title);
|
||||||
|
}
|
||||||
|
else if (g_str_equal (name, "date"))
|
||||||
|
{
|
||||||
|
gint date;
|
||||||
|
date = sqlite3_column_int64 (stmt, column);
|
||||||
|
katze_item_set_added (item, date);
|
||||||
|
}
|
||||||
|
else if (g_str_equal (name, "day") || g_str_equal (name, "app")
|
||||||
|
|| g_str_equal (name, "toolbar") || g_str_equal (name, "type"))
|
||||||
|
{
|
||||||
|
gint value;
|
||||||
|
value = sqlite3_column_int64 (stmt, column);
|
||||||
|
katze_item_set_meta_integer (item, name, value);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
g_warn_if_reached ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* midori_array_from_statement:
|
||||||
|
* @stmt: prepared statement
|
||||||
|
*
|
||||||
|
* Stores the result in a #KatzeArray.
|
||||||
|
*
|
||||||
|
* Return value: a #KatzeArray on success, %NULL otherwise
|
||||||
|
*
|
||||||
|
* Since: 0.2.7
|
||||||
|
**/
|
||||||
|
KatzeArray*
|
||||||
|
katze_array_from_statement (sqlite3_stmt* stmt)
|
||||||
|
{
|
||||||
|
KatzeArray *array;
|
||||||
|
gint result;
|
||||||
|
gint cols;
|
||||||
|
|
||||||
|
array = katze_array_new (KATZE_TYPE_ITEM);
|
||||||
|
cols = sqlite3_column_count (stmt);
|
||||||
|
|
||||||
|
while ((result = sqlite3_step (stmt)) == SQLITE_ROW)
|
||||||
|
{
|
||||||
|
gint i;
|
||||||
|
KatzeItem* item;
|
||||||
|
|
||||||
|
item = katze_item_new ();
|
||||||
|
for (i = 0; i < cols; i++)
|
||||||
|
katze_item_set_value_from_column (stmt, i, item);
|
||||||
|
katze_array_add_item (array, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
sqlite3_clear_bindings (stmt);
|
||||||
|
sqlite3_reset (stmt);
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* midori_array_from_sqlite:
|
||||||
|
* @db: opened database handler
|
||||||
|
* @sqlcmd: SQL query
|
||||||
|
*
|
||||||
|
* Stores the result in a #KatzeArray.
|
||||||
|
*
|
||||||
|
* Return value: a #KatzeArray on success, %NULL otherwise
|
||||||
|
*
|
||||||
|
* Since: 0.2.7
|
||||||
|
**/
|
||||||
|
|
||||||
|
KatzeArray*
|
||||||
|
katze_array_from_sqlite (sqlite3* db,
|
||||||
|
const gchar* sqlcmd)
|
||||||
|
{
|
||||||
|
sqlite3_stmt* stmt;
|
||||||
|
gint result;
|
||||||
|
|
||||||
|
result = sqlite3_prepare_v2 (db, sqlcmd, -1, &stmt, NULL);
|
||||||
|
if (result != SQLITE_OK)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return katze_array_from_statement (stmt);
|
||||||
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#ifndef __MIDORI_ARRAY_H__
|
#ifndef __MIDORI_ARRAY_H__
|
||||||
#define __MIDORI_ARRAY_H__ 1
|
#define __MIDORI_ARRAY_H__ 1
|
||||||
|
|
||||||
|
#include <sqlite3.h>
|
||||||
#include <katze/katze.h>
|
#include <katze/katze.h>
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
|
@ -26,4 +27,11 @@ midori_array_to_file (KatzeArray* array,
|
||||||
const gchar* format,
|
const gchar* format,
|
||||||
GError** error);
|
GError** error);
|
||||||
|
|
||||||
|
KatzeArray*
|
||||||
|
katze_array_from_statement (sqlite3_stmt* stmt);
|
||||||
|
|
||||||
|
KatzeArray*
|
||||||
|
katze_array_from_sqlite (sqlite3* db,
|
||||||
|
const gchar* sqlcmd);
|
||||||
|
|
||||||
#endif /* !__MIDORI_ARRAY_H__ */
|
#endif /* !__MIDORI_ARRAY_H__ */
|
||||||
|
|
Loading…
Reference in a new issue