Class: UserDbDataSource
- Inherits:
-
Object
- Object
- UserDbDataSource
- Defined in:
- lib/user/user_db_data_source.rb
Instance Method Summary collapse
-
#add(user) ⇒ Object
добавляет нового пользователя в базу данных, возвращает созданную запись.
-
#change(user) ⇒ 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 ⇒ UserDbDataSource
constructor
A new instance of UserDbDataSource.
Constructor Details
#initialize ⇒ UserDbDataSource
Returns a new instance of UserDbDataSource.
5 6 7 |
# File 'lib/user/user_db_data_source.rb', line 5 def initialize @client = DBClient.instance end |
Instance Method Details
#add(user) ⇒ Object
добавляет нового пользователя в базу данных, возвращает созданную запись.
11 12 13 14 15 16 |
# File 'lib/user/user_db_data_source.rb', line 11 def add(user) query = "INSERT INTO User (FirstName, LastName, FatherName) VALUES ('#{user.first_name}', '#{user.last_name}', #{user.father_name.nil? ? 'NULL' : "'#{user.father_name}'"})" @client.query(query) user_id = @client.last_id get(user_id) end |
#change(user) ⇒ Object
изменяет данные об пользователе в базе данных, возвращает измененную запись.
19 20 21 22 23 |
# File 'lib/user/user_db_data_source.rb', line 19 def change(user) query = "UPDATE User SET FirstName='#{user.first_name}', LastName='#{user.last_name}', FatherName=#{user.father_name.nil? ? 'NULL' : "'#{user.father_name}'"} WHERE UserID=#{user.user_id}" @client.query(query) get(user.user_id) end |
#count ⇒ Object
возвращает количество записей об пользователях в базе данных.
65 66 67 68 69 70 |
# File 'lib/user/user_db_data_source.rb', line 65 def count query = "SELECT COUNT(*) FROM User" result = @client.query(query).first result[:'COUNT(*)'] end |
#delete(id) ⇒ Object
удаляет запись об пользователе из базы данных.
26 27 28 29 |
# File 'lib/user/user_db_data_source.rb', line 26 def delete(id) query = "DELETE FROM User WHERE UserID=#{id}" @client.query(query) end |
#get(id) ⇒ Object
возвращает запись об пользователе по заданному id.
32 33 34 35 36 37 38 39 40 |
# File 'lib/user/user_db_data_source.rb', line 32 def get(id) query = "SELECT * FROM User WHERE UserID=#{id}" result = @client.query(query).first if result User.new(result[:'UserID'], 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
возвращает список пользователей с учетом фильтра по наличию отчества и сортировки, позволяет задавать количество элементов на странице и номер страницы.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/user/user_db_data_source.rb', line 43 def get_list(page_size, page_num, sort_field, sort_direction, has_father_name = nil) offset = (page_num - 1) * page_size query = "SELECT * FROM User" 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) users = [] results.each do |result| users << User.new(result[:'UserID'], result[:'FirstName'], result[:'LastName'], result[:'FatherName']) end users end |