1234567891011121314151617181920212223242526272829303132333435 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- class Sequencer::Unit::Import::Ldap::Users::Total < Sequencer::Unit::Base
- include ::Sequencer::Unit::Import::Common::Model::Statistics::Mixin::EmptyDiff
- uses :ldap_config, :ldap_connection, :dry_run
- def process
- state.provide(:statistics_diff) do
- diff.merge(
- total: ((diff[:total] || 0) + total)
- )
- end
- end
- private
- def total
- if !dry_run
- result = Rails.cache.read(cache_key)
- end
- result ||= ldap_connection.count(ldap_config[:user_filter])
- if !dry_run
- Rails.cache.write(cache_key, result, { expires_in: 1.hour })
- end
- result
- end
- def cache_key
- @cache_key ||= "#{ldap_connection.host}::#{ldap_connection.port}::#{ldap_config[:ssl]}::#{ldap_connection.base_dn}::#{ldap_config[:user_filter]}"
- end
- end
|