Class: ApiOperation
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- ApiOperation
- Includes:
- Uuid::Uuidable
- Defined in:
- app/models/api_operation.rb
Overview
A request received by an API operations endpoint, such as the Sapio operations endpoint, and its processing progress.
The calling system's request ID (external_id) and the request body (payload) are stored exactly as received. The payload digest identifies the payload, so a repeated request can be told apart from a changed one.
The status starts as queued. Later stories add the other values, such as completed and failed. response_delivered_at records when the response was delivered to the calling system, and is null until then.
Defined Under Namespace
Classes: CoordinatorJob, PayloadDigest, SchemaCheck
Class Method Summary collapse
-
.create_with_job!(**attributes) ⇒ ApiOperation
Saves an operation and queues its CoordinatorJob in one transaction, so an operation never lacks its job.
Methods included from Uuid::Uuidable
included, #unsaved_uuid!, #uuid
Methods inherited from ApplicationRecord
alias_association, convert_labware_to_receptacle_for, find_by_id_or_name, find_by_id_or_name!
Methods included from Squishify
Methods included from Warren::Callback::ExceptExternallyManaged
#broadcast_except_externally_managed, included
Class Method Details
.create_with_job!(**attributes) ⇒ ApiOperation
Saves an operation and queues its CoordinatorJob in one transaction, so an operation never lacks its job.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/models/api_operation.rb', line 26 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |