sanger/sequencescape

View on GitHub
app/api/endpoints/submissions.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true
class Endpoints::Submissions < Core::Endpoint::Base
  model do
    action(:create) do |request, _|
      attributes = ::Io::Submission.map_parameters_to_attributes(request.json)
      attributes[:user] = request.user if request.user.present?
      request.target.create!(attributes)
    end
  end

  instance do
    belongs_to(:user, json: 'user')
    has_many(:requests, json: 'requests', to: 'requests', include: %i[source_asset target_asset])

    action(:update, to: :standard_update!, if: :building?)

    bind_action(:create, as: :submit, to: 'submit', if: :building?) do |_, request, response|
      ActiveRecord::Base.transaction do
        request.target.tap do |submission|
          submission.built!
          response.status(200) # OK
        end
      end
    end
  end
end