| 1653 | } |
| 1654 | |
| 1655 | void HandleNSScan(const std::vector<std::string>& parts, |
| 1656 | ::fedb::client::NsClient* client) { |
| 1657 | if (parts.size() < 5) { |
| 1658 | std::cout |
| 1659 | << "scan format error. eg: scan table_name pk start_time end_time " |
| 1660 | "[limit] | scan table_name key key_name start_time end_time " |
| 1661 | "[limit] | scan table_name=xxx key=xxx index_name=xxx st=xxx " |
| 1662 | "et=xxx ts_name=xxx [limit=xxx] [atleast=xxx]" |
| 1663 | << std::endl; |
| 1664 | return; |
| 1665 | } |
| 1666 | std::map<std::string, std::string> parameter_map; |
| 1667 | if (!GetParameterMap("table_name", parts, "=", parameter_map)) { |
| 1668 | std::cout << "scan table_name=xxx key=xxx index_name=xxx st=xxx et=xxx " |
| 1669 | "ts_name=xxx [limit=xxx] [atleast=xxx]" |
| 1670 | << std::endl; |
| 1671 | return; |
| 1672 | } |
| 1673 | bool is_pair_format = parameter_map.empty() ? false : true; |
| 1674 | std::string table_name; |
| 1675 | std::string key; |
| 1676 | std::string index_name; |
| 1677 | uint64_t st = 0; |
| 1678 | uint64_t et = 0; |
| 1679 | std::string ts_name; |
| 1680 | uint32_t limit = 0; |
| 1681 | uint32_t atleast = 0; |
| 1682 | auto iter = parameter_map.begin(); |
| 1683 | try { |
| 1684 | if (is_pair_format) { |
| 1685 | iter = parameter_map.find("table_name"); |
| 1686 | if (iter != parameter_map.end()) { |
| 1687 | table_name = iter->second; |
| 1688 | } else { |
| 1689 | std::cout << "scan format error: table_name does not exist!" |
| 1690 | << std::endl; |
| 1691 | return; |
| 1692 | } |
| 1693 | iter = parameter_map.find("key"); |
| 1694 | if (iter != parameter_map.end()) { |
| 1695 | key = iter->second; |
| 1696 | } else { |
| 1697 | std::cout << "scan format error: key does not exist!" |
| 1698 | << std::endl; |
| 1699 | return; |
| 1700 | } |
| 1701 | iter = parameter_map.find("index_name"); |
| 1702 | if (iter != parameter_map.end()) { |
| 1703 | index_name = iter->second; |
| 1704 | } |
| 1705 | iter = parameter_map.find("st"); |
| 1706 | if (iter != parameter_map.end()) { |
| 1707 | st = boost::lexical_cast<uint64_t>(iter->second); |
| 1708 | } else { |
| 1709 | std::cout << "scan format error: st does not exist!" |
| 1710 | << std::endl; |
| 1711 | return; |
| 1712 | } |
no test coverage detected