Casecommons/pg_search

View on GitHub
lib/pg_search/configuration/column.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

require "digest"

module PgSearch
  class Configuration
    class Column
      attr_reader :weight, :name

      def initialize(column_name, weight, model)
        @name = column_name.to_s
        @column_name = column_name
        @weight = weight
        @model = model
        @connection = model.connection
      end

      def full_name
        return @column_name if @column_name.is_a?(Arel::Nodes::SqlLiteral)

        "#{table_name}.#{column_name}"
      end

      def to_sql
        "coalesce((#{expression})::text, '')"
      end

      private

      def table_name
        @model.quoted_table_name
      end

      def column_name
        @connection.quote_column_name(@name)
      end

      def expression
        full_name
      end
    end
  end
end