parent_code_repo.rb

 1# frozen_string_literal: true
 2
 3require "multibases"
 4require "securerandom"
 5
 6class ParentCodeRepo
 7	def initialize(redis=REDIS)
 8		@redis = redis
 9	end
10
11	def find(code)
12		@redis.hget("jmp_parent_codes", code)
13	end
14
15	def find_or_create(customer_id)
16		@redis.get("jmp_customer_parent_code-#{customer_id}").then do |code|
17			next code if code
18
19			code = "p#{Multibases.pack('base32upper', SecureRandom.bytes(4))}"
20			EMPromise.all([
21				@redis.set("jmp_customer_group_code-#{customer_id}", code),
22				@redis.hset("jmp_group_codes", code, customer_id)
23			]).then { code }
24		end
25	end
26end