Chatwoot/app/finders/text_search.rb
Tejaswini Chile 9c0fb99dca spec fixes
2022-12-23 18:18:01 +05:30

44 lines
1.4 KiB
Ruby

class TextSearch
attr_reader :current_user, :current_account, :params
DEFAULT_STATUS = 'open'.freeze
def initialize(current_user, params)
@current_user = current_user
@current_account = @current_user.account || Current.account
@params = params
end
def perform
set_inboxes
{
messages: filter_messages,
conversations: filter_conversations,
contacts: filter_contacts
}
end
def set_inboxes
@inbox_ids = @current_user.assigned_inboxes.pluck(:id)
end
private
def filter_conversations
@conversations = PgSearch.multisearch((@params[:q]).to_s).where(
inbox_id: @inbox_ids, account_id: @current_account, searchable_type: 'Conversation'
).joins('INNER JOIN conversations ON pg_search_documents.searchable_id = conversations.id').includes(:searchable).limit(20).collect(&:searchable)
end
def filter_messages
@messages = PgSearch.multisearch((@params[:q]).to_s).where(
inbox_id: @inbox_ids, account_id: @current_account, searchable_type: 'Message'
).joins('INNER JOIN messages ON pg_search_documents.searchable_id = messages.id').includes(:searchable).limit(20).collect(&:searchable)
end
def filter_contacts
@contacts = PgSearch.multisearch((@params[:q]).to_s).where(
account_id: @current_account, searchable_type: 'Contact'
).joins('INNER JOIN contacts ON pg_search_documents.searchable_id = contacts.id').includes(:searchable).limit(20).collect(&:searchable)
end
end