Class: Students_list_DB
- Inherits:
-
Students_list_interface
- Object
- Students_list_interface
- Students_list_DB
- Defined in:
- lib/models/students_list/students_list_DB.rb
Instance Method Summary collapse
- #add_student(student) ⇒ Object
- #delete_student(id) ⇒ Object
- #get_k_n_student_short_list(k, n, filter = nil, data_list = nil) ⇒ Object
- #get_student_by_id(id) ⇒ Object
- #get_student_short_count(filter = nil) ⇒ Object
- #replace_student(id, new_student) ⇒ Object
Instance Method Details
#add_student(student) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/models/students_list/students_list_DB.rb', line 30 def add_student(student) query = <<-SQL INSERT INTO student (first_name, name, patronymic, birthdate, telegram, email, phone_number, git) VALUES (?, ?, ?, ?, ?, ?, ?, ?) SQL begin DB_client.instance.query(query, [ student.first_name, student.name, student.patronymic, student.birthdate, student.telegram, student.email, student.phone_number, student.git ]) rescue Mysql2::Error => e if e..include?('Duplicate entry') raise "Student with this unique value already exists - #{e.}" else raise e end end end |
#delete_student(id) ⇒ Object
83 84 85 86 |
# File 'lib/models/students_list/students_list_DB.rb', line 83 def delete_student(id) query = "DELETE FROM student WHERE id = ?" DB_client.instance.query(query, [id]) end |
#get_k_n_student_short_list(k, n, filter = nil, data_list = nil) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/models/students_list/students_list_DB.rb', line 17 def get_k_n_student_short_list(k, n, filter = nil, data_list = nil) base_query = "SELECT * FROM student" filter_query = filter ? filter.apply(base_query) : base_query start = (k - 1) * n result = DB_client.instance.query(filter_query + " LIMIT ? OFFSET ?", [n, start]) students_short = result.map { |row| Student_short.new_from_student_obj(Student.new_from_hash(row)) } data_list ||= Data_list_student_short.new(students_short) data_list.index = start + 1 data_list.data = students_short data_list end |
#get_student_by_id(id) ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/models/students_list/students_list_DB.rb', line 9 def get_student_by_id(id) result = DB_client.instance.query("SELECT * FROM student WHERE id = ?", [id]) row = result.first return nil unless row Student.new_from_hash(row) end |
#get_student_short_count(filter = nil) ⇒ Object
88 89 90 91 92 93 94 |
# File 'lib/models/students_list/students_list_DB.rb', line 88 def get_student_short_count(filter = nil) base_query = "SELECT COUNT(*) AS count FROM student" filter_query = filter ? filter.apply(base_query) : base_query result = DB_client.instance.query(filter_query) result.first['count'] end |
#replace_student(id, new_student) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/models/students_list/students_list_DB.rb', line 56 def replace_student(id, new_student) query = <<-SQL UPDATE student SET first_name = ?, name = ?, patronymic = ?, birthdate = ?, telegram = ?, email = ?, phone_number = ?, git = ? WHERE id = ? SQL begin DB_client.instance.query(query, [ new_student.first_name, new_student.name, new_student.patronymic, new_student.birthdate, new_student.telegram, new_student.email, new_student.phone_number, new_student.git, id ]) rescue Mysql2::Error => e if e..include?('Duplicate entry') raise "Error: Student with this unique value already exists - #{e.}" else raise e end end end |