Sha256: 3e2b334f44e1a0a216786b35e24488d5f4533bbcc591d89575e383afeaa9c421

Contents?: true

Size: 1.04 KB

Versions: 13

Compression:

Stored size: 1.04 KB

Contents

module ResoTransport
  EntityType = Struct.new(:name, :base_type, :primary_key, :schema) do
    def self.from_stream(args)
      new(args['Name'], args['BaseType'])
    end

    def parse(record)
      record.each_pair do |k, v|
        next if v.nil?

        property = property_map[k] || navigation_property_map[k]
        record[k] = property.parse(v) if property
      end
    end

    def parse_value(record)
      record.each_pair do |k, v|
        next if v.nil?

        property = property_map[k] || navigation_property_map[k]
        record[k] = property.parse(v) if property
      end
    end

    def property_map
      @property_map ||= properties.each_with_object({}) { |p, hsh| hsh[p.name] = p; }
    end

    def properties
      @properties ||= []
    end

    def navigation_property_map
      @navigation_property_map ||= navigation_properties.each_with_object({}) { |p, hsh| hsh[p.name] = p; }
    end

    def navigation_properties
      @navigation_properties ||= []
    end

    def enumerations
      @enumerations ||= []
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
reso_transport-2.0.0 lib/reso_transport/entity_type.rb
reso_transport-1.5.19 lib/reso_transport/entity_type.rb
reso_transport-1.5.18 lib/reso_transport/entity_type.rb
reso_transport-1.5.17 lib/reso_transport/entity_type.rb
reso_transport-1.5.16 lib/reso_transport/entity_type.rb
reso_transport-1.5.15 lib/reso_transport/entity_type.rb
reso_transport-1.5.14 lib/reso_transport/entity_type.rb
reso_transport-1.5.13 lib/reso_transport/entity_type.rb
reso_transport-1.5.12 lib/reso_transport/entity_type.rb
reso_transport-1.5.11 lib/reso_transport/entity_type.rb
reso_transport-1.5.9 lib/reso_transport/entity_type.rb
reso_transport-1.5.8 lib/reso_transport/entity_type.rb
reso_transport-1.5.7 lib/reso_transport/entity_type.rb