Sha256: 671d524e0c335c2836edde2364b3eeeacee12801a4384206e287d74017f6a9a1
Contents?: true
Size: 1.83 KB
Versions: 2
Compression:
Stored size: 1.83 KB
Contents
# frozen_string_literal: true require './LabStudents/repositories/data_sources/db_data_source' require './LabStudents/models/student' require './LabStudents/models/student_short' require './LabStudents/repositories/containers/data_list_student_short' class DBSourceAdapter def initialize @db = DBDataSource.instance end def student_by_id(student_id) hash = @db.prepare_exec('SELECT * FROM student WHERE id = ?', student_id).first return nil if hash.nil? Student.from_hash(hash) end def paginated_short_students(page, count, existing_data_list = nil) offset = (page - 1) * count students = @db.prepare_exec('SELECT * FROM student LIMIT ?, ?', offset, count) slice = students.map { |h| StudentShort.from_student(Student.from_hash(h)) } return DataListStudentShort.new(slice) if existing_data_list.nil? existing_data_list.replace_objects(slice) existing_data_list end def add_student(student) template = 'INSERT INTO student(last_name, first_name, father_name, phone, telegram, email, git) VALUES (?, ?, ?, ?, ?, ?, ?)' @db.prepare_exec(template, *student_fields(student)) @db.query('SELECT LAST_INSERT_ID()').first.first[1] end def replace_student(student_id, student) template = 'UPDATE student SET last_name=?, first_name=?, father_name=?, phone=?, telegram=?, email=?, git=? WHERE id=?' @db.prepare_exec(template, *student_fields(student), student_id) end def remove_student(student_id) @db.prepare_exec('DELETE FROM student WHERE id = ?', student_id) end def student_count @db.query('SELECT COUNT(id) FROM student').first.first[1] end private def student_fields(student) [student.last_name, student.first_name, student.father_name, student.phone, student.telegram, student.email, student.git] end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rubbish_code-1.0.0 | lib/source/repositories/adapters/db_source_adapter.rb |
rubbish_code-0.1.4 | lib/source/repositories/adapters/db_source_adapter.rb |