Integrate DataQuery

Change-Id: I439374afe485baf08a4d5a1a02fd70d908bec9e1
diff --git a/src/ast_handlers.cpp b/src/ast_handlers.cpp
index ca5fe25..8aa6470 100644
--- a/src/ast_handlers.cpp
+++ b/src/ast_handlers.cpp
@@ -1,10 +1,13 @@
 #include "ast_handlers.hpp"
-std::set<std::string> generateMissingKeyCompletionSet(std::set<std::string> keysNeeded, std::set<std::string> currentSet)
+std::set<std::string> generateMissingKeyCompletionSet(std::set<std::string> keysNeeded, std::map<std::string, leaf_data_> currentKeys)
 {
     std::set<std::string> missingKeys;
-    std::set_difference(keysNeeded.begin(), keysNeeded.end(),
-            currentSet.begin(), currentSet.end(),
-            std::inserter(missingKeys, missingKeys.end()));
+
+    for (const auto& key : keysNeeded) {
+        if (currentKeys.find(key) == currentKeys.end()) {
+            missingKeys.insert(key);
+        }
+    }
 
     std::set<std::string> res;
 
@@ -13,3 +16,12 @@
                    [] (auto it) { return it + "="; });
     return res;
 }
+
+std::string leafDataToCompletion(const leaf_data_& value)
+{
+    // Only string-like values need to be quoted
+    if (value.type() == typeid(std::string)) {
+        return escapeListKeyString(leafDataToString(value));
+    }
+    return leafDataToString(value);
+}