Class: ChefWorkflow::DatabaseSupport::Map
- Inherits:
-
Set
show all
- Defined in:
- lib/chef-workflow/support/db/basic.rb
Instance Attribute Summary
Attributes inherited from Generic
#db
Instance Method Summary
collapse
Methods inherited from Set
#add, #clear, #delete, #has_key?, #keys, #replace
Methods inherited from Collection
#initialize
Methods inherited from Generic
#_dump, _load, #initialize, #post_marshal_init
Instance Method Details
188
189
190
191
|
# File 'lib/chef-workflow/support/db/basic.rb', line 188
def [](key)
value = @db.execute("select value from #{@table_name} where name=? and key=?", [@object_name, key]).first.first rescue nil
return value && Marshal.load(value)
end
|
#[]=(key, value) ⇒ Object
193
194
195
196
197
|
# File 'lib/chef-workflow/support/db/basic.rb', line 193
def []=(key, value)
delete(key)
@db.execute("insert into #{@table_name} (name, key, value) values (?, ?, ?)", [@object_name, key, Marshal.dump(value)])
value
end
|
#create_table ⇒ Object
210
211
212
213
214
215
216
217
218
219
220
221
222
|
# File 'lib/chef-workflow/support/db/basic.rb', line 210
def create_table
@db.execute " create table if not exists \#{@table_name} (\n id integer not null primary key autoincrement,\n name varchar(255) not null,\n key varchar(255) not null,\n value text not null,\n UNIQUE(name, key)\n )\n EOF\n\n @db.execute \"create index if not exists \#{@table_name}_name_idx on \#{@table_name} (name)\"\nend\n"
|
199
200
201
202
203
|
# File 'lib/chef-workflow/support/db/basic.rb', line 199
def each
keys.each do |key|
yield key, self[key]
end
end
|
205
206
207
208
|
# File 'lib/chef-workflow/support/db/basic.rb', line 205
def to_hash
rows = @db.execute("select key, value from #{@table_name} where name=?", [@object_name])
Hash[rows.map { |x| [x[0], Marshal.load(x[1])] }]
end
|