Class: MatViews::DeleteViewJob

Inherits:
ApplicationJob show all
Defined in:
app/jobs/mat_views/delete_view_job.rb

Overview

ActiveJob that handles deletion of PostgreSQL materialised views via Services::DeleteView.

This job mirrors CreateViewJob and RefreshViewJob: it times the run and persists lifecycle state in MatViewRun.

Examples:

Enqueue a delete job

MatViews::DeleteViewJob.perform_later(definition.id, cascade: true)

Inline run (test/dev)

MatViews::DeleteViewJob.new.perform(definition.id, false)

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#cascadeBoolean (readonly)

cascade flag for the service call

Returns:



32
33
34
# File 'app/jobs/mat_views/delete_view_job.rb', line 32

def cascade
  @cascade
end

Instance Method Details

#perform(mat_view_definition_id, cascade_arg = nil, row_count_strategy_arg = nil) ⇒ Hash

Perform the job for the given materialised view definition.

Parameters:

  • (defaults to: nil)

    Cascade option.

  • (defaults to: nil)

    One of: :estimated, :exact, :none or nil.

Returns:

  • Serialized ServiceResponse#to_h:

    • :status [Symbol]

    • :error [String, nil]

    • :duration_ms [Integer]

    • :meta [Hash]

Raises:

  • Re-raised on unexpected failure after marking the run failed.

API:

  • public



58
59
60
61
62
63
64
65
# File 'app/jobs/mat_views/delete_view_job.rb', line 58

def perform(mat_view_definition_id, cascade_arg = nil, row_count_strategy_arg = nil)
  definition = MatViews::MatViewDefinition.find(mat_view_definition_id)
  record_run(definition, :drop) do
    MatViews::Services::DeleteView.new(definition,
                                       cascade: cascade?(cascade_arg),
                                       row_count_strategy: normalize_strategy(row_count_strategy_arg)).call
  end
end