class DataStore::Base
Base
class will be redefined during configure In order to assign Sequel::Model behaviour to it with the correctly defined (or configured) database connector
Public Instance Methods
after_create()
click to toggle source
# File lib/data_store/base.rb, line 15 def after_create drop_tables! create_tables! end
before_destroy()
click to toggle source
# File lib/data_store/base.rb, line 20 def before_destroy drop_tables! end
before_save()
click to toggle source
Set the default values with the globally defined values
* :compression_schema * :frequency * :maximum_datapoints * :data_type
See {Configuration}
# File lib/data_store/base.rb, line 11 def before_save set_default_values end
compression_schema()
click to toggle source
Convert serialized compression schema as a string back into the array object itself. For example: “(5,4,3)” => [5,4,3]
# File lib/data_store/base.rb, line 26 def compression_schema value = self.values[:compression_schema] if value.nil? value = [] else value = value.gsub(/\[|\]|\(|\)/,'').split(',').map(&:to_i) unless value.is_a?(Array) end value end
table_names()
click to toggle source
# File lib/data_store/base.rb, line 36 def table_names names = [table_name] factor = 1 compression_schema.each do |compression| factor = (factor * compression) names << (table_name.to_s + '_' + factor.to_s).to_sym end names end
time_borders()
click to toggle source
# File lib/data_store/base.rb, line 46 def time_borders width = time_width borders = [width] compression_schema.each do |compression| width = width * compression borders << width end borders end
time_width()
click to toggle source
# File lib/data_store/base.rb, line 56 def time_width frequency * maximum_datapoints end
Private Instance Methods
create_tables!()
click to toggle source
Create the database tables which are used for storing the datapoints
# File lib/data_store/base.rb, line 74 def create_tables! migrate(:up) end
default_values()
click to toggle source
# File lib/data_store/base.rb, line 62 def default_values ['compression_schema', 'frequency', 'maximum_datapoints', 'data_type'] end
drop_tables!()
click to toggle source
Drop the database tables which are used for storing the datapoints
# File lib/data_store/base.rb, line 79 def drop_tables! migrate(:down) end
migrate(direction = :up)
click to toggle source
# File lib/data_store/base.rb, line 83 def migrate(direction = :up) # Establish new connection to prevent mix up with associated db connection of the Base object # Unless connected to a sqlite db, otherwise it is too time consuming database = sqlite_db? ? db : DataStore::Connector.new.database table_names.each do |name| begin settings = {name: name, data_type: data_type} settings[:original_value] = type == 'counter' DataStore.create_table(settings).apply(database, direction) rescue Sequel::DatabaseError => e raise e if e.message.include?('FATAL') end end database.disconnect unless sqlite_db? end
prefix()
click to toggle source
# File lib/data_store/base.rb, line 103 def prefix DataStore.configuration.prefix end
set_default_values()
click to toggle source
# File lib/data_store/base.rb, line 66 def set_default_values default_values.each do |variable| value = DataStore.configuration.send(variable) self.send(variable+ '=', value) if self.send(variable).nil? end end
sqlite_db?()
click to toggle source
# File lib/data_store/base.rb, line 107 def sqlite_db? DataStore.configuration.database.to_s == 'sqlite' end
table_name()
click to toggle source
# File lib/data_store/base.rb, line 99 def table_name (prefix + identifier.to_s).to_sym end