class EventMachine::EmailServer::Sqlite3UserStore

Public Class Methods

new(sqlite3, tablename = "users") click to toggle source
# File lib/eventmachine/email_server/sqlite3.rb, line 10
def initialize(sqlite3, tablename = "users")
  @class = User
  @fields = @class.members.map {|x| x.to_s}.join(", ")
  @tablename = tablename
  if sqlite3.class == SQLite3::Database
    @db = sqlite3
  else
    @db = SQLite3::Database.new(sqlite3)
  end
  if @db.table_info(tablename).length == 0
    @db.execute("CREATE TABLE #{@tablename} (#{@fields})")
  end
end

Public Instance Methods

add_user(user) click to toggle source
# File lib/eventmachine/email_server/sqlite3.rb, line 24
def add_user(user)
  if user.id
    u = user_by_id(user.id)
  end
  if u
    @db.execute("UPDATE #{@tablename} SET username=?, password=?, address=? WHERE id=?", 
      user.username,
      user.password,
      user.address,
      user.id)
  else
    @db.execute("INSERT INTO #{@tablename} (id,username,password,address) VALUES (?,?,?,?)", 
      user.id,
      user.username,
      user.password,
      user.address)
  end
end
delete_user(user) click to toggle source
# File lib/eventmachine/email_server/sqlite3.rb, line 43
def delete_user(user)
  if user.id
    @db.execute("DELETE FROM #{@tablename} WHERE id = ?", user.id)
  end
end
user_by_emailaddress(address) click to toggle source
# File lib/eventmachine/email_server/sqlite3.rb, line 62
def user_by_emailaddress(address)
  user_by_field("address", address)
end
user_by_field(field, value) click to toggle source
# File lib/eventmachine/email_server/sqlite3.rb, line 49
def user_by_field(field, value)
          rs = @db.execute("SELECT #{@fields} FROM #{@tablename} WHERE #{field}='#{value}'")
          return nil unless rs
          rs.each do |row|
                  return User.new(*row)
          end
  return nil
end
user_by_id(id) click to toggle source
# File lib/eventmachine/email_server/sqlite3.rb, line 66
def user_by_id(id)
  user_by_field("id", id)
end
user_by_username(username) click to toggle source
# File lib/eventmachine/email_server/sqlite3.rb, line 58
def user_by_username(username)
  user_by_field("username", username)
end