discourse/app/serializers/topic_tracking_state_serial...

28 lines
922 B
Ruby

# frozen_string_literal: true
class TopicTrackingStateSerializer < ApplicationSerializer
attributes :data, :meta
def data
serializer = TopicTrackingStateItemSerializer.new(nil, scope: scope, root: false)
# note we may have 1000 rows, avoiding serializer instansitation saves significant time
# for 1000 rows this takes it down from 10ms to 3ms on a reasonably fast machine
object.map do |item|
serializer.object = item
serializer.as_json
end
end
def meta
MessageBus.last_ids(
TopicTrackingState::LATEST_MESSAGE_BUS_CHANNEL,
TopicTrackingState::RECOVER_MESSAGE_BUS_CHANNEL,
TopicTrackingState::DELETE_MESSAGE_BUS_CHANNEL,
TopicTrackingState::DESTROY_MESSAGE_BUS_CHANNEL,
TopicTrackingState::NEW_MESSAGE_BUS_CHANNEL,
TopicTrackingState::UNREAD_MESSAGE_BUS_CHANNEL,
TopicTrackingState.unread_channel_key(scope.user.id),
)
end
end