Class: UserDbDataSource

Inherits:
Object
  • Object
show all
Defined in:
lib/user/user_db_data_source.rb

Instance Method Summary collapse

Constructor Details

#initializeUserDbDataSource

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

#countObject

возвращает количество записей об пользователях в базе данных.



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