48 lines
1.1 KiB
Ruby
48 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class GroupedSearchResultSerializer < ApplicationSerializer
|
|
has_many :posts, serializer: SearchPostSerializer
|
|
has_many :users, serializer: SearchResultUserSerializer
|
|
has_many :categories, serializer: BasicCategorySerializer
|
|
has_many :tags, serializer: TagSerializer
|
|
has_many :groups, serializer: BasicGroupSerializer
|
|
attributes :more_posts,
|
|
:more_users,
|
|
:more_categories,
|
|
:term,
|
|
:search_log_id,
|
|
:more_full_page_results,
|
|
:can_create_topic,
|
|
:error,
|
|
:extra
|
|
|
|
def search_log_id
|
|
object.search_log_id
|
|
end
|
|
|
|
def include_search_log_id?
|
|
search_log_id.present?
|
|
end
|
|
|
|
def include_tags?
|
|
SiteSetting.tagging_enabled
|
|
end
|
|
|
|
def can_create_topic
|
|
scope.can_create?(Topic)
|
|
end
|
|
|
|
def extra
|
|
extra = {}
|
|
|
|
if object.can_lazy_load_categories
|
|
extra[:categories] = ActiveModel::ArraySerializer.new(
|
|
object.extra_categories,
|
|
each_serializer: BasicCategorySerializer,
|
|
)
|
|
end
|
|
|
|
extra
|
|
end
|
|
end
|