|
|
|
@ -9,14 +9,12 @@ class StudentsListDB
|
|
|
|
|
@db = DatabaseConnection.instance
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# Получить объект Student по ID.
|
|
|
|
|
def get_student_by_id(id)
|
|
|
|
|
result = @db.query("SELECT * FROM student WHERE id = #{id} LIMIT 1")
|
|
|
|
|
row = result.first
|
|
|
|
|
row ? row_to_student(row) : nil
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# Получить список из k студентов (страница n) в виде объекта DataList.
|
|
|
|
|
def get_k_n_student_short_list(k, n)
|
|
|
|
|
offset = (n - 1) * k
|
|
|
|
|
results = @db.query("SELECT * FROM student ORDER BY surname, name, patronymic LIMIT #{k} OFFSET #{offset}")
|
|
|
|
@ -24,7 +22,6 @@ class StudentsListDB
|
|
|
|
|
DataListStudentShort.new(student_shorts)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# Добавить объект Student в БД (ID формируется автоматически).
|
|
|
|
|
def add_student(student)
|
|
|
|
|
sql = <<~SQL
|
|
|
|
|
INSERT INTO student (git, surname, name, patronymic, birth_date, phone, telegram, email)
|
|
|
|
@ -46,7 +43,6 @@ class StudentsListDB
|
|
|
|
|
student
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# Обновить студента по ID.
|
|
|
|
|
def update_student_by_id(id, new_student)
|
|
|
|
|
sql = <<~SQL
|
|
|
|
|
UPDATE student SET
|
|
|
|
@ -65,13 +61,11 @@ class StudentsListDB
|
|
|
|
|
@db.client.affected_rows > 0
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# Удалить студента по ID.
|
|
|
|
|
def delete_student_by_id(id)
|
|
|
|
|
@db.query("DELETE FROM student WHERE id = #{id}")
|
|
|
|
|
@db.client.affected_rows > 0
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# Получить количество студентов.
|
|
|
|
|
def get_student_short_count
|
|
|
|
|
result = @db.query("SELECT COUNT(*) as count FROM student")
|
|
|
|
|
result.first['count']
|
|
|
|
@ -79,7 +73,8 @@ class StudentsListDB
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
|
|
# Преобразование строки результата в объект Student.
|
|
|
|
|
# Преобразование строки результата в объект Student
|
|
|
|
|
|
|
|
|
|
def row_to_student(row)
|
|
|
|
|
Student.new(
|
|
|
|
|
id: row['id'].to_s,
|
|
|
|
@ -94,7 +89,7 @@ class StudentsListDB
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# Простой метод для экранирования строк (на практике лучше использовать подготовленные выражения).
|
|
|
|
|
# Метод для экранирования строк
|
|
|
|
|
def escape(value)
|
|
|
|
|
@db.client.escape(value.to_s)
|
|
|
|
|
end
|
|
|
|
|