updated Ruby utility for simple SQLite3 key/val storage

motivation:

  • modify my previous sqlite utility to allow for table name definition & auto table creation

requirements/environment:

  • the requirements and environment are the same as in my previous post

code:

require 'rubygems'
require 'sqlite3'

class Storage
  def initialize
    @db = SQLite3::Database.new( 'sqlite' )
  end
  def create(table)
    begin
    @db.execute( %{
      CREATE TABLE #{table}
      (key varchar(100) PRIMARY KEY,
      value varchar(1000))
    } )
    rescue SQLite3::SQLException => details
      # puts details
    end
  end
  def use(table)
    @table = table
    self.create( table )
    return self
  end
  def get(key)
    results = @db.get_first_row( %{
      SELECT value FROM #{@table} WHERE key='#{key}'
    } )
    if results
      return results[0]
    end
  end
  def set(key, val)
    result = @db.execute( %{
      REPLACE INTO %s
      (key, value)
      VALUES ('%s', '%s')
    } % [@table, key, val ] )
  end
end

usage:

require 'rubygems'
require 'sqlite3'
require 'json'

Storage.new.use( 'user' ).set( 'user123', { :str => 'orale!' }.to_json )

json = Storage.new.use( 'user' ).get( 'user123' )

p JSON.parse json

notes:

  • DataMapper looks like it might provide much of this functionality. If my script’s complexity continues to increase, I’m inclined to incorporate a more sophisticated solution to run it. Thoughts?

One thought on “updated Ruby utility for simple SQLite3 key/val storage

Comments are closed.