Sha256: c9d10cf1045ec84edb80dd7b774f922a3383b484d2b2a87b24291a5e9788fdc7

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 KB

Contents

module Qa
  module Authorities
    module Local
      #
      class MysqlTableBasedAuthority < Local::TableBasedAuthority
        def self.check_for_index
          conn = ActiveRecord::Base.connection
          if table_or_view_exists? && conn.index_name_exists?(:qa_local_authority_entries, 'index_qa_local_authority_entries_on_lower_label_and_authority', :default).blank?
            Rails.logger.error "You've installed mysql local authority tables, but you haven't indexed the lower label.  Rails doesn't support functional indexes in migrations, so we tried to execute it for you but something went wrong...\n" \
              'Make sure your table has a lower_label column which is virtuall created and that column is indexed' \
              ' ALTER TABLE qa_local_authority_entries ADD lower_label VARCHAR(256) GENERATED ALWAYS AS (lower(label)) VIRTUAL' \
              ' CREATE INDEX index_qa_local_authority_entries_on_lower_label_and_authority ON qa_local_authority_entries (local_authority_id, lower_label)'
          end
        end

        def search(q)
          return [] if q.blank?
          output_set(base_relation.where('lower_label like ?', "#{q.downcase}%").limit(25))
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
qa-0.10.1 lib/qa/authorities/local/mysql_table_based_authority.rb
qa-0.10.0 lib/qa/authorities/local/mysql_table_based_authority.rb