Sha256: 74d8f171cb10b6853f75636f202035ab2773a4ac4b07f4a8e07d21c7401cc3c1

Contents?: true

Size: 879 Bytes

Versions: 99

Compression:

Stored size: 879 Bytes

Contents

# frozen_string_literal: true

module Motor
  module BuildSchema
    module FindSearchableColumns
      SELECT_COLUMNS_AMOUNT = 2
      COLUMN_TYPES = BuildSchema::SEARCHABLE_COLUMN_TYPES

      module_function

      def call(model)
        columns = find_searchable_columns(model)

        selected_columns =
          columns.grep(BuildSchema::FindDisplayColumn::DISPLAY_NAME_REGEXP).presence

        selected_columns ||= columns.first(SELECT_COLUMNS_AMOUNT)

        ([model.primary_key] + selected_columns).compact.sort
      end

      def find_searchable_columns(model)
        model.columns.map do |column|
          next unless column.type.in?(COLUMN_TYPES)
          next if column.try(:array?)
          next if model.validators_on(column.name).any?(ActiveModel::Validations::InclusionValidator)

          column.name
        end.compact
      end
    end
  end
end

Version data entries

99 entries across 99 versions & 7 rubygems

Version Path
motor-admin-0.4.36 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-0.4.35 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-0.4.34 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-0.4.33 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-0.4.32 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-0.4.31 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-0.4.30 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-0.4.29 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-0.4.28 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-cstham8-0.4.35 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-cstham8-0.4.34 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-cstham8-0.4.33 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-cstham8-0.4.32 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-cstham8-0.4.31 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-cstham8-0.4.30 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-cstham8-0.4.29 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-cstham8-0.4.28 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-cstham8-0.4.27 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-0.4.27 lib/motor/build_schema/find_searchable_columns.rb
motor-admin-unosquare-0.4.28 lib/motor/build_schema/find_searchable_columns.rb