Module: TypedEAV::FieldDeletion

Defined in:
lib/typed_eav/field_deletion.rb

Overview

Explicit, resumable deletion for large Field value populations. The public Field#destroy_with_values_in_batches! contract requires a persisted field_dependent: :destroy Field, positive batch size, no open transaction, and one shared Field/Value/ValueVersion connection pool.

Class Method Summary collapse

Class Method Details

.destroy!(field, batch_size: 1_000) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/typed_eav/field_deletion.rb', line 11

def destroy!(field, batch_size: 1_000)
  validate!(field, batch_size)
  last_id = 0

  loop do
    deleted = delete_batch!(field, last_id, batch_size)
    break if deleted.empty?

    last_id = deleted.last
  end

  finalize!(field, batch_size)
end