25 #include <unordered_map>
28 #include "result/result.hpp"
30 #include "graphar/macros.h"
31 #include "graphar/status.h"
65 using Result = cpp::result<T, Status>;
72 using IdType = int64_t;
76 enum FileType { CSV = 0, PARQUET = 1, ORC = 2, JSON = 3 };
77 enum class AdjListType : uint8_t;
93 using PropertyGroupVector = std::vector<std::shared_ptr<PropertyGroup>>;
94 using AdjacentListVector = std::vector<std::shared_ptr<AdjacentList>>;
95 using VertexInfoVector = std::vector<std::shared_ptr<VertexInfo>>;
96 using EdgeInfoVector = std::vector<std::shared_ptr<EdgeInfo>>;
107 std::shared_ptr<PropertyGroup> CreatePropertyGroup(
108 const std::vector<Property>& properties, FileType file_type,
109 const std::string& prefix = "");
120 std::shared_ptr<AdjacentList> CreateAdjacentList(
121 AdjListType type, FileType file_type, const std::string& prefix = "");
134 std::shared_ptr<VertexInfo> CreateVertexInfo(
135 const std::string& label, IdType chunk_size,
136 const PropertyGroupVector& property_groups, const std::string& prefix = "",
137 std::shared_ptr<const InfoVersion> version = nullptr);
156 std::shared_ptr<EdgeInfo> CreateEdgeInfo(
157 const std::string& src_label, const std::string& edge_label,
158 const std::string& dst_label, IdType chunk_size, IdType src_chunk_size,
159 IdType dst_chunk_size, bool directed,
160 const AdjacentListVector& adjacent_lists,
161 const PropertyGroupVector& property_groups, const std::string& prefix = "",
162 std::shared_ptr<const InfoVersion> version = nullptr);
176 std::shared_ptr<GraphInfo> CreateGraphInfo(
177 const std::string& name, const VertexInfoVector& vertex_infos,
178 const EdgeInfoVector& edge_infos, const std::string& prefix,
179 std::shared_ptr<const InfoVersion> version = nullptr,
180 const std::unordered_map<std::string, std::string>& extra_info = {});
183 const std::shared_ptr<DataType>& boolean();
185 const std::shared_ptr<DataType>& int32();
187 const std::shared_ptr<DataType>& int64();
189 const std::shared_ptr<DataType>& float32();
191 const std::shared_ptr<DataType>& float64();
193 const std::shared_ptr<DataType>& string();
195 const std::shared_ptr<DataType>& date();
197 const std::shared_ptr<DataType>& timestamp();
203 std::shared_ptr<DataType> list(const std::shared_ptr<DataType>& value_type);
206 namespace graphar::util {
207 struct FilterOptions;
208 using Filter = std::shared_ptr<Expression>;
210 std::optional<std::reference_wrapper<std::vector<std::string>>>;