Class: Insight::Database::DataTable
- Inherits:
-
Table
- Object
- Table
- Insight::Database::DataTable
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_clause ⇒ Object
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_a ⇒ Object
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
|