[couchdb-glib] * couchdb-glib/couchdb-document.c:



commit 569f23ae6fdb6dff478e4bac055125435205550b
Author: Rodrigo Moya <rodrigo gnome-db org>
Date:   Thu Jun 11 00:46:05 2009 +0200

    * couchdb-glib/couchdb-document.c:
    * couchdb-glib/couchdb-glib.h:
    	(couchdb_document_get/set_*_field): added API to set/get individual
    	field values from documents.
---
 couchdb-glib/couchdb-document.c |   97 ++++++++++++++++++++++++++++++++++++++-
 couchdb-glib/couchdb-glib.h     |   11 ++++
 2 files changed, 107 insertions(+), 1 deletions(-)

diff --git a/couchdb-glib/couchdb-document.c b/couchdb-glib/couchdb-document.c
index 28ad894..64be2e4 100644
--- a/couchdb-glib/couchdb-document.c
+++ b/couchdb-glib/couchdb-document.c
@@ -69,7 +69,7 @@ couchdb_document_new (CouchDB *couchdb)
 	document = g_object_new (COUCHDB_TYPE_DOCUMENT, NULL);
 	document->couchdb = couchdb;
 	document->dbname = NULL;
-	document->root_node = NULL;
+	document->root_node = json_node_new (JSON_NODE_OBJECT);
 
 	return document;
 }
@@ -119,6 +119,17 @@ couchdb_document_get_id (CouchDBDocument *document)
 	return NULL;
 }
 
+void
+couchdb_document_set_id (CouchDBDocument *document, const char *id)
+{
+	g_return_if_fail (COUCHDB_IS_DOCUMENT (document));
+	g_return_if_fail (id != NULL);
+
+	json_object_set_string_member (json_node_get_object (document->root_node),
+				       "_id",
+				       id);
+}
+
 const char *
 couchdb_document_get_revision (CouchDBDocument *document)
 {
@@ -134,6 +145,90 @@ couchdb_document_get_revision (CouchDBDocument *document)
 	return NULL;
 }
 
+gboolean
+couchdb_document_get_boolean_field (CouchDBDocument *document, const char *field)
+{
+	g_return_val_if_fail (COUCHDB_IS_DOCUMENT (document), FALSE);
+	g_return_val_if_fail (field != NULL, FALSE);
+
+	return json_object_get_boolean_member (json_node_get_object (document->root_node),
+					       field);
+}
+
+void
+couchdb_document_set_boolean_field (CouchDBDocument *document, const char *field, gboolean value)
+{
+	g_return_if_fail (COUCHDB_IS_DOCUMENT (document));
+	g_return_if_fail (field != NULL);
+
+	json_object_set_boolean_member (json_node_get_object (document->root_node),
+					field,
+					value);
+}
+
+gint
+couchdb_document_get_int_field (CouchDBDocument *document, const char *field)
+{
+	g_return_val_if_fail (COUCHDB_IS_DOCUMENT (document), -1);
+	g_return_val_if_fail (field != NULL, -1);
+
+	return json_object_get_int_member (json_node_get_object (document->root_node),
+					   field);
+}
+
+void
+couchdb_document_set_int_field (CouchDBDocument *document, const char *field, gint value)
+{
+	g_return_if_fail (COUCHDB_IS_DOCUMENT (document));
+	g_return_if_fail (field != NULL);
+
+	json_object_set_int_member (json_node_get_object (document->root_node),
+				    field,
+				    value);
+}
+
+gdouble
+couchdb_document_get_double_field (CouchDBDocument *document, const char *field)
+{
+	g_return_val_if_fail (COUCHDB_IS_DOCUMENT (document), -1);
+	g_return_val_if_fail (field != NULL, -1);
+
+	return json_object_get_double_member (json_node_get_object (document->root_node),
+					      field);
+}
+
+void
+couchdb_document_set_double_field (CouchDBDocument *document, const char *field, gdouble value)
+{
+	g_return_if_fail (COUCHDB_IS_DOCUMENT (document));
+	g_return_if_fail (field != NULL);
+
+	json_object_set_double_member (json_node_get_object (document->root_node),
+				       field,
+				       value);
+}
+
+const char *
+couchdb_document_get_string_field (CouchDBDocument *document, const char *field)
+{
+	g_return_val_if_fail (COUCHDB_IS_DOCUMENT (document), NULL);
+	g_return_val_if_fail (field != NULL, NULL);
+
+	return json_object_get_string_member (json_node_get_object (document->root_node),
+					      field);
+}
+
+void
+couchdb_document_set_string_field (CouchDBDocument *document, const char *field, const char *value)
+{
+	g_return_if_fail (COUCHDB_IS_DOCUMENT (document));
+	g_return_if_fail (field != NULL);
+
+	json_object_set_string_member (json_node_get_object (document->root_node),
+				       field,
+				       value);
+}
+
 char *
 couchdb_document_to_string (CouchDBDocument *document)
 {
diff --git a/couchdb-glib/couchdb-glib.h b/couchdb-glib/couchdb-glib.h
index 7efd133..eaf693a 100644
--- a/couchdb-glib/couchdb-glib.h
+++ b/couchdb-glib/couchdb-glib.h
@@ -90,8 +90,19 @@ CouchDBDocument *couchdb_document_get (CouchDB *couchdb,
 				       const char *docid,
 				       GError **error);
 const char      *couchdb_document_get_id (CouchDBDocument *document);
+void             couchdb_document_set_id (CouchDBDocument *document, const char *id);
+
 const char      *couchdb_document_get_revision (CouchDBDocument *document);
 
+gboolean    couchdb_document_get_boolean_field (CouchDBDocument *document, const char *field);
+void        couchdb_document_set_boolean_field (CouchDBDocument *document, const char *field, gboolean value);
+gint        couchdb_document_get_int_field (CouchDBDocument *document, const char *field);
+void        couchdb_document_set_int_field (CouchDBDocument *document, const char *field, gint value);
+gdouble     couchdb_document_get_double_field (CouchDBDocument *document, const char *field);
+void        couchdb_document_set_double_field (CouchDBDocument *document, const char *field, gdouble value);
+const char *couchdb_document_get_string_field (CouchDBDocument *document, const char *field);
+void        couchdb_document_set_string_field (CouchDBDocument *document, const char *field, const char *value);
+
 char            *couchdb_document_to_string (CouchDBDocument *document);
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]