summaryrefslogtreecommitdiffstats
path: root/yql/essentials/public/fastcheck/utils.cpp
blob: b7bc127e1ceaded77f8af08d704e5d7dd68930ae (plain) (blame)
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
#include "utils.h"
#include "settings.h"

#include <yql/essentials/providers/common/provider/yql_provider_names.h>

namespace NYql::NFastCheck {

std::unique_ptr<IUdfMeta> LoadUdfMeta(TStringBuf json) {
    return ParseUdfMeta(NJson::ReadJsonFastTree(json));
}

void FillClusters(const TChecksRequest& request, NSQLTranslation::TTranslationSettings& settings) {
    if (!request.ClusterSystem.empty()) {
        Y_ENSURE(FindPtr(Providers, request.ClusterSystem), "Invalid ClusterSystem value: " + request.ClusterSystem);
    }

    switch (request.ClusterMode) {
        case EClusterMode::Many:
            for (const auto& x : request.ClusterMapping) {
                Y_ENSURE(AnyOf(Providers, [&](const auto& p) { return p == x.second; }),
                         "Invalid system: " + x.second);
            }

            settings.ClusterMapping = request.ClusterMapping;
            settings.DynamicClusterProvider = request.ClusterSystem;
            break;
        case EClusterMode::Single:
            Y_ENSURE(!request.ClusterSystem.empty(), "Missing ClusterSystem parameter");
            settings.DefaultCluster = "single";
            settings.ClusterMapping["single"] = request.ClusterSystem;
            settings.DynamicClusterProvider = request.ClusterSystem;
            break;
        case EClusterMode::Unknown:
            settings.DefaultCluster = "single";
            settings.ClusterMapping["single"] = UnknownProviderName;
            settings.DynamicClusterProvider = UnknownProviderName;
            break;
    }
}

} // namespace NYql::NFastCheck