MishkaCmsMigration. Resources. Validations. Status
(Mishka CMS Migration v0.0.1)
Copy Markdown
View Source
Holds a run's move to the statuses it may come from: the status the run is in before the action, not the one the action sets.
update :start_import do
validate {MishkaCmsMigration.Resources.Validations.Status, from: [:dry_run]}
change set_attribute(:status, :importing)
endRun atomically, it is a condition of the update itself, so two requests that both read the run before either wrote it cannot both move it.
With as_read: true the run must also still be in the status the caller read it in, so what the
action takes from that status, such as the status a job of picked items puts the run back in
(MishkaCmsMigration.Resources.Changes.PickedItems), is the one the database held. A run read
before it moved on is refused with the status it is in now.
validate {MishkaCmsMigration.Resources.Validations.Status, from: [:done], as_read: true}A refused run is an Ash.Error.Changes.InvalidAttribute on status whose message says, in
words, what the run is doing and what to do, such as "An import of this run is running. Wait until
it finishes, then try again." It names no variable, so the same sentence reads in a flash and in
the log, and the atomic check picks it in the database by the status the run is in.
Summary
Functions
Whether error is this validation's refusal of a run whose dry run or import is running now,
which holds once that job is done, unlike a refusal of a run in a status it never leaves on its
own, such as a cancelled one.