Module: Snowflaked

Defined in:
lib/snowflaked.rb,
lib/snowflaked/railtie.rb,
lib/snowflaked/version.rb,
lib/snowflaked/type/snowflake.rb,
lib/snowflaked/model_extensions.rb,
lib/snowflaked/adapter_extension.rb,
lib/snowflaked/schema_definitions.rb

Defined Under Namespace

Modules: AdapterExtension, ModelExtensions, SchemaDefinitions, Type Classes: Configuration, ConfigurationError, Error, Railtie

Constant Summary collapse

MAX_MACHINE_ID =
1023
DEFAULT_EPOCH =
Time.utc(2024, 1, 1).freeze
VERSION =
"0.3.0"

Class Method Summary collapse

Class Method Details

.configurationObject



98
99
100
# File 'lib/snowflaked.rb', line 98

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



102
103
104
105
106
107
# File 'lib/snowflaked.rb', line 102

def configure
  yield(configuration) if block_given?

  ensure_initialized!
  configuration
end

.idObject



109
110
111
112
# File 'lib/snowflaked.rb', line 109

def id
  ensure_initialized!
  Native.generate
end

.machine_id(id) ⇒ Object

rubocop:disable Rails/Delegate



130
131
132
# File 'lib/snowflaked.rb', line 130

def machine_id(id) # rubocop:disable Rails/Delegate
  Native.machine_id(id)
end

.parse(id) ⇒ Object



114
115
116
117
# File 'lib/snowflaked.rb', line 114

def parse(id)
  ensure_initialized!
  Native.parse(id)
end

.sequence(id) ⇒ Object

rubocop:disable Rails/Delegate



139
140
141
# File 'lib/snowflaked.rb', line 139

def sequence(id) # rubocop:disable Rails/Delegate
  Native.sequence(id)
end

.timestamp(id) ⇒ Object



119
120
121
122
123
124
125
126
127
128
# File 'lib/snowflaked.rb', line 119

def timestamp(id)
  ensure_initialized!
  seconds, milliseconds = Native.timestamp_ms(id).divmod(1000)

  if defined?(Time.zone) && Time.zone
    Time.zone.at(seconds, milliseconds * 1000, :usec)
  else
    Time.at(seconds, milliseconds * 1000, :usec).utc
  end
end

.timestamp_ms(id) ⇒ Object



134
135
136
137
# File 'lib/snowflaked.rb', line 134

def timestamp_ms(id)
  ensure_initialized!
  Native.timestamp_ms(id)
end