0
0
Fork 0

Add type, limit, offset, min_id, max_id, account_id to search API (#10091)

* Add type, limit, offset, min_id, max_id, account_id to search API

Fix #8939

* Make the offset work on accounts and hashtags search as well

* Assure brakeman we are not doing mass assignment here

* Do not allow paginating unless a type is chosen

* Fix search query and index id field on statuses instead of created_at
This commit is contained in:
Eugen Rochko 2019-02-26 15:21:36 +01:00 committed by GitHub
parent ea58e31822
commit e7f20cc43f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 161 additions and 230 deletions

View file

@ -386,7 +386,7 @@ class Account < ApplicationRecord
DeliveryFailureTracker.filter(urls)
end
def search_for(terms, limit = 10)
def search_for(terms, limit = 10, offset = 0)
textsearch, query = generate_query_for_search(terms)
sql = <<-SQL.squish
@ -398,15 +398,15 @@ class Account < ApplicationRecord
AND accounts.suspended = false
AND accounts.moved_to_account_id IS NULL
ORDER BY rank DESC
LIMIT ?
LIMIT ? OFFSET ?
SQL
records = find_by_sql([sql, limit])
records = find_by_sql([sql, limit, offset])
ActiveRecord::Associations::Preloader.new.preload(records, :account_stat)
records
end
def advanced_search_for(terms, account, limit = 10, following = false)
def advanced_search_for(terms, account, limit = 10, following = false, offset = 0)
textsearch, query = generate_query_for_search(terms)
if following
@ -427,10 +427,10 @@ class Account < ApplicationRecord
AND accounts.moved_to_account_id IS NULL
GROUP BY accounts.id
ORDER BY rank DESC
LIMIT ?
LIMIT ? OFFSET ?
SQL
records = find_by_sql([sql, account.id, account.id, account.id, limit])
records = find_by_sql([sql, account.id, account.id, account.id, limit, offset])
else
sql = <<-SQL.squish
SELECT
@ -443,10 +443,10 @@ class Account < ApplicationRecord
AND accounts.moved_to_account_id IS NULL
GROUP BY accounts.id
ORDER BY rank DESC
LIMIT ?
LIMIT ? OFFSET ?
SQL
records = find_by_sql([sql, account.id, account.id, limit])
records = find_by_sql([sql, account.id, account.id, limit, offset])
end
ActiveRecord::Associations::Preloader.new.preload(records, :account_stat)