neo4jrb/neo4j-core

View on GitHub
lib/neo4j/core/cypher_session/result.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'neo4j/core/node'
require 'neo4j/core/relationship'
require 'neo4j/core/path'

module Neo4j
  module Core
    class CypherSession
      class Result
        attr_reader :columns, :rows

        def initialize(columns, rows)
          @columns = columns.map(&:to_sym)
          @rows = rows
          @struct_class = Struct.new(:index, *@columns)
        end

        include Enumerable

        def each
          structs.each do |struct|
            yield struct
          end
        end

        def structs
          @structs ||= rows.each_with_index.map do |row, index|
            @struct_class.new(index, *row)
          end
        end

        def hashes
          @hashes ||= rows.map do |row|
            Hash[@columns.zip(row)]
          end
        end
      end
    end
  end
end