Class: TaskDbDataSource
- Inherits:
-
Object
- Object
- TaskDbDataSource
- Defined in:
- lib/task/task_db_data_source.rb
Instance Method Summary collapse
- #add(task) ⇒ Object
- #change(task) ⇒ Object
- #count ⇒ Object
- #delete(id) ⇒ Object
- #get(id) ⇒ Object
- #get_list(page_size, page_num, sort_field, sort_direction, completed = nil) ⇒ Object
-
#initialize ⇒ TaskDbDataSource
constructor
A new instance of TaskDbDataSource.
- #manager_exists?(manager_id) ⇒ Boolean
- #user_exists?(user_id) ⇒ Boolean
Constructor Details
#initialize ⇒ TaskDbDataSource
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 |
#count ⇒ Object
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
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
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 |