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_name, id, uuid) ⇒ Object



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

def add_uuid uuid_class, source_name, id, uuid
  conn = uuid_class.connection
  table_name = uuid_class.table_name
  set_auto_increment conn, table_name, id
  uuid_class.create! do |u|
    u.source_name = source_name
    u.uuid = uuid
  end
end

#id_add_uuid(uuid_class, source_name, id_bit_count) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/space_cadet_active_record_uuid.rb', line 20

def id_add_uuid uuid_class, source_name, id_bit_count
  conn = uuid_class.connection
  uuid = new_uuid conn
  id = id_from_uuid uuid, id_bit_count
  record = nil
  begin
    record = add_uuid uuid_class, source_name, id, uuid
  rescue
    record = nil
  end
  record
end

#prepare_create(uuid_class, source_name, id_bit_count) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/space_cadet_active_record_uuid.rb', line 35

def prepare_create uuid_class, source_name, id_bit_count
  record = nil
  retry_count = 0
  while !record && retry_count < ID_RETRY_COUNT do
    record = id_add_uuid uuid_class, source_name, id_bit_count
  end
  conn = record.class.connection
  set_auto_increment conn, source_name, record.id
end