28 lines
922 B
Ruby
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
|