Sha256: 6cbccffa7b356e5c5551fc92381845e4f91bc09eb1603f788738a0042c32a2d3

Contents?: true

Size: 719 Bytes

Versions: 3

Compression:

Stored size: 719 Bytes

Contents

module Chronicle
  module ETL
    class JSONAPISerializer < Chronicle::ETL::Serializer
      def serializable_hash
        @record
          .identifier_hash
          .merge({ attributes: @record.attributes })
          .merge({ relationships: build_associations })
          .merge(@record.meta_hash)
      end

      def build_associations
        @record.associations.transform_values do |value|
          association_data =
            if value.is_a?(Array)
              value.map { |record| JSONAPISerializer.new(record).serializable_hash }
            else
              JSONAPISerializer.new(value).serializable_hash
            end
          { data: association_data }
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
chronicle-etl-0.4.0 lib/chronicle/etl/serializers/jsonapi_serializer.rb
chronicle-etl-0.3.1 lib/chronicle/etl/serializers/jsonapi_serializer.rb
chronicle-etl-0.3.0 lib/chronicle/etl/serializers/jsonapi_serializer.rb