lib/sidekiq/cron/namespace.rb



module Sidekiq
  module Cron
    class Namespace
      def self.all
        namespaces = case (available_namespaces = Sidekiq::Cron.configuration.available_namespaces)
          when NilClass then []
          when Array then available_namespaces
          when :auto
            Sidekiq.redis do |conn|
              conn.keys('cron_jobs:*').collect do |key|
                key.split(':').last
              end
            end
          else
            raise ArgumentError, "Unexpected value provided for `available_namespaces`: #{available_namespaces.inspect}"
          end

        namespaces | [Sidekiq::Cron.configuration.default_namespace]
      end

      def self.all_with_count
        all.map do |namespace_name|
          {
            count: count(namespace_name),
            name: namespace_name
          }
        end
      end

      def self.count(name = Sidekiq::Cron.configuration.default_namespace)
        Sidekiq.redis do |conn|
          conn.scard("cron_jobs:#{name}")
        end
      end

      def self.available_namespaces_provided?
        available_namespaces = Sidekiq::Cron.configuration.available_namespaces

        available_namespaces != nil && available_namespaces != :auto
      end
    end
  end
end