1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- module Import
- module BaseFactory
- extend self
- def import_action(records, *)
- pre_import_hook(records, *)
- import_loop(records, *) do |record|
- next if skip?(record, *)
- backend_instance = create_instance(record, *)
- post_import_hook(record, backend_instance, *)
- end
- end
- def import(_records, *)
- raise 'Missing import method implementation for this factory'
- end
- def pre_import_hook(_records, *); end
- def post_import_hook(_record, _backend_instance, *); end
- def backend_class(_record, *)
- "Import::#{module_name}".constantize
- end
- def skip?(_record, *)
- false
- end
- private
- def create_instance(record, *)
- backend_class(record, *).new(record, *)
- end
- def import_loop(records, *, &)
- records.each(&)
- end
- def module_name
- name.to_s.sub(%r{Import::}, '').sub(%r{Factory}, '')
- end
- end
- end
|