Class: LooseForeignKeys::CleanerService

Inherits:
Object
  • Object
show all
Defined in:
app/services/loose_foreign_keys/cleaner_service.rb

Overview

rubocop: disable CodeReuse/ActiveRecord

Constant Summary collapse

DELETE_LIMIT =
1000
UPDATE_LIMIT =
500

Instance Method Summary collapse

Constructor Details

#initialize(loose_foreign_key_definition:, connection:, deleted_parent_records:, with_skip_locked: false) ⇒ CleanerService

Returns a new instance of CleanerService.



9
10
11
12
13
14
# File 'app/services/loose_foreign_keys/cleaner_service.rb', line 9

def initialize(loose_foreign_key_definition:, connection:, deleted_parent_records:, with_skip_locked: false)
  @loose_foreign_key_definition = loose_foreign_key_definition
  @connection = connection
  @deleted_parent_records = deleted_parent_records
  @with_skip_locked = with_skip_locked
end

Instance Method Details

#async_delete?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'app/services/loose_foreign_keys/cleaner_service.rb', line 22

def async_delete?
  loose_foreign_key_definition.on_delete == :async_delete
end

#async_nullify?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'app/services/loose_foreign_keys/cleaner_service.rb', line 26

def async_nullify?
  loose_foreign_key_definition.on_delete == :async_nullify
end

#executeObject



16
17
18
19
20
# File 'app/services/loose_foreign_keys/cleaner_service.rb', line 16

def execute
  result = connection.execute(build_query)

  { affected_rows: result.cmd_tuples, table: loose_foreign_key_definition.from_table }
end