Class: LooseForeignKeys::CleanerService

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

Overview

rubocop: disable CodeReuse/ActiveRecord

Direct Known Subclasses

PartitionCleanerService

Constant Summary collapse

DELETE_LIMIT =
1000
UPDATE_LIMIT =
500

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of CleanerService.



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

def initialize(loose_foreign_key_definition:, connection:, deleted_parent_records:, logger: Sidekiq.logger, 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
  @logger = logger
end

Instance Method Details

#async_delete?Boolean

Returns:

  • (Boolean)


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

def async_delete?
  loose_foreign_key_definition.on_delete == :async_delete
end

#async_nullify?Boolean

Returns:

  • (Boolean)


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

def async_nullify?
  loose_foreign_key_definition.on_delete == :async_nullify
end

#executeObject



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

def execute
  result = connection.execute(build_query)

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

#update_column_to?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'app/services/loose_foreign_keys/cleaner_service.rb', line 31

def update_column_to?
  loose_foreign_key_definition.on_delete == :update_column_to
end