Sha256: a86fbb7f3dcd18d9591f966e4bbefb55998277eed48e0cefb2aa0f11e45cf961

Contents?: true

Size: 1.58 KB

Versions: 2

Compression:

Stored size: 1.58 KB

Contents

# frozen_string_literal: true

module ActiveRecord
  module ConnectionAdapters
    module Elasticsearch
      class Column < ConnectionAdapters::Column # :nodoc:

        attr_reader :virtual, :fields, :properties

        def initialize(name, default, sql_type_metadata = nil, null = true, default_function = nil, **kwargs)
          @virtual    = kwargs.delete(:virtual)
          @fields     = kwargs.delete(:fields)
          @properties = kwargs.delete(:properties)
          super(name, default, sql_type_metadata, null, default_function, **kwargs)
        end

        # returns true if this column is virtual.
        # Virtual columns cannot be saved.
        # @return [Boolean]
        def virtual?
          !!virtual
        end

        # returns true if this column has nested fields
        # To receive the nested names just call +#fields+ on this object.
        # @return [Boolean]
        def fields?
          fields.present?
        end

        # returns true if this column has nested properties
        # To receive the nested names just call +#properties+ on this object.
        # @return [Boolean]
        def properties?
          properties.present?
        end

        # returns a array of field names
        # @return [Array]
        def field_names
          return [] unless fields?

          fields.map { |field| field['name'] }
        end

        # returns a array of property names
        # @return [Array]
        def property_names
          return [] unless properties?

          properties.map { |property| property['name'] }
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
elasticsearch_record-1.0.2 lib/active_record/connection_adapters/elasticsearch/column.rb
elasticsearch_record-1.0.1 lib/active_record/connection_adapters/elasticsearch/column.rb