Module: SpaceCadetActiveRecordUuid

Included in:
SpaceCadetUuid
Defined in:
lib/space_cadet_active_record_uuid.rb

Constant Summary collapse

ID_RETRY_COUNT =
10

Instance Method Summary collapse

Instance Method Details

#add_uuid(uuid_class, source_id, source_name, space_id, uuid) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/space_cadet_active_record_uuid.rb', line 9

def add_uuid uuid_class, source_id, source_name, space_id, uuid
  uuid_class.create! do |u|
    u.source_id = source_id
    u.source_name = source_name
    u.space_id = space_id
    u.uuid = uuid
  end
end

#space_id_add_uuid(uuid_class, source_id, source_name, id_bit_count) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/space_cadet_active_record_uuid.rb', line 18

def space_id_add_uuid uuid_class, source_id, source_name, id_bit_count
  uuid = SecureRandom.uuid
  space_id = space_id_from_uuid uuid, id_bit_count
  record = nil
  begin
    record = add_uuid uuid_class, source_id, source_name, space_id, uuid
  rescue
    record = nil
  end
  record
end

#uuid_create(uuid_class, source_id, source_name, id_bit_count) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/space_cadet_active_record_uuid.rb', line 32

def uuid_create uuid_class, source_id, source_name, id_bit_count
  record = nil
  retry_count = 0
  while !record && retry_count < ID_RETRY_COUNT do
    record = space_id_add_uuid uuid_class, source_id, source_name, id_bit_count
  end
end