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.
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_clause ⇒ Object
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_a ⇒ Object
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
|