61 lines
1.5 KiB
Ruby
61 lines
1.5 KiB
Ruby
|
class Sequencer
|
||
|
class Unit
|
||
|
module Import
|
||
|
module Zendesk
|
||
|
module SubSequence
|
||
|
module Base
|
||
|
module ClassMethods
|
||
|
|
||
|
def resource_klass
|
||
|
@resource_klass ||= name.split('::').last.singularize
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def self.included(base)
|
||
|
base.extend(ClassMethods)
|
||
|
base.uses :dry_run, :import_job
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def default_params
|
||
|
{
|
||
|
dry_run: dry_run,
|
||
|
import_job: import_job,
|
||
|
}
|
||
|
end
|
||
|
|
||
|
def resource_klass
|
||
|
# base.instance_delegate [:resource_klass] => base
|
||
|
# doesn't work since we are included and then inherited
|
||
|
# there might be multiple inherited hooks which overwrite
|
||
|
# each other :/
|
||
|
self.class.resource_klass
|
||
|
end
|
||
|
|
||
|
def sequence_name
|
||
|
"Import::Zendesk::#{resource_klass}"
|
||
|
end
|
||
|
|
||
|
def resource_iteration(&block)
|
||
|
resource_collection.public_send(resource_iteration_method, &block)
|
||
|
end
|
||
|
|
||
|
def resource_collection
|
||
|
collection_provider.public_send(resource_collection_attribute)
|
||
|
end
|
||
|
|
||
|
def resource_iteration_method
|
||
|
:all!
|
||
|
end
|
||
|
|
||
|
def resource_collection_attribute
|
||
|
@resource_collection_attribute ||= resource_klass.pluralize.underscore
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|