[couchdb-glib] * couchdb-glib/couchdb-document.c:
- From: Rodrigo Moya <rodrigo src gnome org>
- To: svn-commits-list gnome org
- Subject: [couchdb-glib] * couchdb-glib/couchdb-document.c:
- Date: Wed, 10 Jun 2009 18:51:32 -0400 (EDT)
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]