X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=apps%2Fagl-service-data-persistence.git;a=blobdiff_plain;f=src%2Fpersistence-binding.c;h=d1327a52343b31873fa57bf98d183b3fbafd8b91;hp=3efb1f0cfb5fe7301c9fcef97595bfd3ab45fe91;hb=fb31aa674d3e006b7a7327c068f048ab9cee1964;hpb=298b2fe4914c63bd7aec2fc6a979d152599e3c46 diff --git a/src/persistence-binding.c b/src/persistence-binding.c index 3efb1f0..d1327a5 100644 --- a/src/persistence-binding.c +++ b/src/persistence-binding.c @@ -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