Sha256: b4fc53bb7ef437db80b02fc08b147b00db5e3d6404c9fa65181dd9e43c3e2790
Contents?: true
Size: 1.69 KB
Versions: 1
Compression:
Stored size: 1.69 KB
Contents
module ROM # Base relation class # # Relation is a proxy for the dataset object provided by the adapter, it # forwards every method to the dataset that's why "native" interface of the # underlying adapter is available in the relation. This interface, however, is # considered private and should not be used outside of the relation instance. # # ROM builds sub-classes of this class for every relation defined in the env # for easy inspection and extensibility - every adapter can provide extensions # for those sub-classes but there is always a vanilla relation instance stored # in the schema registry. # # Relation instances also have access to the experimental ROM::RA interface # giving in-memory relational operations that are very handy, especially when # dealing with joined relations or data coming from different sources. # # @api public class Relation include Charlatan.new(:dataset) include Equalizer.new(:header, :dataset) class << self # Relation methods that were defined inside setup.relation DSL # # @return [Array<Symbol>] # # @api private attr_accessor :relation_methods end # @return [Array] relation base header # # @api private attr_reader :header # Hook to finalize a relation after its instance was created # # @api private def self.finalize(_env, _relation) # noop end # @api private def initialize(dataset, header = dataset.header) super @header = header.dup.freeze end # Yield dataset tuples # # @yield [Hash] # # @api private def each(&block) return to_enum unless block dataset.each(&block) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-0.5.0 | lib/rom/relation.rb |