1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#include "yql_servlet.h"
#include <yql/essentials/public/issue/yql_issue.h>
#include <util/string/builder.h>
namespace NYql {
namespace NHttp {
void TYqlAction::WriteStatus(bool success, const TIssues& errors) const {
Writer.Write("succeeded", success);
static const TVector<TString> issueQueue = {"errors", "warnings", "infos"};
static const THashMap<NYql::TSeverityIds::ESeverityId, TStringBuf> severityMap = {
{TSeverityIds::ESeverityId::TSeverityIds_ESeverityId_S_FATAL, "errors"},
{TSeverityIds::ESeverityId::TSeverityIds_ESeverityId_S_ERROR, "errors"},
{TSeverityIds::ESeverityId::TSeverityIds_ESeverityId_S_WARNING, "warnings"},
{TSeverityIds::ESeverityId::TSeverityIds_ESeverityId_S_INFO, "infos"}
};
auto writeIssues = [this](const TString& severity, const TIssues& errors) {
Writer.Write(severity);
Writer.OpenArray();
for (const auto& topIssue: errors) {
if (severity != severityMap.at(topIssue.Severity)) {
continue;
}
WalkThroughIssues(topIssue, false, [this, severity](const TIssue& issue, ui16 level) {
TStringBuilder sb;
sb << TString(level, '>') << issue;
Cerr << sb << Endl;
Writer.Write(sb);
});
}
Writer.CloseArray();
};
for (auto severety: issueQueue) {
writeIssues(severety, errors);
}
}
void TYqlAction::WriteAstTree(const TAstNode* node) {
if (node == nullptr) return;
Writer.OpenMap();
if (node->IsAtom()) {
Writer.Write(TStringBuf("type"), TStringBuf("atom"));
Writer.Write(TStringBuf("content"), node->GetContent());
Writer.Write(TStringBuf("flags"), node->GetFlags());
} else if (node->IsList()) {
Writer.Write(TStringBuf("type"), TStringBuf("list"));
Writer.Write(TStringBuf("content"), TStringBuf("( )"));
if (node->GetChildrenCount() > 0) {
Writer.Write(TStringBuf("children"));
Writer.OpenArray();
for (ui32 index = 0; index < node->GetChildrenCount(); ++index) {
WriteAstTree(node->GetChild(index));
}
Writer.CloseArray();
}
}
Writer.CloseMap();
}
} // namspace NNttp
} // namspace NYql
|