Class: AuthorDBDataSource
- Inherits:
-
Object
- Object
- AuthorDBDataSource
- Defined in:
- lib/author/author_db_data_source.rb
Instance Method Summary collapse
-
#add(author) ⇒ Object
добавляет нового автора в базу данных, возвращает созданную запись.
-
#change(author) ⇒ Object
изменяет данные об авторе в базе данных, возвращает измененную запись.
-
#count ⇒ Object
возвращает количество записей об авторах в базе данных.
-
#delete(id) ⇒ Object
удаляет запись об авторе из базы данных.
-
#get(id) ⇒ Object
возвращает запись об авторе по заданному id.
-
#get_list(page_size, page_num, sort_field, sort_direction, has_father_name = nil) ⇒ Object
возвращает список авторов с учетом фильтра по наличию отчества и сортировки, позволяет задавать количество элементов на странице и номер страницы.
-
#initialize ⇒ AuthorDBDataSource
constructor
A new instance of AuthorDBDataSource.
Constructor Details
#initialize ⇒ AuthorDBDataSource
Returns a new instance of AuthorDBDataSource.
5 6 7 |
# File 'lib/author/author_db_data_source.rb', line 5 def initialize @client = DBClient.instance end |
Instance Method Details
#add(author) ⇒ Object
добавляет нового автора в базу данных, возвращает созданную запись.
17 18 19 20 21 22 |
# File 'lib/author/author_db_data_source.rb', line 17 def add() query = "INSERT INTO Author (FirstName, LastName, FatherName) VALUES ('#{.first_name}', '#{.last_name}', #{.father_name.nil? ? 'NULL' : "'#{.father_name}'"})" @client.query(query) = @client.last_id get() end |
#change(author) ⇒ Object
изменяет данные об авторе в базе данных, возвращает измененную запись.
25 26 27 28 29 |
# File 'lib/author/author_db_data_source.rb', line 25 def change() query = "UPDATE Author SET FirstName='#{.first_name}', LastName='#{.last_name}', FatherName=#{.father_name.nil? ? 'NULL' : "'#{.father_name}'"} WHERE AuthorID=#{.}" @client.query(query) get(.) end |
#count ⇒ Object
возвращает количество записей об авторах в базе данных.
84 85 86 87 88 89 |
# File 'lib/author/author_db_data_source.rb', line 84 def count query = "SELECT COUNT(*) FROM Author" result = @client.query(query).first result[:'COUNT(*)'] end |
#delete(id) ⇒ Object
удаляет запись об авторе из базы данных.
32 33 34 35 |
# File 'lib/author/author_db_data_source.rb', line 32 def delete(id) query = "DELETE FROM Author WHERE AuthorID=#{id}" @client.query(query) end |
#get(id) ⇒ Object
возвращает запись об авторе по заданному id.
38 39 40 41 42 43 44 45 46 |
# File 'lib/author/author_db_data_source.rb', line 38 def get(id) query = "SELECT * FROM Author WHERE AuthorID=#{id}" result = @client.query(query).first if result Author.new(result[:'AuthorID'], result[:'FirstName'], result[:'LastName'], result[:'FatherName']) else nil end end |
#get_list(page_size, page_num, sort_field, sort_direction, has_father_name = nil) ⇒ Object
возвращает список авторов с учетом фильтра по наличию отчества и сортировки, позволяет задавать количество элементов на странице и номер страницы.
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/author/author_db_data_source.rb', line 62 def get_list(page_size, page_num, sort_field, sort_direction, has_father_name = nil) offset = (page_num - 1) * page_size query = "SELECT * FROM Author" if has_father_name == true query += " WHERE FatherName IS NOT NULL" elsif has_father_name == false query += " WHERE FatherName IS NULL" end query += " ORDER BY #{sort_field} #{sort_direction} LIMIT #{page_size} OFFSET #{offset}" results = @client.query(query) = [] results.each do |result| << Author.new(result[:'AuthorID'], result[:'FirstName'], result[:'LastName'], result[:'FatherName']) end end |