[gom] gom: Add automatic migration support for flags/enum
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gom] gom: Add automatic migration support for flags/enum
- Date: Fri, 18 Apr 2014 08:33:23 +0000 (UTC)
commit 4b17d100ec56926dd29c7f35bc79df3794b29c82
Author: Bastien Nocera <hadess hadess net>
Date: Fri Apr 18 10:32:32 2014 +0200
gom: Add automatic migration support for flags/enum
gom/gom-command-builder.c | 6 ++++++
gom/gom-command.c | 6 ++++++
gom/gom-cursor.c | 6 ++++++
3 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/gom/gom-command-builder.c b/gom/gom-command-builder.c
index 7ad4a82..aea5b76 100644
--- a/gom/gom-command-builder.c
+++ b/gom/gom-command-builder.c
@@ -55,6 +55,8 @@ static GParamSpec *gParamSpecs[LAST_PROP];
static const char *
sql_type_for_column (GParamSpec *pspec)
{
+ GType parent_type;
+
switch (pspec->value_type) {
case G_TYPE_INT:
case G_TYPE_INT64:
@@ -70,6 +72,10 @@ sql_type_for_column (GParamSpec *pspec)
if (pspec->value_type == G_TYPE_STRV ||
pspec->value_type == G_TYPE_DATE_TIME)
return "BLOB";
+ parent_type = g_type_parent(pspec->value_type);
+ if (parent_type == G_TYPE_ENUM ||
+ parent_type == G_TYPE_FLAGS)
+ return "INTEGER";
if (g_param_spec_get_qdata(pspec, GOM_RESOURCE_FROM_BYTES_FUNC) != NULL)
return "BLOB";
return NULL;
diff --git a/gom/gom-command.c b/gom/gom-command.c
index 98d8d16..645776f 100644
--- a/gom/gom-command.c
+++ b/gom/gom-command.c
@@ -80,6 +80,12 @@ gom_command_bind_param (GomCommand *command,
case G_TYPE_UINT64:
sqlite3_bind_int64(priv->stmt, param, g_value_get_uint64(value));
break;
+ case G_TYPE_ENUM:
+ sqlite3_bind_int(priv->stmt, param, g_value_get_enum(value));
+ break;
+ case G_TYPE_FLAGS:
+ sqlite3_bind_int(priv->stmt, param, g_value_get_flags(value));
+ break;
case G_TYPE_STRING:
sqlite3_bind_text(priv->stmt, param,
g_value_dup_string(value), -1, g_free);
diff --git a/gom/gom-cursor.c b/gom/gom-cursor.c
index 70564e4..7a9f6d6 100644
--- a/gom/gom-cursor.c
+++ b/gom/gom-cursor.c
@@ -78,6 +78,12 @@ gom_cursor_get_column (GomCursor *cursor,
case G_TYPE_UINT64:
g_value_set_uint64(value, sqlite3_column_int64(priv->stmt, column));
break;
+ case G_TYPE_ENUM:
+ g_value_set_enum(value, sqlite3_column_int(priv->stmt, column));
+ break;
+ case G_TYPE_FLAGS:
+ g_value_set_flags(value, sqlite3_column_int(priv->stmt, column));
+ break;
default:
if (G_VALUE_TYPE(value) == G_TYPE_DATE_TIME) {
GTimeVal tv = { 0 };
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]