1/**
2 * Copyright 2021 Alibaba, Inc. and its affiliates. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 * \author guonix
17 * \date Nov 2020
18 * \brief
19 */
20
21#pragma once
22
23#include "executor/executor.h"
24#include "context.h"
25#include "meta_wrapper.h"
26#include "query.h"
27
28namespace proxima {
29namespace be {
30namespace query {
31
32
33/*!
34 * Create query object from pb.request
35 */
36class QueryFactory {
37 public:
38 //! Factory method, build one Query Object from PB Request
39 // Valid Query Object returned on success, otherwise return DUMMY OBJECT
40 static QueryPtr Create(const proto::QueryRequest *request,
41 index::IndexServicePtr index_service,
42 MetaWrapperPtr meta_service, ExecutorPtr executor,
43 ProfilerPtr profiler, proto::QueryResponse *response);
44
45 //! Factory method, build one Query Object
46 static QueryPtr Create(const proto::GetDocumentRequest *request,
47 index::IndexServicePtr index_service,
48 MetaWrapperPtr meta_service, ExecutorPtr executor,
49 ProfilerPtr profiler,
50 proto::GetDocumentResponse *response);
51};
52
53
54} // namespace query
55} // namespace be
56} // namespace proxima
57