initial work on query engine, only rough draft of the first level of the arhitecture, implementation is still empty
This commit is contained in:
parent
aa49a0997e
commit
e2bbcae3ac
15
cypher/common.hpp
Normal file
15
cypher/common.hpp
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
#include "utils/command_line/arguments.hpp"
|
||||
#include "utils/string/filereader.hpp"
|
||||
|
||||
std::string extract_query(const vector_str& arguments)
|
||||
{
|
||||
if (contain_argument(arguments, "-q"))
|
||||
return get_argument(arguments, "-q", "CREATE (n) RETURN n");
|
||||
auto default_file = "query.cypher";
|
||||
auto file = get_argument(arguments, "-f", default_file);
|
||||
// TODO: error handling
|
||||
return read_file(file.c_str());
|
||||
}
|
||||
|
@ -6,8 +6,7 @@
|
||||
#include "debug/tree_print.hpp"
|
||||
#include "codegen/cppgen.hpp"
|
||||
#include "utils/command_line/arguments.hpp"
|
||||
#include "utils/string/filereader.hpp"
|
||||
|
||||
#include "cypher/common.hpp"
|
||||
#include "utils/terminate_handler.hpp"
|
||||
|
||||
using std::cout;
|
||||
@ -17,17 +16,7 @@ using std::endl;
|
||||
// -q -> query
|
||||
// -v -> visitor
|
||||
// -f -> file
|
||||
|
||||
std::string extract_query(const vector_str& arguments)
|
||||
{
|
||||
if (contain_argument(arguments, "-q"))
|
||||
return get_argument(arguments, "-q", "CREATE (n {a:1, b:2}) RETURN n");
|
||||
auto default_file = "query/read/match/match-where.cypher";
|
||||
auto file = get_argument(arguments, "-f", default_file);
|
||||
// TODO: error handling
|
||||
return read_file(file.c_str());
|
||||
}
|
||||
|
||||
//
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
std::set_terminate(&terminate_handler);
|
||||
|
@ -1 +1 @@
|
||||
CREATE (n {name: "value"})
|
||||
CREATE (n {name: "Roy", surname: "Keane"})
|
||||
|
5
query_engine/code_compiler.hpp
Normal file
5
query_engine/code_compiler.hpp
Normal file
@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
class CodeCompiler
|
||||
{
|
||||
};
|
5
query_engine/code_generator.hpp
Normal file
5
query_engine/code_generator.hpp
Normal file
@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
class CodeGenerator
|
||||
{
|
||||
};
|
BIN
query_engine/engine
Executable file
BIN
query_engine/engine
Executable file
Binary file not shown.
23
query_engine/main.cpp
Normal file
23
query_engine/main.cpp
Normal file
@ -0,0 +1,23 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "utils/command_line/arguments.hpp"
|
||||
#include "cypher/common.hpp"
|
||||
#include "query_engine.hpp"
|
||||
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
// arguments parsing
|
||||
auto arguments = all_arguments(argc, argv);
|
||||
|
||||
// query extraction
|
||||
auto cypher_query = extract_query(arguments);
|
||||
cout << "QUERY: " << cypher_query << endl;
|
||||
|
||||
QueryEngine engine;
|
||||
engine.execute(cypher_query);
|
||||
|
||||
return 0;
|
||||
}
|
33
query_engine/query_engine.hpp
Normal file
33
query_engine/query_engine.hpp
Normal file
@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "query_traverser.hpp"
|
||||
#include "code_generator.hpp"
|
||||
#include "code_compiler.hpp"
|
||||
#include "query_executor.hpp"
|
||||
#include "query_result.hpp"
|
||||
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
|
||||
//
|
||||
// Current arhitecture:
|
||||
// query -> traverser -> [generator] -> [compiler] -> executor
|
||||
//
|
||||
|
||||
class QueryEngine
|
||||
{
|
||||
public:
|
||||
QueryResult execute(const std::string& query)
|
||||
{
|
||||
cout << "execute: " << query << endl;
|
||||
return QueryResult();
|
||||
}
|
||||
|
||||
private:
|
||||
QueryTraverser traverser;
|
||||
CodeGenerator generator;
|
||||
CodeCompiler compiler;
|
||||
QueryExecutor executor;
|
||||
};
|
5
query_engine/query_executor.hpp
Normal file
5
query_engine/query_executor.hpp
Normal file
@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
class QueryExecutor
|
||||
{
|
||||
};
|
9
query_engine/query_result.hpp
Normal file
9
query_engine/query_result.hpp
Normal file
@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
class QueryResult
|
||||
{
|
||||
public:
|
||||
std::string result;
|
||||
};
|
5
query_engine/query_traverser.hpp
Normal file
5
query_engine/query_traverser.hpp
Normal file
@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
class QueryTraverser
|
||||
{
|
||||
};
|
Loading…
Reference in New Issue
Block a user