/saved_searches/labels.json: support wildcards in search[label] param.

This commit is contained in:
evazion
2017-07-11 19:18:46 -05:00
parent 7b05b9dd64
commit dc079d7932
2 changed files with 14 additions and 5 deletions

View File

@@ -17,11 +17,7 @@ class SavedSearchesController < ApplicationController
end
def labels
@labels = SavedSearch.labels_for(CurrentUser.user.id)
if params[:label]
regexp = Regexp.compile(Regexp.escape(params[:label]))
@labels = @labels.grep(regexp)
end
@labels = SavedSearch.search_labels(CurrentUser.id, params[:search])
respond_with(@labels)
end

View File

@@ -62,6 +62,19 @@ class SavedSearch < ApplicationRecord
label.to_s.strip.downcase.gsub(/[[:space:]]/, "_")
end
def self.search_labels(user_id, params)
labels = labels_for(user_id)
if params[:label].present?
query = Regexp.escape(params[:label]).gsub("\\*", ".*")
query = ".*#{query}.*" unless query.include?("*")
query = /\A#{query}\z/
labels = labels.grep(query)
end
labels
end
def self.labels_for(user_id)
Cache.get(cache_key(user_id)) do
SavedSearch.where(user_id: user_id).order("label").pluck("distinct unnest(labels) as label")