Flex  0.17.9
graph_db_operations.h
Go to the documentation of this file.
1 
15 #ifndef ENGINES_GRAPH_DB_DATABASE_OPERATIONS_H_
16 #define ENGINES_GRAPH_DB_DATABASE_OPERATIONS_H_
17 
18 #include <string>
19 #include <unordered_map>
20 #include <vector>
21 
22 
25 #include "utils/result.h"
26 
27 #include <rapidjson/document.h>
28 
29 namespace gs {
30 
31 struct VertexData {
34  std::vector<Any> properties;
37 };
38 
39 struct EdgeData {
43  EdgeData() {}
44  ~EdgeData() {}
45 };
46 
48  public:
50  rapidjson::Document&& input_json);
52  rapidjson::Document&& input_json);
54  rapidjson::Document&& input_json);
56  rapidjson::Document&& input_json);
58  GraphDBSession& session,
59  std::unordered_map<std::string, std::string>&& params);
61  GraphDBSession& session,
62  std::unordered_map<std::string, std::string>&& params);
64  rapidjson::Document&& input_json);
66  rapidjson::Document&& input_json);
67 
68  private:
69  // The following interfaces are called before the Transaction is constructed
70  static VertexData inputVertex(const rapidjson::Value& vertex_json,
71  const Schema& schema, GraphDBSession& session);
72  static EdgeData inputEdge(const rapidjson::Value& edge_json,
73  const Schema& schema, GraphDBSession& session);
74  // check schema
76  const Schema& schema, VertexData& vertex, const std::string& label,
77  std::vector<std::string>& input_property_names, bool is_get = false);
78 
79  static Status checkEdgeSchema(const Schema& schema, EdgeData& edge,
80  const std::string& src_label,
81  const std::string& dst_label,
82  const std::string& edge_label,
83  std::string& property_name,
84  bool is_get = false);
85 
86  // The following interfaces are called after the Transaction is constructed
87  // db check
89  const std::vector<EdgeData>& edge_data, GraphDBSession& session);
90  static Status checkEdgeExists(const std::vector<EdgeData>& edge_data,
91  GraphDBSession& session);
92  static Status checkVertexExists(const std::vector<VertexData>& vertex_data,
93  GraphDBSession& session);
94  // db operations
95  static Status multiInsert(std::vector<VertexData>&& vertex_data,
96  std::vector<EdgeData>&& edge_data,
97  GraphDBSession& session);
98  static Status singleInsertVertex(std::vector<VertexData>&& vertex_data,
99  std::vector<EdgeData>&& edge_data,
100  GraphDBSession& session);
101  static Status insertVertex(std::vector<VertexData>&& vertex_data,
102  std::vector<EdgeData>&& edge_data,
103  GraphDBSession& session);
104  static Status singleInsertEdge(std::vector<EdgeData>&& edge_data,
105  GraphDBSession& session);
106  static Status insertEdge(std::vector<EdgeData>&& edge_data,
107  GraphDBSession& session);
108  static Status updateVertex(std::vector<VertexData>&& vertex_data,
109  GraphDBSession& session);
110  static Status updateEdge(std::vector<EdgeData>&& edge_data,
111  GraphDBSession& session);
112  static Result<rapidjson::Value> getEdge(std::vector<EdgeData>&& edge_data,
113  const std::string& property_name,
114  GraphDBSession& session);
116  std::vector<VertexData>&& vertex_data,
117  const std::vector<std::string>& property_names, GraphDBSession& session);
118 };
119 
120 } // namespace gs
121 
122 #endif // ENGINES_GRAPH_DB_DATABASE_OPERATIONS_H_
gs::GraphDBOperations::inputVertex
static VertexData inputVertex(const rapidjson::Value &vertex_json, const Schema &schema, GraphDBSession &session)
Definition: graph_db_operations.cc:226
gs::GraphDBOperations::checkEdgeExistsWithInsert
static Status checkEdgeExistsWithInsert(const std::vector< EdgeData > &edge_data, GraphDBSession &session)
Definition: graph_db_operations.cc:354
gs::VertexData::pk_value
Any pk_value
Definition: graph_db_operations.h:32
gs::Result
Definition: result.h:62
gs::GraphDBOperations::UpdateEdge
static Result< std::string > UpdateEdge(GraphDBSession &session, rapidjson::Document &&input_json)
Definition: graph_db_operations.cc:123
gs::Any
Definition: types.h:383
graph_db_session.h
gs::EdgeData
Definition: graph_db_operations.h:39
gs::EdgeData::edge_label_id
label_t edge_label_id
Definition: graph_db_operations.h:40
gs::VertexData::label_id
label_t label_id
Definition: graph_db_operations.h:33
gs::VertexData::~VertexData
~VertexData()
Definition: graph_db_operations.h:36
gs::GraphDBOperations::DeleteEdge
static Result< std::string > DeleteEdge(GraphDBSession &session, rapidjson::Document &&input_json)
Definition: graph_db_operations.cc:219
gs
Definition: adj_list.h:23
gs::GraphDBOperations
Definition: graph_db_operations.h:47
gs::GraphDBOperations::GetVertex
static Result< std::string > GetVertex(GraphDBSession &session, std::unordered_map< std::string, std::string > &&params)
Definition: graph_db_operations.cc:145
gs::GraphDBOperations::insertVertex
static Status insertVertex(std::vector< VertexData > &&vertex_data, std::vector< EdgeData > &&edge_data, GraphDBSession &session)
Definition: graph_db_operations.cc:489
gs::GraphDBOperations::singleInsertVertex
static Status singleInsertVertex(std::vector< VertexData > &&vertex_data, std::vector< EdgeData > &&edge_data, GraphDBSession &session)
Definition: graph_db_operations.cc:432
gs::VertexData::VertexData
VertexData()
Definition: graph_db_operations.h:35
gs::GraphDBOperations::UpdateVertex
static Result< std::string > UpdateVertex(GraphDBSession &session, rapidjson::Document &&input_json)
Definition: graph_db_operations.cc:101
gs::GraphDBOperations::updateVertex
static Status updateVertex(std::vector< VertexData > &&vertex_data, GraphDBSession &session)
Definition: graph_db_operations.cc:542
gs::GraphDBOperations::checkEdgeSchema
static Status checkEdgeSchema(const Schema &schema, EdgeData &edge, const std::string &src_label, const std::string &dst_label, const std::string &edge_label, std::string &property_name, bool is_get=false)
Definition: graph_db_operations.cc:313
gs::GraphDBOperations::DeleteVertex
static Result< std::string > DeleteVertex(GraphDBSession &session, rapidjson::Document &&input_json)
Definition: graph_db_operations.cc:213
gs::GraphDBOperations::CreateEdge
static Result< std::string > CreateEdge(GraphDBSession &session, rapidjson::Document &&input_json)
Definition: graph_db_operations.cc:71
gs::EdgeData::src_pk_value
Any src_pk_value
Definition: graph_db_operations.h:41
gs::Schema
Definition: schema.h:29
gs::GraphDBOperations::GetEdge
static Result< std::string > GetEdge(GraphDBSession &session, std::unordered_map< std::string, std::string > &&params)
Definition: graph_db_operations.cc:171
gs::GraphDBOperations::checkVertexSchema
static Status checkVertexSchema(const Schema &schema, VertexData &vertex, const std::string &label, std::vector< std::string > &input_property_names, bool is_get=false)
Definition: graph_db_operations.cc:281
gs::GraphDBSession
Definition: graph_db_session.h:36
gs::GraphDBOperations::insertEdge
static Status insertEdge(std::vector< EdgeData > &&edge_data, GraphDBSession &session)
Definition: graph_db_operations.cc:528
gs::GraphDBOperations::inputEdge
static EdgeData inputEdge(const rapidjson::Value &edge_json, const Schema &schema, GraphDBSession &session)
Definition: graph_db_operations.cc:253
gs::VertexData::properties
std::vector< Any > properties
Definition: graph_db_operations.h:34
gs::Status
Definition: result.h:32
result.h
gs::VertexData
Definition: graph_db_operations.h:31
gs::GraphDBOperations::checkVertexExists
static Status checkVertexExists(const std::vector< VertexData > &vertex_data, GraphDBSession &session)
Definition: graph_db_operations.cc:414
gs::GraphDBOperations::getVertex
static Result< rapidjson::Value > getVertex(std::vector< VertexData > &&vertex_data, const std::vector< std::string > &property_names, GraphDBSession &session)
Definition: graph_db_operations.cc:606
gs::EdgeData::EdgeData
EdgeData()
Definition: graph_db_operations.h:43
gs::EdgeData::src_label_id
label_t src_label_id
Definition: graph_db_operations.h:40
gs::EdgeData::dst_label_id
label_t dst_label_id
Definition: graph_db_operations.h:40
gs::GraphDBOperations::updateEdge
static Status updateEdge(std::vector< EdgeData > &&edge_data, GraphDBSession &session)
Definition: graph_db_operations.cc:569
gs::EdgeData::~EdgeData
~EdgeData()
Definition: graph_db_operations.h:44
graph_db.h
gs::EdgeData::dst_pk_value
Any dst_pk_value
Definition: graph_db_operations.h:41
gs::EdgeData::property_value
Any property_value
Definition: graph_db_operations.h:42
gs::GraphDBOperations::multiInsert
static Status multiInsert(std::vector< VertexData > &&vertex_data, std::vector< EdgeData > &&edge_data, GraphDBSession &session)
Definition: graph_db_operations.cc:461
gs::label_t
uint8_t label_t
Definition: types.h:32
gs::GraphDBOperations::singleInsertEdge
static Status singleInsertEdge(std::vector< EdgeData > &&edge_data, GraphDBSession &session)
Definition: graph_db_operations.cc:508
gs::GraphDBOperations::checkEdgeExists
static Status checkEdgeExists(const std::vector< EdgeData > &edge_data, GraphDBSession &session)
Definition: graph_db_operations.cc:384
gs::GraphDBOperations::getEdge
static Result< rapidjson::Value > getEdge(std::vector< EdgeData > &&edge_data, const std::string &property_name, GraphDBSession &session)
Definition: graph_db_operations.cc:633
gs::GraphDBOperations::CreateVertex
static Result< std::string > CreateVertex(GraphDBSession &session, rapidjson::Document &&input_json)
Definition: graph_db_operations.cc:29