Sha256: 5a893b8e6c70a9fb523938690bafcda548260ada2b63fec3a2eb4232faa6e4b9

Contents?: true

Size: 1.37 KB

Versions: 20

Compression:

Stored size: 1.37 KB

Contents

module ThinkingSphinx
  class Source
    module InternalProperties
      def add_internal_attributes_and_facets
        add_internal_attribute :sphinx_internal_id, :integer, @model.primary_key.to_sym
        add_internal_attribute :class_crc,          :integer, crc_column, true
        add_internal_attribute :subclass_crcs,      :multi,   subclasses_to_s
        add_internal_attribute :sphinx_deleted,     :integer, "0"

        add_internal_facet :class_crc
      end

      def add_internal_attribute(name, type, contents, facet = false)
        return unless attribute_by_alias(name).nil?

        Attribute.new(self,
          ThinkingSphinx::Index::FauxColumn.new(contents),
          :type   => type,
          :as     => name,
          :facet  => facet,
          :admin  => true
        )
      end

      def add_internal_facet(name)
        return unless facet_by_alias(name).nil?

        @model.sphinx_facets << ClassFacet.new(attribute_by_alias(name))
      end

      def attribute_by_alias(attr_alias)
        @attributes.detect { |attrib| attrib.alias == attr_alias }
      end

      def facet_by_alias(name)
        @model.sphinx_facets.detect { |facet| facet.name == name }
      end

      def subclasses_to_s
        "'" + (@model.send(:subclasses).collect { |klass|
          klass.to_crc32.to_s
        } << @model.to_crc32.to_s).join(",") + "'"
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 6 rubygems

Version Path
DrMark-thinking-sphinx-1.1.14 lib/thinking_sphinx/source/internal_properties.rb
DrMark-thinking-sphinx-1.1.15 lib/thinking_sphinx/source/internal_properties.rb
dpickett-thinking-sphinx-1.1.23 lib/thinking_sphinx/source/internal_properties.rb
ebeigarts-thinking-sphinx-1.1.21 lib/thinking_sphinx/source/internal_properties.rb
ebeigarts-thinking-sphinx-1.1.22 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.14 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.15 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.16 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.17 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.18 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.19 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.20 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.21 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.22 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.23 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.1.24 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.2.0 lib/thinking_sphinx/source/internal_properties.rb
freelancing-god-thinking-sphinx-1.2.1 lib/thinking_sphinx/source/internal_properties.rb
initforthe-thinking-sphinx-1.1.21 lib/thinking_sphinx/source/internal_properties.rb
pixeltrix-thinking-sphinx-1.2.1 lib/thinking_sphinx/source/internal_properties.rb