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 = " INSERT INTO student (first_name, name, patronymic, birthdate, telegram, email, phone_number, git)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n SQL\n\n begin\n DB_client.instance.query(query, [\n student.first_name,\n student.name,\n student.patronymic,\n student.birthdate,\n student.telegram,\n student.email,\n student.phone_number,\n student.git\n ])\n rescue Mysql2::Error => e\n if e.message.include?('Duplicate entry')\n raise \"Student with this unique value already exists - \#{e.message}\"\n else\n raise e\n end\n end\nend\n" |
#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 = " UPDATE student\n SET first_name = ?, name = ?, patronymic = ?, birthdate = ?, telegram = ?, email = ?, phone_number = ?, git = ?\n WHERE id = ?\n SQL\n begin\n DB_client.instance.query(query, [\n new_student.first_name,\n new_student.name,\n new_student.patronymic,\n new_student.birthdate,\n new_student.telegram,\n new_student.email,\n new_student.phone_number,\n new_student.git,\n id\n ])\n rescue Mysql2::Error => e\n if e.message.include?('Duplicate entry')\n raise \"Error: Student with this unique value already exists - \#{e.message}\"\n else\n raise e\n end\n end\nend\n" |