Temos uma aplicação frontend que usa o Discourse como núcleo e queremos implementar a busca de usuários com paginação.
Atualmente, não vejo que esta API (/search?q=name) suporte type_filter: user. Alguma ideia de como implementar isso?
Temos uma aplicação frontend que usa o Discourse como núcleo e queremos implementar a busca de usuários com paginação.
Atualmente, não vejo que esta API (/search?q=name) suporte type_filter: user. Alguma ideia de como implementar isso?
Esta é uma solução alternativa que implementamos.
search_controller.rb e adicione esta linha.def show
@search_term = params.permit(:q)[:q]
// permite o type_filter a partir dos parâmetros da query
@type_filter = params.permit(:type_filter)[:type_filter] || 'topic'
...
offset ao search.rb // está por volta da linha 780
def user_search
return if SiteSetting.hide_user_profiles_from_public && !@guardian.user
users = User.includes(:user_search_data)
.references(:user_search_data)
.where(active: true)
.where(staged: false)
.where("user_search_data.search_data @@ #{ts_query("simple")}")
.order("CASE WHEN username_lower = '#{@original_term.downcase}' THEN 0 ELSE 1 END")
.order("last_posted_at DESC")
.offset(offset) // esta linha
.limit(limit)
users.each do |user|
@results.add(user)
end
end
Assim, você poderá pesquisar usuários usando /search?q=name&type_filter=user&page=1. Por padrão, serão retornados 50 usuários, e use page para obter mais.
Esperamos que isso ajude! ![]()
Ótima ideia! Nós também trabalhamos com a API do Discourse e, ao tentar usar a API de busca, encontramos esse problema também. Posso ajudar a resolver isso.