module Quandl::Cassandra::Base::Schema::ClassMethods

Public Instance Methods

column_aliases() click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 54
def column_aliases
  return [] if system_schema.blank?
  @column_aliases ||= JSON.parse(system_schema['column_aliases']).map(&:to_sym)
rescue JSON::ParserError
  []
end
column_names() click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 34
def column_names
  unless @column_names && @column_names.is_a?(Array) && !@column_names.empty?
    @column_names = columns.map(&:column_name)
    Quandl::Logger.info("Column names for #{self.to_s}: #{@column_names.join(', ')}")
  end
  @column_names
end
column_type(type) click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 19
def column_type(type)
  column_types[type.to_sym]
end
column_types() click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 23
def column_types
  unless @column_types && @column_types.is_a?(Hash) && !@column_types.empty?
    @column_types = {}
    columns.each do |c|
      @column_types[c.column_name.to_sym] = Quandl::Cassandra::Types.type(c.type)
    end
    Quandl::Logger.info("Column types for #{self.to_s}: #{@column_types}")
  end
  @column_types
end
columns() click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 42
def columns
  unless @columns && @columns.is_a?(Cql::Client::ResultMetadata)
    @columns = execute("SELECT * FROM #{table_name} LIMIT 1").metadata
    Quandl::Logger.info("Columns for #{self.to_s} #{@columns.inspect}")
  end
  @columns
end
initialize_class_once() click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 13
def initialize_class_once
  return if defined?(@initialize_class_once)
  define_schema_attributes
  @initialize_class_once = true
end
key_aliases() click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 61
def key_aliases
  return [] if system_schema.blank?
  @key_aliases ||= JSON.parse(system_schema['key_aliases']).map(&:to_sym)
rescue JSON::ParserError
  []
end
primary_key() click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 50
def primary_key
  @primary_key ||= key_aliases + column_aliases
end
system_schema() click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 72
def system_schema
  return @system_schema if defined?(@system_schema)
  @system_schema = execute(%Q{
    SELECT * FROM system.schema_columnfamilies WHERE
    keyspace_name='#{Quandl::Cassandra.configuration.keyspace}'
    AND columnfamily_name = '#{table_name}'
    }, 'ONE').first
end
table_exists?() click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 68
def table_exists?
  system_schema.present?
end

Private Instance Methods

define_schema_attributes() click to toggle source
# File lib/quandl/cassandra/base/schema.rb, line 83
def define_schema_attributes
  self.class_eval do
    define_attributes *column_names
  end
end