binding: data-persistence: Modified the response of verb_read
[apps/agl-service-data-persistence.git] / src / persistence-binding.c
index 3efb1f0..d1327a5 100644 (file)
@@ -236,24 +236,40 @@ static void xdb_delete(afb_req_t req, datum *key)
 static void xdb_get(afb_req_t req, datum *key)
 {
        struct json_object* obj;
+       struct json_object* args;
+       struct json_object* item = NULL;
        datum result;
 
+       /* get the key */
+        args = afb_req_json(req);
+
+       obj = json_object_new_object();
+
+       if (json_object_object_get_ex(args, "key", &item))
+        {
+               json_object_object_add(obj, "key", json_object_get(item));
+        }
+
        result = gdbm_fetch(database, *key);
        if (result.dptr)
        {
-               obj = json_object_new_object();
+
                json_object_object_add(obj, "value", json_tokener_parse(result.dptr));
+
                afb_req_reply(req, obj, NULL, NULL);
+
                free(result.dptr);
+
        }
        else
        {
+               json_object_object_add(obj, "value", NULL);
                AFB_API_ERROR(afbBindingRoot, "can't get key %s: %s%s%s",
                        DATA_STR(*key),
                        gdbm_strerror(gdbm_errno),
                        IFSYS(", ", ""),
                        IFSYS(strerror(errno), ""));
-               afb_req_reply_f(req, NULL, "failed", "%s", gdbm_strerror(gdbm_errno));
+               afb_req_reply_f(req, obj, "failed", "%s", gdbm_strerror(gdbm_errno));
        }
 }
 #endif