Class: BookDBDataSource

Inherits:
Object
  • Object
show all
Defined in:
lib/data_sources/book_db_data_source.rb

Instance Method Summary collapse

Constructor Details

#initializeBookDBDataSource

Returns a new instance of BookDBDataSource.



4
5
6
# File 'lib/data_sources/book_db_data_source.rb', line 4

def initialize
  @client = DBClient.instance
end

Instance Method Details

#add(book) ⇒ Object



8
9
10
11
# File 'lib/data_sources/book_db_data_source.rb', line 8

def add(book)
  query = "INSERT INTO Book (BookID, Title, AuthorID, PublisherID) VALUES (#{book.id}, '#{book.title}', #{book.author_id}, #{book.publisher_id})"
  @client.query(query)
end

#change(book) ⇒ Object



13
14
15
16
# File 'lib/data_sources/book_db_data_source.rb', line 13

def change(book)
  query = "UPDATE Book SET Title='#{book.title}', AuthorID=#{book.author_id}, PublisherID=#{book.publisher_id} WHERE BookID=#{book.id}"
  @client.query(query)
end

#delete(id) ⇒ Object



18
19
20
21
# File 'lib/data_sources/book_db_data_source.rb', line 18

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

#get(id) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/data_sources/book_db_data_source.rb', line 23

def get(id)
  query = "SELECT * FROM Book WHERE BookID=#{id}"
  result = @client.query(query).first
  if result
    Book.new(result['BookID'], result['Title'], result['AuthorID'], result['PublisherID'])
  else
    nil
  end
end

#get_list(page_size, page_num, sort_field, sort_direction) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/data_sources/book_db_data_source.rb', line 33

def get_list(page_size, page_num, sort_field, sort_direction)
  offset = (page_num - 1) * page_size
  query = "SELECT * FROM Book ORDER BY #{sort_field} #{sort_direction} LIMIT #{page_size} OFFSET #{offset}"
  results = @client.query(query)
  books = []
  results.each do |result|
    books << Book.new(result['BookID'], result['Title'], result['AuthorID'], result['PublisherID'])
  end
  books
end