lib/dhis2/api/bulk_creatable.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Dhis2
  module Api
    module BulkCreatable
      def self.included(base)
        base.extend(ClassMethods)
      end

      module ClassMethods

        def bulk_creation_status_class
           ::Dhis2::Api::ImportSummary
        end

        # args is a hash like: { data_element_groups: [{ name: "foo" }, { name: "bar" }] }
        def bulk_create(client, args, raw_input = false)
          response = client.post(path: "metadata", payload: args, raw_input: raw_input)
          bulk_creation_status_class.new(response).tap do |summary|
            unless summary.bulk_success?
              exception = Dhis2::BulkCreationError.new("Didnt create bulk of data properly.\n Response: #{response.to_json}")
              exception.import_summary = summary
              raise exception
            end
          end
        end
      end
    end
  end
end