require_dependency 'gap_serializer' require_dependency 'post_serializer' require_dependency 'timeline_lookup' module PostStreamSerializerMixin def self.included(klass) klass.attributes :post_stream klass.attributes :timeline_lookup end def post_stream result = { posts: posts, stream: object.filtered_post_ids } result[:gaps] = GapSerializer.new(object.gaps, root: false) if object.gaps.present? result end def timeline_lookup TimelineLookup.build(object.filtered_post_stream) end def posts @posts ||= begin (object.posts || []).map do |post| post.topic = object.topic serializer = PostSerializer.new(post, scope: scope, root: false) serializer.add_raw = true if @options[:include_raw] serializer.topic_view = object serializer.as_json end end end end