# frozen_string_literal: true

module Api
  module V1
    class ResultSerializer < ActiveModel::Serializer
      type :results
      attributes :name, :archived
      belongs_to :user, serializer: UserSerializer
      has_one :result_text, key: :text,
                            serializer: ResultTextSerializer,
                            class_name: 'ResultText',
                            if: -> { object.is_text }
      has_one :result_table, key: :table,
                             serializer: ResultTableSerializer,
                             class_name: 'ResultTable',
                             if: -> { object.is_table }
      has_one :result_asset, key: :file,
                             serializer: ResultAssetSerializer,
                             class_name: 'ResultAsset',
                             if: -> { object.is_asset }
      has_many :result_comments, key: :comments, serializer: CommentSerializer

      include TimestampableModel
    end
  end
end
