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.



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

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

Instance Method Details

#create_keys_clauseObject



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

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



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

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

#encode_value(value) ⇒ Object



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

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

#for_request(id) ⇒ Object



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

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

#retrieve(key_sql) ⇒ Object



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

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

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



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

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



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

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