rds/src/model/DescribeDatabasesResult.cc (80 lines of code) (raw):
/*
* Copyright 2009-2017 Alibaba Cloud All rights reserved.
*
* 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.
*/
#include <alibabacloud/rds/model/DescribeDatabasesResult.h>
#include <json/json.h>
using namespace AlibabaCloud::Rds;
using namespace AlibabaCloud::Rds::Model;
DescribeDatabasesResult::DescribeDatabasesResult() :
ServiceResult()
{}
DescribeDatabasesResult::DescribeDatabasesResult(const std::string &payload) :
ServiceResult()
{
parse(payload);
}
DescribeDatabasesResult::~DescribeDatabasesResult()
{}
void DescribeDatabasesResult::parse(const std::string &payload)
{
Json::Reader reader;
Json::Value value;
reader.parse(payload, value);
setRequestId(value["RequestId"].asString());
auto allDatabasesNode = value["Databases"]["Database"];
for (auto valueDatabasesDatabase : allDatabasesNode)
{
Database databasesObject;
if(!valueDatabasesDatabase["DBDescription"].isNull())
databasesObject.dBDescription = valueDatabasesDatabase["DBDescription"].asString();
if(!valueDatabasesDatabase["DBStatus"].isNull())
databasesObject.dBStatus = valueDatabasesDatabase["DBStatus"].asString();
if(!valueDatabasesDatabase["DBName"].isNull())
databasesObject.dBName = valueDatabasesDatabase["DBName"].asString();
if(!valueDatabasesDatabase["DBInstanceId"].isNull())
databasesObject.dBInstanceId = valueDatabasesDatabase["DBInstanceId"].asString();
if(!valueDatabasesDatabase["Engine"].isNull())
databasesObject.engine = valueDatabasesDatabase["Engine"].asString();
if(!valueDatabasesDatabase["CharacterSetName"].isNull())
databasesObject.characterSetName = valueDatabasesDatabase["CharacterSetName"].asString();
if(!valueDatabasesDatabase["Collate"].isNull())
databasesObject.collate = valueDatabasesDatabase["Collate"].asString();
if(!valueDatabasesDatabase["Ctype"].isNull())
databasesObject.ctype = valueDatabasesDatabase["Ctype"].asString();
if(!valueDatabasesDatabase["ConnLimit"].isNull())
databasesObject.connLimit = valueDatabasesDatabase["ConnLimit"].asString();
if(!valueDatabasesDatabase["Tablespace"].isNull())
databasesObject.tablespace = valueDatabasesDatabase["Tablespace"].asString();
if(!valueDatabasesDatabase["ResourceGroupId"].isNull())
databasesObject.resourceGroupId = valueDatabasesDatabase["ResourceGroupId"].asString();
if(!valueDatabasesDatabase["PageNumber"].isNull())
databasesObject.pageNumber = std::stoi(valueDatabasesDatabase["PageNumber"].asString());
if(!valueDatabasesDatabase["PageSize"].isNull())
databasesObject.pageSize = std::stoi(valueDatabasesDatabase["PageSize"].asString());
if(!valueDatabasesDatabase["TotalCount"].isNull())
databasesObject.totalCount = std::stoi(valueDatabasesDatabase["TotalCount"].asString());
auto allAccountsNode = valueDatabasesDatabase["Accounts"]["AccountPrivilegeInfo"];
for (auto valueDatabasesDatabaseAccountsAccountPrivilegeInfo : allAccountsNode)
{
Database::AccountPrivilegeInfo accountsObject;
if(!valueDatabasesDatabaseAccountsAccountPrivilegeInfo["Account"].isNull())
accountsObject.account = valueDatabasesDatabaseAccountsAccountPrivilegeInfo["Account"].asString();
if(!valueDatabasesDatabaseAccountsAccountPrivilegeInfo["AccountPrivilege"].isNull())
accountsObject.accountPrivilege = valueDatabasesDatabaseAccountsAccountPrivilegeInfo["AccountPrivilege"].asString();
if(!valueDatabasesDatabaseAccountsAccountPrivilegeInfo["AccountPrivilegeDetail"].isNull())
accountsObject.accountPrivilegeDetail = valueDatabasesDatabaseAccountsAccountPrivilegeInfo["AccountPrivilegeDetail"].asString();
databasesObject.accounts.push_back(accountsObject);
}
auto allBasicInfo = value["BasicInfo"]["BasicDbProperty"];
for (auto value : allBasicInfo)
databasesObject.basicInfo.push_back(value.asString());
auto allRuntimeInfo = value["RuntimeInfo"]["RuntimeDbProperty"];
for (auto value : allRuntimeInfo)
databasesObject.runtimeInfo.push_back(value.asString());
auto allAdvancedInfo = value["AdvancedInfo"]["AdvancedDbProperty"];
for (auto value : allAdvancedInfo)
databasesObject.advancedInfo.push_back(value.asString());
databases_.push_back(databasesObject);
}
}
std::vector<DescribeDatabasesResult::Database> DescribeDatabasesResult::getDatabases()const
{
return databases_;
}