Class: EventMachine::EmailServer::Sqlite3UserStore

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

Instance Method Summary collapse

Methods inherited from AbstractUserStore

#-, #<<

Constructor Details

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

Returns a new instance of Sqlite3UserStore.



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/eventmachine/email_server/sqlite3.rb', line 7

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



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/eventmachine/email_server/sqlite3.rb', line 21

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



40
41
42
43
44
# File 'lib/eventmachine/email_server/sqlite3.rb', line 40

def delete_user(user)
  if user.id
    @db.execute("DELETE FROM #{@tablename} WHERE id = ?", user.id)
  end
end

#user_by_emailaddress(address) ⇒ Object



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

def user_by_emailaddress(address)
  user_by_field("address", address)
end

#user_by_field(field, value) ⇒ Object



46
47
48
49
50
51
52
53
# File 'lib/eventmachine/email_server/sqlite3.rb', line 46

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



63
64
65
# File 'lib/eventmachine/email_server/sqlite3.rb', line 63

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

#user_by_username(username) ⇒ Object



55
56
57
# File 'lib/eventmachine/email_server/sqlite3.rb', line 55

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