| 1826 | |
| 1827 | template <typename Builder> |
| 1828 | void HTTPServer::queryResultParams(Builder& builder, reindexer::QueryResults& res, std::vector<std::string>&& jsonData, |
| 1829 | const IQRSerializingOption& qrOption, bool withColumns, int width) { |
| 1830 | h_vector<std::string_view, 1> namespaces(res.GetNamespaces()); |
| 1831 | auto namespacesArray = builder.Array(kParamNamespaces, namespaces.size()); |
| 1832 | for (auto ns : namespaces) { |
| 1833 | namespacesArray.Put(TagName::Empty(), ns); |
| 1834 | } |
| 1835 | namespacesArray.End(); |
| 1836 | |
| 1837 | builder.Put(kParamCacheEnabled, res.IsCacheEnabled() && !res.IsWALQuery()); |
| 1838 | |
| 1839 | if (!res.GetExplainResults().empty()) { |
| 1840 | builder.Json(kParamExplain, res.GetExplainResults()); |
| 1841 | } |
| 1842 | |
| 1843 | if (auto totalCount = qrOption.TotalCount(); totalCount.has_value()) { |
| 1844 | builder.Put(kParamTotalItems, int64_t(*totalCount)); |
| 1845 | } |
| 1846 | if (auto queryTotalCount = qrOption.QueryTotalCount(); queryTotalCount.has_value()) { |
| 1847 | builder.Put(kParamQueryTotalItems, int64_t(*queryTotalCount)); |
| 1848 | } |
| 1849 | |
| 1850 | if (withColumns) { |
| 1851 | reindexer::table_view::TableCalculator tableCalculator(std::move(jsonData), width, reindexer::table_view::kNoOpts); |
| 1852 | const auto& header = tableCalculator.GetHeader(); |
| 1853 | auto& columnsSettings = tableCalculator.GetColumnsSettings(); |
| 1854 | auto headerArray = builder.Array(kParamColumns, header.size()); |
| 1855 | for (const auto& part : header) { |
| 1856 | auto& data = columnsSettings[part]; |
| 1857 | auto parametersObj = headerArray.Object(TagName::Empty(), 4); |
| 1858 | parametersObj.Put(kParamName, part); |
| 1859 | parametersObj.Put(kParamWidthPercents, data.widthTerminalPercentage); |
| 1860 | parametersObj.Put(kParamMaxChars, data.maxWidthCh); |
| 1861 | parametersObj.Put(kParamWidthChars, data.widthCh); |
| 1862 | } |
| 1863 | } |
| 1864 | } |
| 1865 | |
| 1866 | int HTTPServer::queryResults(http::Context& ctx, reindexer::QueryResults& res, const IQRSerializingOption& qrOption) { |
| 1867 | const std::string_view widthParam = ctx.request->params.Get("width"sv); |
nothing calls this directly
no test coverage detected