Class: TaskDbDataSource

Inherits:
Object
  • Object
show all
Defined in:
lib/task/task_db_data_source.rb

Instance Method Summary collapse

Constructor Details

#initializeTaskDbDataSource

Returns a new instance of TaskDbDataSource.



4
5
6
# File 'lib/task/task_db_data_source.rb', line 4

def initialize
  @client = DBClient.instance
end

Instance Method Details

#add(task) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/task/task_db_data_source.rb', line 7

def add(task)
    user_exists = user_exists?(task.user_id)
    manager_exists = manager_exists?(task.manager_id)
    query = "INSERT INTO Task (UserID, ManagerID, Date, Description, Completed) VALUES (#{task.user_id}, #{task.manager_id}, '#{task.date}', '#{task.description}', '#{task.completed}')"
    @client.query(query)
    task_id = @client.last_id
    get(task_id)
end

#change(task) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/task/task_db_data_source.rb', line 16

def change(task)
  user_exists = user_exists?(task.user_id)
  manager_exists = manager_exists?(task.manager_id)
  query = "UPDATE Task SET Completed='#{task.completed}', Description='#{task.description}' WHERE TaskID=#{task.task_id}"
  @client.query(query)
  get(task.task_id)
end

#countObject



63
64
65
66
67
# File 'lib/task/task_db_data_source.rb', line 63

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

#delete(id) ⇒ Object



25
26
27
28
# File 'lib/task/task_db_data_source.rb', line 25

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

#get(id) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/task/task_db_data_source.rb', line 30

def get(id)
  query = "SELECT * FROM Task WHERE TaskID=#{id}"
  result = @client.query(query).first
  if result
    Task.new(result[:'TaskID'], result[:'UserID'], result[:'ManagerID'], result[:'Date'], result[:'Description'], result[:'Completed'])
  else
    nil
  end
end

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



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/task/task_db_data_source.rb', line 40

def get_list(page_size, page_num, sort_field, sort_direction, completed = nil)
  offset = (page_num - 1) * page_size
  query = "SELECT * FROM Task"
  print "\n"
  print "completed:#{completed}"
  print "\n"
  if completed == 'Done'
    query += " WHERE Completed='Done'"
  elsif completed == 'Undone'
    query += " WHERE Completed='Undone'"
  end

  query += " ORDER BY #{sort_field} #{sort_direction} LIMIT #{page_size} OFFSET #{offset}"
  results = @client.query(query)

  tasks = []
  results.each do |result|
    tasks << Task.new(result[:'TaskID'], result[:'UserID'], result[:'ManagerID'], result[:'Date'],  result[:'Description'], result[:'Completed'])
  end

  tasks
end

#manager_exists?(manager_id) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
80
81
82
83
# File 'lib/task/task_db_data_source.rb', line 77

def manager_exists?(manager_id)
  query = "SELECT COUNT(*) FROM Manager WHERE ManagerID=#{manager_id}"
  result = @client.query(query).first
  unless result[:'COUNT(*)'] > 0
    raise ArgumentError, "Manager with ID=#{manager_id} doesn't exist"
  end
end

#user_exists?(user_id) ⇒ Boolean

Returns:

  • (Boolean)


69
70
71
72
73
74
75
# File 'lib/task/task_db_data_source.rb', line 69

def user_exists?(user_id)
  query = "SELECT COUNT(*) FROM User WHERE UserID=#{user_id}"
  result = @client.query(query).first
  unless result[:'COUNT(*)'] > 0
    raise ArgumentError, "User with ID=#{user_id} doesn't exist"
  end
end