2016-08-15 07:09:58 +08:00
|
|
|
#include "storage/edge_accessor.hpp"
|
2017-04-10 18:22:48 +08:00
|
|
|
|
2017-04-05 23:23:00 +08:00
|
|
|
#include "database/graph_db_accessor.hpp"
|
2017-02-04 16:01:15 +08:00
|
|
|
#include "storage/vertex_accessor.hpp"
|
2017-04-10 18:22:48 +08:00
|
|
|
#include "utils/algorithm.hpp"
|
2016-08-15 07:09:58 +08:00
|
|
|
|
2017-11-28 16:54:39 +08:00
|
|
|
GraphDbTypes::EdgeType EdgeAccessor::EdgeType() const { return edge_type_; }
|
2016-08-15 07:09:58 +08:00
|
|
|
|
2017-02-04 16:01:15 +08:00
|
|
|
VertexAccessor EdgeAccessor::from() const {
|
2017-11-28 16:54:39 +08:00
|
|
|
return VertexAccessor(*from_.local(), db_accessor());
|
2016-08-15 07:09:58 +08:00
|
|
|
}
|
2016-08-29 21:51:31 +08:00
|
|
|
|
2017-09-21 19:55:23 +08:00
|
|
|
bool EdgeAccessor::from_is(const VertexAccessor &v) const {
|
2017-11-28 16:54:39 +08:00
|
|
|
return v == from_.local();
|
2017-09-21 19:55:23 +08:00
|
|
|
}
|
|
|
|
|
2017-02-04 16:01:15 +08:00
|
|
|
VertexAccessor EdgeAccessor::to() const {
|
2017-11-28 16:54:39 +08:00
|
|
|
return VertexAccessor(*to_.local(), db_accessor());
|
2016-08-29 21:51:31 +08:00
|
|
|
}
|
2017-09-21 19:55:23 +08:00
|
|
|
|
|
|
|
bool EdgeAccessor::to_is(const VertexAccessor &v) const {
|
2017-11-28 16:54:39 +08:00
|
|
|
return v == to_.local();
|
2017-09-21 19:55:23 +08:00
|
|
|
}
|
|
|
|
|
2017-11-28 16:54:39 +08:00
|
|
|
bool EdgeAccessor::is_cycle() const { return to_ == from_; }
|
2017-04-10 18:22:48 +08:00
|
|
|
|
|
|
|
std::ostream &operator<<(std::ostream &os, const EdgeAccessor &ea) {
|
2017-08-09 21:36:01 +08:00
|
|
|
os << "E[" << ea.db_accessor().EdgeTypeName(ea.EdgeType());
|
2017-04-10 18:22:48 +08:00
|
|
|
os << " {";
|
2017-11-28 16:54:39 +08:00
|
|
|
utils::PrintIterable(os, ea.Properties(), ", ",
|
|
|
|
[&](auto &stream, const auto &pair) {
|
|
|
|
stream << ea.db_accessor().PropertyName(pair.first)
|
|
|
|
<< ": " << pair.second;
|
|
|
|
});
|
2017-04-10 18:22:48 +08:00
|
|
|
return os << "}]";
|
|
|
|
}
|
2017-11-28 16:54:39 +08:00
|
|
|
|
|
|
|
const Edge &EdgeAccessor::current() {
|
|
|
|
if (current_ == nullptr) RecordAccessor::Reconstruct();
|
|
|
|
return *current_;
|
|
|
|
}
|
|
|
|
|
|
|
|
const PropertyValueStore<GraphDbTypes::Property> &EdgeAccessor::Properties()
|
|
|
|
const {
|
|
|
|
if (current_ == nullptr) RecordAccessor::Reconstruct();
|
|
|
|
return RecordAccessor::Properties();
|
|
|
|
}
|
|
|
|
|
|
|
|
const PropertyValue &EdgeAccessor::PropsAt(GraphDbTypes::Property key) const {
|
|
|
|
if (current_ == nullptr) RecordAccessor::Reconstruct();
|
|
|
|
return RecordAccessor::PropsAt(key);
|
|
|
|
}
|