df0bf6fa5f
DbAccessor: -Guarantees that access to Vertex and Edge is possible only through Vertex::Accessor and Edge::Accessor. -Guarantees that changing Vertex and Edge is possible only using Vertex::Accessor returned by vertex_insert() method and Edge::Accessor returned by edge_insert() method. -Offers CRUD for Vertex and Edge except iterating over all edges. Squashed commit messages: First step in database accessor refactoring done. It's compiling. All tests with exception of integration_querys pass Tests now initialize logging facilities. Refactored accessors. RecordAccessor now has 3 states. From,To,Out,In in there respecive Accessors return unfilled RecordAccessor. Added iterator classes into utils/itearator/.
38 lines
949 B
C++
38 lines
949 B
C++
#pragma once
|
|
|
|
#include "mvcc/record.hpp"
|
|
#include "storage/model/properties/traversers/jsonwriter.hpp"
|
|
#include "storage/model/vertex_model.hpp"
|
|
|
|
class Vertex : public mvcc::Record<Vertex>
|
|
{
|
|
public:
|
|
class Accessor;
|
|
|
|
Vertex() = default;
|
|
Vertex(const VertexModel &data) : data(data) {}
|
|
Vertex(VertexModel &&data) : data(std::move(data)) {}
|
|
|
|
Vertex(const Vertex &) = delete;
|
|
Vertex(Vertex &&) = delete;
|
|
|
|
Vertex &operator=(const Vertex &) = delete;
|
|
Vertex &operator=(Vertex &&) = delete;
|
|
|
|
VertexModel data;
|
|
};
|
|
|
|
inline std::ostream &operator<<(std::ostream &stream, const Vertex &record)
|
|
{
|
|
StringBuffer buffer;
|
|
JsonWriter<StringBuffer> writer(buffer);
|
|
|
|
// dump properties in this buffer
|
|
record.data.props.accept(writer);
|
|
writer.finish();
|
|
|
|
return stream << "Vertex"
|
|
<< "(cre = " << record.tx.cre()
|
|
<< ", exp = " << record.tx.exp() << "): " << buffer.str();
|
|
}
|