/* * Copyright (c) 2017 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef QUERY_HPP #define QUERY_HPP #include #include #include #include #include "json.h" typedef struct QueryKeys { static const std::string ACTION; static const std::string OBJECT_NAME; static const std::string FILTER; static const std::string PARAMS; static const std::string FIELD_NAMES; static const std::string LAST; } QueryKeys; // for convenience typedef nlohmann::json Json2; class Query { public: Query(); Query(const std::string& action, const std::string& objectName, const std::list>& filter, const std::map& params, const std::list& fields, bool last); static Query fromJsonString(const std::string &jsonString); static void removeQuotes(std::string& string); static std::string toJsonString(const Query &query); static std::string toJsonString(const std::string& action, const std::string& objectName, const std::list>& filter, const std::map& params, const std::list& fields, bool last); std::string toJsonString(); const std::string& getAction() const; void setAction(const std::string &action); const std::string& getObjectName() const; void setObjectName(const std::string &objectName); const std::list>& getFilter() const; void setFilter(const std::list>& filter); const std::map& getParams() const; void setParams(const std::map& params); const std::list& getFields() const; void setFields(const std::list& fields); bool isLast() const; void setLast(int last); bool isEmpty(); private: Json2 query; std::string action; std::string objectName; std::list> filter; std::map params; std::list fields; bool last; }; #endif //QUERY_HPP