Class: VIN::Id

Inherits:
Object
  • Object
show all
Defined in:
lib/vin/id.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id:, config: nil) ⇒ Id



5
6
7
8
# File 'lib/vin/id.rb', line 5

def initialize(id:, config: nil)
  @id = id
  @config = config || VIN::Config.new
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



3
4
5
# File 'lib/vin/id.rb', line 3

def config
  @config
end

#idObject (readonly)

Returns the value of attribute id.



3
4
5
# File 'lib/vin/id.rb', line 3

def id
  @id
end

Instance Method Details

#custom_timestampObject



10
11
12
# File 'lib/vin/id.rb', line 10

def custom_timestamp
  (id & timestamp_map) >> config.timestamp_shift
end

#data_typeObject



22
23
24
# File 'lib/vin/id.rb', line 22

def data_type
  (id & data_type_map) >> config.data_type_shift
end

#logical_shard_idObject



18
19
20
# File 'lib/vin/id.rb', line 18

def logical_shard_id
  (id & logical_shard_id_map) >> config.logical_shard_id_shift
end

#sequenceObject



26
27
28
# File 'lib/vin/id.rb', line 26

def sequence
  (id & sequence_map) >> config.sequence_shift
end

#timestampObject



14
15
16
# File 'lib/vin/id.rb', line 14

def timestamp
  @timestamp ||= Timestamp.new(custom_timestamp, epoch: config.custom_epoch)
end