@@ -371,6 +371,62 @@ class VerticesIterable final {
371371 }
372372};
373373
374+ class  EdgesIterable  final  {
375+  std::variant<storage::EdgesIterable, std::unordered_set<EdgeAccessor, std::hash<EdgeAccessor>, std::equal_to<void >,
376+  utils::Allocator<EdgeAccessor>> *>
377+  iterable_;
378+ 
379+  public: 
380+  class  Iterator  final  {
381+  std::variant<storage::EdgesIterable::Iterator,
382+  std::unordered_set<EdgeAccessor, std::hash<EdgeAccessor>, std::equal_to<void >,
383+  utils::Allocator<EdgeAccessor>>::iterator>
384+  it_;
385+ 
386+  public: 
387+  explicit  Iterator (storage::EdgesIterable::Iterator it) : it_(std::move(it)) {}
388+  explicit  Iterator (std::unordered_set<EdgeAccessor, std::hash<EdgeAccessor>, std::equal_to<void >,
389+  utils::Allocator<EdgeAccessor>>::iterator it)
390+  : it_(it) {}
391+ 
392+  EdgeAccessor operator *() const  {
393+  return  std::visit ([](auto  &it_) { return  EdgeAccessor (*it_); }, it_);
394+  }
395+ 
396+  Iterator &operator ++() {
397+  std::visit ([](auto  &it_) { ++it_; }, it_);
398+  return  *this ;
399+  }
400+ 
401+  bool  operator ==(const  Iterator &other) const  { return  it_ == other.it_ ; }
402+ 
403+  bool  operator !=(const  Iterator &other) const  { return  !(other == *this ); }
404+  };
405+ 
406+  explicit  EdgesIterable (storage::EdgesIterable iterable) : iterable_(std::move(iterable)) {}
407+  explicit  EdgesIterable (std::unordered_set<EdgeAccessor, std::hash<EdgeAccessor>, std::equal_to<void >,
408+  utils::Allocator<EdgeAccessor>> *edges)
409+  : iterable_(edges) {}
410+ 
411+  Iterator begin () {
412+  return  std::visit (
413+  memgraph::utils::Overloaded{
414+  [](storage::EdgesIterable &iterable_) { return  Iterator (iterable_.begin ()); },
415+  [](std::unordered_set<EdgeAccessor, std::hash<EdgeAccessor>, std::equal_to<void >,
416+  utils::Allocator<EdgeAccessor>> *iterable_) { return  Iterator (iterable_->begin ()); }},
417+  iterable_);
418+  }
419+ 
420+  Iterator end () {
421+  return  std::visit (
422+  memgraph::utils::Overloaded{
423+  [](storage::EdgesIterable &iterable_) { return  Iterator (iterable_.end ()); },
424+  [](std::unordered_set<EdgeAccessor, std::hash<EdgeAccessor>, std::equal_to<void >,
425+  utils::Allocator<EdgeAccessor>> *iterable_) { return  Iterator (iterable_->end ()); }},
426+  iterable_);
427+  }
428+ };
429+ 
374430class  DbAccessor  final  {
375431 storage::Storage::Accessor *accessor_;
376432
@@ -416,6 +472,10 @@ class DbAccessor final {
416472 return  VerticesIterable (accessor_->Vertices (label, property, lower, upper, view));
417473 }
418474
475+  EdgesIterable Edges (storage::View view, storage::EdgeTypeId edge_type) {
476+  return  EdgesIterable (accessor_->Edges (edge_type, view));
477+  }
478+ 
419479 VertexAccessor InsertVertex () { return  VertexAccessor (accessor_->CreateVertex ()); }
420480
421481 storage::Result<EdgeAccessor> InsertEdge (VertexAccessor *from, VertexAccessor *to,
@@ -572,6 +632,8 @@ class DbAccessor final {
572632 return  accessor_->LabelPropertyIndexExists (label, prop);
573633 }
574634
635+  bool  EdgeTypeIndexExists (storage::EdgeTypeId edge_type) const  { return  accessor_->EdgeTypeIndexExists (edge_type); }
636+ 
575637 std::optional<storage::LabelIndexStats> GetIndexStats (const  storage::LabelId &label) const  {
576638 return  accessor_->GetIndexStats (label);
577639 }
@@ -638,6 +700,10 @@ class DbAccessor final {
638700 return  accessor_->CreateIndex (label, property);
639701 }
640702
703+  utils::BasicResult<storage::StorageIndexDefinitionError, void > CreateIndex (storage::EdgeTypeId edge_type) {
704+  return  accessor_->CreateIndex (edge_type);
705+  }
706+ 
641707 utils::BasicResult<storage::StorageIndexDefinitionError, void > DropIndex (storage::LabelId label) {
642708 return  accessor_->DropIndex (label);
643709 }
@@ -647,6 +713,10 @@ class DbAccessor final {
647713 return  accessor_->DropIndex (label, property);
648714 }
649715
716+  utils::BasicResult<storage::StorageIndexDefinitionError, void > DropIndex (storage::EdgeTypeId edge_type) {
717+  return  accessor_->DropIndex (edge_type);
718+  }
719+ 
650720 utils::BasicResult<storage::StorageExistenceConstraintDefinitionError, void > CreateExistenceConstraint (
651721 storage::LabelId label, storage::PropertyId property) {
652722 return  accessor_->CreateExistenceConstraint (label, property);
0 commit comments