Class: SlidingPartition::TableCollection
- Inherits:
-
Object
- Object
- SlidingPartition::TableCollection
- Extended by:
- Forwardable
- Includes:
- Enumerable
- Defined in:
- lib/sliding_partition/table_collection.rb
Instance Attribute Summary collapse
-
#definition ⇒ Object
readonly
Returns the value of attribute definition.
-
#time ⇒ Object
readonly
Returns the value of attribute time.
Instance Method Summary collapse
- #each(&block) ⇒ Object
- #earliest_record_timestamp ⇒ Object
- #first_partition_timestamp ⇒ Object
- #first_timestamp ⇒ Object
-
#initialize(definition:, at_time:) ⇒ TableCollection
constructor
A new instance of TableCollection.
- #last_timestamp ⇒ Object
- #tables ⇒ Object
Constructor Details
#initialize(definition:, at_time:) ⇒ TableCollection
Returns a new instance of TableCollection.
14 15 16 |
# File 'lib/sliding_partition/table_collection.rb', line 14 def initialize(definition:, at_time:) @definition, @time = definition, at_time end |
Instance Attribute Details
#definition ⇒ Object (readonly)
Returns the value of attribute definition.
9 10 11 |
# File 'lib/sliding_partition/table_collection.rb', line 9 def definition @definition end |
#time ⇒ Object (readonly)
Returns the value of attribute time.
9 10 11 |
# File 'lib/sliding_partition/table_collection.rb', line 9 def time @time end |
Instance Method Details
#each(&block) ⇒ Object
26 27 28 |
# File 'lib/sliding_partition/table_collection.rb', line 26 def each(&block) tables.each(&block) end |
#earliest_record_timestamp ⇒ Object
46 47 48 |
# File 'lib/sliding_partition/table_collection.rb', line 46 def definition.model.order("#{time_column} ASC").limit(1).first[time_column] end |
#first_partition_timestamp ⇒ Object
42 43 44 |
# File 'lib/sliding_partition/table_collection.rb', line 42 def tables.first. end |
#first_timestamp ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/sliding_partition/table_collection.rb', line 30 def @first_timestamp ||= if retention_interval == :forever else time - retention_interval end end |
#last_timestamp ⇒ Object
38 39 40 |
# File 'lib/sliding_partition/table_collection.rb', line 38 def time + lead_time + partition_interval end |
#tables ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/sliding_partition/table_collection.rb', line 18 def tables @tables ||= begin (.to_i....to_i).step(partition_interval).map do |partition_time| PartitionTable.new(for_time: Time.at(partition_time), definition: definition) end end end |