Sha256: 953fd3ba0141e87a0e9f2017407b8f0801f3a1fae01aeeb83c6c14bf9c76a47d

Contents?: true

Size: 1.57 KB

Versions: 5

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

unless Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR >= 2 || Rails::VERSION::MAJOR > 5
  require 'thredded/rails_lt_5_2_arel_case_node.rb'
end

module Thredded
  module ArelCompat
    module_function

    # @param [#connection] engine
    # @param [Arel::Nodes::Node] a integer node
    # @param [Arel::Nodes::Node] b integer node
    # @return [Arel::Nodes::Node] a / b
    def integer_division(engine, a, b)
      if engine.connection.adapter_name =~ /mysql|mariadb/i
        Arel::Nodes::InfixOperation.new('DIV', a, b)
      else
        Arel::Nodes::Division.new(a, b)
      end
    end

    if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR >= 2 || Rails::VERSION::MAJOR > 5
      # @param [ActiveRecord::Relation] relation
      # @return [Arel::Nodes::Node]
      def relation_to_arel(relation)
        relation.arel
      end
    else
      def relation_to_arel(relation)
        Arel.sql("(#{relation.to_sql})")
      end
    end

    if Rails::VERSION::MAJOR >= 5
      # @param [Arel::Nodes::Node] table
      # @return [Arel::SelectManager]
      def new_arel_select_manager(table)
        Arel::SelectManager.new(table)
      end
    else
      def new_arel_select_manager(table)
        Arel::SelectManager.new(ActiveRecord::Base, table)
      end
    end

    if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR >= 2 || Rails::VERSION::MAJOR > 5
      def true_value(_engine)
        true
      end
    else
      def true_value(engine)
        engine.connection.adapter_name =~ /sqlite|mysql|mariadb/i ? 1 : true
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
thredded-0.15.5 lib/thredded/arel_compat.rb
thredded-0.15.4 lib/thredded/arel_compat.rb
thredded-0.15.3 lib/thredded/arel_compat.rb
thredded-0.15.2 lib/thredded/arel_compat.rb
thredded-0.15.1 lib/thredded/arel_compat.rb