Class: Ace::Review::Atoms::FeedbackIdGenerator
- Inherits:
-
Object
- Object
- Ace::Review::Atoms::FeedbackIdGenerator
- Defined in:
- lib/ace/review/atoms/feedback_id_generator.rb
Overview
Generates unique 8-character Base36 IDs for feedback items.
Uses ace-b36ts to generate timestamp-based IDs with millisecond precision that sort chronologically. This enables natural ordering of feedback items by creation time.
Class Method Summary collapse
-
.generate ⇒ String
Generate a new 8-character Base36 ID based on current timestamp with millisecond precision.
-
.generate_for(time) ⇒ String
Generate a new ID for a specific time (useful for testing).
-
.generate_sequence(count) ⇒ Array<String>
Generate a sequence of unique, sequential IDs.
Class Method Details
.generate ⇒ String
Generate a new 8-character Base36 ID based on current timestamp with millisecond precision
29 30 31 |
# File 'lib/ace/review/atoms/feedback_id_generator.rb', line 29 def self.generate Ace::B36ts.encode(Time.now.utc, format: :ms) end |
.generate_for(time) ⇒ String
Generate a new ID for a specific time (useful for testing)
37 38 39 |
# File 'lib/ace/review/atoms/feedback_id_generator.rb', line 37 def self.generate_for(time) Ace::B36ts.encode(time.utc, format: :ms) end |
.generate_sequence(count) ⇒ Array<String>
Generate a sequence of unique, sequential IDs
Uses ace-b36ts’s encode_sequence to generate IDs that are guaranteed unique even when created in rapid succession. Each ID is strictly greater than the previous (lexicographically).
56 57 58 59 60 61 62 |
# File 'lib/ace/review/atoms/feedback_id_generator.rb', line 56 def self.generate_sequence(count) Ace::B36ts::Atoms::CompactIdEncoder.encode_sequence( Time.now.utc, count: count, format: :ms ) end |