Class: Insight::Database::DataTable

Inherits:
Table
  • Object
show all
Defined in:
lib/insight/database.rb

Instance Method Summary collapse

Methods inherited from Table

#create_sql, #db, #execute, #fields_sql, #insert, #keys, #length, #select

Methods included from Logging

logger

Constructor Details

#initialize(name, *keys) ⇒ DataTable

Returns a new instance of DataTable.



152
153
154
# File 'lib/insight/database.rb', line 152

def initialize(name, *keys)
  super(name, *(%w{request_id} + keys + %w{value}))
end

Instance Method Details

#create_keys_clauseObject



156
157
158
159
160
161
# File 'lib/insight/database.rb', line 156

def create_keys_clause
  non_request_keys = @keys - %w"request_id"
  sql = non_request_keys.map{|key| "#{key} varchar"}.join(", ")
  sql += ", request_id references requests(id) on delete cascade"
  sql
end

#decode_value(value) ⇒ Object



174
175
176
# File 'lib/insight/database.rb', line 174

def decode_value(value)
  YAML.load(Base64.decode64(value))
end

#encode_value(value) ⇒ Object



170
171
172
# File 'lib/insight/database.rb', line 170

def encode_value(value)
  Base64.encode64(YAML.dump(value))
end

#for_request(id) ⇒ Object



182
183
184
# File 'lib/insight/database.rb', line 182

def for_request(id)
  retrieve("request_id = #{id}")
end

#retrieve(key_sql) ⇒ Object



178
179
180
# File 'lib/insight/database.rb', line 178

def retrieve(key_sql)
  select("value", key_sql).map{|value| decode_value(value.first)}
end

#store(request_id, value, keys_sql = "") ⇒ Object



163
164
165
166
167
168
# File 'lib/insight/database.rb', line 163

def store(request_id, value, keys_sql = "")
  sql = "'#{encode_value(value)}'"
  sql = keys_sql + ", " + sql unless keys_sql.empty?
  sql = "#{request_id}, #{sql}"
  insert(sql)
end

#to_aObject



186
187
188
189
190
# File 'lib/insight/database.rb', line 186

def to_a
  super.map do |row|
    row[-1] = decode_value(row[-1])
  end
end