Class: EventMachine::EmailServer::Sqlite3UserStore

Inherits:
AbstractUserStore
  • Object
show all
Defined in:
lib/eventmachine/email_server/sqlite3.rb

Instance Method Summary collapse

Constructor Details

#initialize(sqlite3, tablename = "users") ⇒ Sqlite3UserStore

Returns a new instance of Sqlite3UserStore.



10
11
12
13
14
15
16
17
18
19
20
21
22
# 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

Instance Method Details

#add_user(user) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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) ⇒ Object



43
44
45
46
47
# 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) ⇒ Object



62
63
64
# 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) ⇒ Object



49
50
51
52
53
54
55
56
# 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) ⇒ Object



66
67
68
# File 'lib/eventmachine/email_server/sqlite3.rb', line 66

def user_by_id(id)
  user_by_field("id", id)
end

#user_by_username(username) ⇒ Object



58
59
60
# File 'lib/eventmachine/email_server/sqlite3.rb', line 58

def user_by_username(username)
  user_by_field("username", username)
end