# frozen_string_literal: true

require "redis"

# This returns a hash
# The keys are the bitcoin addresses, the values are all of the keys which
#   contain that address
# If there are no duplicates, then each value will be a singleton list
def get_addresses_with_users(redis)
	addrs = Hash.new { |h, k| h[k] = [] }

	# I picked 1000 because it made a relatively trivial case take 15 seconds
	#   instead of forever.
	# Basically it's "how long does each command take"
	# The lower it is (default is 10), it will go back and forth to the client a
	#   ton
	redis.scan_each(match: "jmp_customer_btc_addresses-*", count: 1000) do |key|
		redis.smembers(key).each do |addr|
			addrs[addr] << key
		end
	end

	addrs
end

module RedisBtcAddresses
	def self.each_user(redis)
		# I picked 1000 because it made a relatively trivial case take 15 seconds
		#   instead of forever.
		# Basically it's "how long does each command take"
		# The lower it is (default is 10), it will go back and forth to the client a
		#   ton
		redis.scan_each(match: "jmp_customer_btc_addresses-*", count: 1000) do |key|
			yield key, redis.smembers(key)
		end
	end
end
