Sha256: 784241aa6e9199482420f467f358247cad8abdb69322e3a50dc6f982c20e5a22

Contents?: true

Size: 925 Bytes

Versions: 5

Compression:

Stored size: 925 Bytes

Contents

module SpreeMobility
  class TranslationQuery
    def initialize(mobility_backend_class)
      @mobility_backend_class = mobility_backend_class
    end

    def add_joins(search_scope)
      fallback_locales.each do |locale|
        search_scope =
          @mobility_backend_class.
          send(:join_translations, search_scope, locale, ::Arel::Nodes::OuterJoin)
      end
      search_scope
    end

    def col_name(attr)
      select_columns = []
      fallback_locales.each do |locale|
        select_columns << "#{table_alias(locale)}.#{attr}"
      end
      "COALESCE(#{select_columns.join(',')})"
    end

    private

    def fallback_locales
      # Cache this result, since Mobility.locale will not change
      # during this class's lifetime
      @fallback_locales ||= SpreeMobility.locale_with_fallbacks
    end

    def table_alias(locale)
      @mobility_backend_class.table_alias(locale)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
spree_mobility-1.4.0 lib/spree_mobility/translation_query.rb
spree_mobility-1.3.0 lib/spree_mobility/translation_query.rb
spree_mobility-1.2.0 lib/spree_mobility/translation_query.rb
spree_mobility-1.1.0 lib/spree_mobility/translation_query.rb
spree_mobility-1.0.0 lib/spree_mobility/translation_query.rb