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