Class: ManagerDbDataSource

Inherits:
Object
  • Object
show all
Defined in:
lib/manager/manager_db_data_source.rb

Instance Method Summary collapse

Constructor Details

#initializeManagerDbDataSource



6
7
8
# File 'lib/manager/manager_db_data_source.rb', line 6

def initialize
  @client = DBClient.instance
end

Instance Method Details

#add(manager) ⇒ Object



10
11
12
13
14
15
# File 'lib/manager/manager_db_data_source.rb', line 10

def add(manager)
  query = "INSERT INTO Manager (Name, Email, Phone) VALUES ('#{manager.name}', #{manager.email.nil? ? 'NULL' : "'#{manager.email}'"}, #{manager.phone.nil? ? 'NULL' : "'#{manager.phone}'"})"
  @client.query(query)
  manager_id = @client.last_id
  get(manager_id)
end

#change(manager) ⇒ Object



17
18
19
20
21
# File 'lib/manager/manager_db_data_source.rb', line 17

def change(manager)
  query = "UPDATE Manager SET Name='#{manager.name}', Email=#{manager.email.nil? ? 'NULL' : "'#{manager.email}'"}, Phone=#{manager.phone.nil? ? 'NULL' : "'#{manager.phone}'"} WHERE ManagerID=#{manager.id}"
  @client.query(query)
  get(manager.id)
end

#countObject



58
59
60
61
62
# File 'lib/manager/manager_db_data_source.rb', line 58

def count
  query = "SELECT COUNT(*) FROM Manager"
  result = @client.query(query).first
  result[:'COUNT(*)']
end

#delete(id) ⇒ Object



23
24
25
26
# File 'lib/manager/manager_db_data_source.rb', line 23

def delete(id)
  query = "DELETE FROM Manager WHERE ManagerID=#{id}"
  @client.query(query)
end

#get(id) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/manager/manager_db_data_source.rb', line 28

def get(id)
  query = "SELECT * FROM Manager WHERE ManagerID=#{id}"
  result = @client.query(query).first
  if result
    Manager.new(result[:'ManagerID'], result[:'Name'], result[:'Email'], result[:'Phone'])
  else
    nil
  end
end

#get_list(page_size, page_num, sort_field, sort_direction, has_email = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/manager/manager_db_data_source.rb', line 38

def get_list(page_size, page_num, sort_field, sort_direction, has_email = nil)
  offset = (page_num - 1) * page_size
  query = "SELECT * FROM Manager"

  if has_email == true
    query += " WHERE Email IS NOT NULL"
  elsif has_email == false
    query += " WHERE Email IS NULL"
  end

  query += " ORDER BY #{sort_field} #{sort_direction} LIMIT #{page_size} OFFSET #{offset}"

  results = @client.query(query)
  managers = []
  results.each do |result|
    managers << Manager.new(result[:'ManagerID'], result[:'Name'], result[:'Email'], result[:'Phone'])
  end
  managers
end