student_gem 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f0c586a241d8469b845e81cf3eb2b1fb54e58a5419a91c3d9eae380072396a35
4
- data.tar.gz: 1af65ec25b4dbbe942fc3e814d2101d3a6668ce341b7b55f3ab48726b4df46cc
3
+ metadata.gz: a702216837e16e05dd2c9d7db66ce027a78c5551c98ee81905045b0d57db3d29
4
+ data.tar.gz: 11ffbcf1a9f0d46a012942e6137b04d8cfe898c4097fcd895201602ee02befee
5
5
  SHA512:
6
- metadata.gz: de730a7273ca23713304362557fb813ed4d1cf2441485dcf30de5d7b5d3e99a4538c5835c59838b10c0fccb5d0b2b2df86d1fbfaea1a7d6cf4fb3b6ab8e7a3d6
7
- data.tar.gz: bc1fd8f93e58c8c76725eeadbec5f61b1870164321188df13f457f776cf9499848e79df81e35f5361d58da332c7cf53aea2aee4bd2c0f071fa0b805e27e6777a
6
+ metadata.gz: 5d8e7cfeefc00b6fc1ec5c90171b82ef7a5791fbffbccafcd70e829dbb34aed351a8962085b38499dbd32696c836c7b1a616f207a9c368758094e0a2ea0fe38c
7
+ data.tar.gz: c90e74c115102570d70be9ff4760c68877acefb76db5c184d2399b2d95c2d62997c0f97190d93ac565210842d4bb62d7411aed6ec2edd572e5c44512002e5f87
@@ -1,3 +1,4 @@
1
+ # миксин, замещающий обычный сеттер на сеттер с валидацией
1
2
  module CheckingAttrWriter
2
3
 
3
4
  # переопределение сеттера для валидации
@@ -17,6 +18,7 @@ module CheckingAttrWriter
17
18
  end
18
19
  end
19
20
 
21
+ # переопределение аксессора для валидации
20
22
  def attr_accessor(*attrs)
21
23
  attr_reader *attrs
22
24
  attr_writer *attrs
@@ -1,5 +1,6 @@
1
- require_relative 'student_list.rb'
1
+ require_relative '../student_list.rb'
2
2
 
3
+ # общий интерфейс для всех контроллеров
3
4
  class Student_list_controller
4
5
 
5
6
  # общий для любого контроллера главного окна фрагмент конструктора
@@ -10,6 +11,8 @@ class Student_list_controller
10
11
 
11
12
  end
12
13
 
14
+
15
+ # контроллер основного окна
13
16
  class Main_window_controller < Student_list_controller
14
17
 
15
18
  # константа числа строк на странице
@@ -126,6 +129,7 @@ class Main_window_controller < Student_list_controller
126
129
  end
127
130
 
128
131
 
132
+ # интерфейс контроллера модального окна для стратегии
129
133
  class Modal_window_controller < Student_list_controller
130
134
 
131
135
  def create
@@ -159,9 +163,11 @@ class Modal_window_controller < Student_list_controller
159
163
  end
160
164
  end
161
165
 
166
+ # контроллер модального окна при вставке
162
167
  class Insertion_controller < Modal_window_controller
163
168
  end
164
169
 
170
+ # контроллер модального окна при изменении
165
171
  class Updation_controller < Modal_window_controller
166
172
  def fill_text_fields(id)
167
173
  student = @student_list.get_student(id).to_h
@@ -1,5 +1,6 @@
1
- require_relative 'data_table.rb'
1
+ require_relative '../data_table.rb'
2
2
 
3
+ # класс работы с массивом объектов определенного класса
3
4
  class Data_list
4
5
 
5
6
  # сеттер, учитывающий то, что атрибуты не могут меняться
@@ -62,9 +63,9 @@ class Data_list
62
63
  end
63
64
 
64
65
 
65
- # защищенный метод проверки атрибутов класса
66
66
  protected
67
67
 
68
+ # защищенный метод проверки атрибутов класса
68
69
  def check_names?(list)
69
70
  true if list.empty?
70
71
  unless self.class.private_method_defined?(:check_class_names)
@@ -1,5 +1,6 @@
1
1
  require_relative 'data_list.rb'
2
2
 
3
+ # класс работы с массивом экземпляров класса StudentShort или класса с его атрибутами
3
4
  class Data_list_student_short < Data_list
4
5
 
5
6
  # инициализация массива подписчиков
@@ -1,3 +1,4 @@
1
+ # класс для работы с атрибутами списка объектов без возможности редактирования
1
2
  class Data_table
2
3
 
3
4
  # конструктор
@@ -1,6 +1,7 @@
1
- require_relative 'student_ancestor.rb'
1
+ require_relative '../student_ancestor.rb'
2
2
  require_relative 'checking_attr_writer.rb'
3
3
 
4
+ # класс студента с различными методами валидации его полей
4
5
  class Student < StudentAncestor
5
6
 
6
7
  # методы класса
@@ -96,6 +97,7 @@ class Student < StudentAncestor
96
97
  str += "#{git.nil? ? "" : ", git - #{git}"}"
97
98
  end
98
99
 
100
+ # полное содержимое объекта в виде Hash
99
101
  def to_h
100
102
  hash = {}
101
103
  hash["last_name"] = @last_name
@@ -1,3 +1,4 @@
1
+ # суперкласс для классов Student и StudentShort
1
2
  class StudentAncestor
2
3
 
3
4
  # геттеры
@@ -3,6 +3,7 @@ require 'logger'
3
3
  require_relative 'student.rb'
4
4
  require_relative 'data_list_student_short.rb'
5
5
 
6
+ # класс модели для работы с базой данных с использованием PostgreSQL
6
7
  class Student_list
7
8
  ACTION_LOGGER = Logger.new(File.join(__dir__, 'log', 'actions.log'))
8
9
  ACTION_LOGGER.level = Logger::INFO
@@ -67,9 +68,9 @@ class Student_list
67
68
  end
68
69
 
69
70
 
70
- # подключение к базе данных и выполнение запроса
71
71
  private
72
72
 
73
+ # подключение к базе данных и выполнение запроса
73
74
  def sql(command, dbname: 'student_db', user: 'postgres', password: 'postgres', host: '127.0.0.1', port: 5432)
74
75
  result = []
75
76
  begin
@@ -1,5 +1,6 @@
1
1
  require_relative 'student.rb'
2
2
 
3
+ # класс студента, несущий гораздо меньше информации, чем класс Student
3
4
  class StudentShort < StudentAncestor
4
5
 
5
6
  # альтернативный конструктор, принимающий экземпляр класса студент
@@ -2,6 +2,7 @@ require 'fox16'
2
2
  include Fox
3
3
  require_relative 'controller.rb'
4
4
 
5
+ # интерфейс подписчика модели
5
6
  module View
6
7
 
7
8
  def set_table_params(column_names, whole_entities_count)
@@ -14,10 +15,14 @@ module View
14
15
 
15
16
  end
16
17
 
18
+
19
+ # класс основного окна представления
17
20
  class MainWindow < FXMainWindow
18
21
 
22
+ # подключение интерфейса подписчика
19
23
  include View
20
24
 
25
+ # геттеры для обращения к полю количества страниц и кнопкам для обновления их состояния
21
26
  attr_reader :page_count, :previous_button, :next_button, :insert_button, :update_button
22
27
 
23
28
  # конструктор страницы и начальное заполнение данными
@@ -161,10 +166,13 @@ class MainWindow < FXMainWindow
161
166
  end
162
167
 
163
168
 
169
+ # класс модельного окна для добавления и изменения записей
164
170
  class ModalWindow < FXDialogBox
165
171
 
166
- attr_reader :last_name, :first_name, :patronymic, :telegram, :email, :phone, :git, :ok_button, :controller
172
+ # геттеры для обращения к текстовым полям и к кнопке "Сохранить"
173
+ attr_reader :last_name, :first_name, :patronymic, :telegram, :email, :phone, :git, :ok_button
167
174
 
175
+ # конструктор модального окна
168
176
  def initialize(owner, controller)
169
177
  super(owner, "Создание студента", DECOR_TITLE | DECOR_BORDER, width: 400, height: 350)
170
178
  @controller = controller
@@ -215,6 +223,7 @@ class ModalWindow < FXDialogBox
215
223
  end
216
224
  end
217
225
 
226
+ # делегация валидации контроллеру
218
227
  def text_fields_onchange
219
228
  @controller.text_fields_onchange
220
229
  end
data/sql/ddl.sql ADDED
@@ -0,0 +1,10 @@
1
+ CREATE TABLE student (
2
+ id SERIAL PRIMARY KEY,
3
+ last_name VARCHAR(50) NOT NULL,
4
+ first_name VARCHAR(50) NOT NULL,
5
+ patronymic VARCHAR(50),
6
+ telegram VARCHAR(50) UNIQUE,
7
+ email VARCHAR(50) UNIQUE,
8
+ phone VARCHAR(50) UNIQUE,
9
+ git VARCHAR(50) UNIQUE
10
+ );
data/sql/dml.sql ADDED
@@ -0,0 +1,51 @@
1
+ INSERT INTO student (first_name, last_name, patronymic, phone, telegram, email, git)
2
+ VALUES
3
+ ('Виктор', 'Уваров', NULL, NULL, '@vik_uvarov', NULL, NULL),
4
+ ('Мария', 'Федорова', NULL, NULL, NULL, NULL, NULL),
5
+ ('Андрей', 'Харитонов', 'Николаевич', '+79998887766', NULL, NULL, 'https://github.com/andrey'),
6
+ ('Людмила', 'Цветкова', NULL, NULL, '@lyuda', 'lyuda@mail.ru', NULL),
7
+ ('Егор', 'Чистяков', 'Петрович', NULL, NULL, NULL, NULL),
8
+ ('Наталья', 'Шестакова', NULL, NULL, NULL, NULL, 'https://github.com/natalia'),
9
+ ('Борис', 'Щербаков', NULL, NULL, NULL, 'boris@example.org', NULL),
10
+ ('Ирина', 'Эренбург', 'Андреевна', '+79209998877', '@irina_eren', NULL, 'https://github.com/irina'),
11
+ ('Александр', 'Абрамов', 'Сергеевич', '+79151112233', '@a_abramov', 'a.abramov@mail.ru', 'https://github.com/aabramov'),
12
+ ('Елена', 'Агафонова', NULL, NULL, '@elena_ag', 'agafonova.e@yandex.ru', NULL),
13
+ ('Дмитрий', 'Белов', 'Игоревич', '+79262223344', NULL, NULL, 'https://github.com/dbelov'),
14
+ ('Ольга', 'Бирюкова', 'Александровна',NULL, '@olga_bir', 'birykova@mail.ru', NULL),
15
+ ('Максим', 'Воронов', NULL, '+79033334455', NULL, 'voronov.m@gmail.com', 'https://github.com/mvoronov'),
16
+ ('Анна', 'Гаврилова', 'Петровна', NULL, '@anna_gav', NULL, NULL),
17
+ ('Сергей', 'Гордеев', NULL, NULL, NULL, 'gordeev.s@mail.ru', 'https://github.com/sgordeev'),
18
+ ('Татьяна', 'Дмитриева', 'Викторовна', '+79014445566', '@t_dmitrieva', NULL, NULL),
19
+ ('Павел', 'Ефимов', NULL, NULL, NULL, NULL, 'https://github.com/pefimov'),
20
+ ('Ксения', 'Жукова', 'Андреевна', '+79275556677', '@ksenia_zh', 'zhukova.k@yandex.ru', NULL),
21
+ ('Никита', 'Зайцев', NULL, NULL, '@n_zaytsev', NULL, 'https://github.com/nzaytsev'),
22
+ ('Вероника', 'Иванова', 'Олеговна', '+79186667788', NULL, 'ivanova.v@mail.ru', NULL),
23
+ ('Артем', 'Кузнецов', NULL, NULL, NULL, 'kuznetsov.a@gmail.com', 'https://github.com/akuznetsov'),
24
+ ('Полина', 'Лебедева', 'Дмитриевна', '+79297778899', '@polina_leb', NULL, NULL),
25
+ ('Роман', 'Макаров', NULL, NULL, '@r_makarov', 'makarov.r@mail.ru', 'https://github.com/rmakarov'),
26
+ ('Светлана', 'Никитина', 'Сергеевна', NULL, NULL, 'nikitina.s@yandex.ru', NULL),
27
+ ('Илья', 'Орлов', NULL, '+79018889900', '@ilya_orlov', NULL, 'https://github.com/iorlov'),
28
+ ('Юлия', 'Петрова', 'Максимовна', NULL, NULL, 'petrova.y@gmail.com', NULL),
29
+ ('Глеб', 'Романов', NULL, '+79269990011', NULL, NULL, 'https://github.com/gromanov'),
30
+ ('Алиса', 'Соколова', 'Игоревна', NULL, '@alisa_sok', 'sokolova.a@mail.ru', NULL),
31
+ ('Владимир', 'Тимофеев', NULL, '+79031112244', NULL, 'timofeev.v@yandex.ru', 'https://github.com/vtimofeev'),
32
+ ('Дарья', 'Устинова', 'Павловна', NULL, '@d_ustinova', NULL, NULL),
33
+ ('Константин','Фомин', NULL, NULL, NULL, 'fomin.k@mail.ru', 'https://github.com/kfomin'),
34
+ ('Марина', 'Хохлова', 'Алексеевна', '+79272223355', '@marina_kh', NULL, NULL),
35
+ ('Алексей', 'Царев', NULL, NULL, NULL, NULL, 'https://github.com/atsarev'),
36
+ ('Екатерина', 'Чернова', 'Викторовна', NULL, '@kate_chernova','chernova.e@gmail.com', NULL),
37
+ ('Денис', 'Шилов', NULL, '+79013334466', NULL, 'shilov.d@mail.ru', 'https://github.com/dshilov'),
38
+ ('Надежда', 'Щукина', 'Николаевна', NULL, NULL, NULL, NULL),
39
+ ('Игорь', 'Юдин', NULL, '+79264445577', '@igor_yudin', 'yudin.i@yandex.ru', NULL),
40
+ ('Анастасия', 'Яковлева', 'Сергеевна', NULL, '@nastya_yak', NULL, 'https://github.com/ayakovleva'),
41
+ ('Петр', 'Андреев', NULL, NULL, NULL, 'andreev.p@gmail.com', NULL),
42
+ ('Кристина', 'Богданова', 'Олеговна', '+79155556688', '@kristina_b', NULL, NULL),
43
+ ('Василий', 'Ветров', NULL, NULL, NULL, NULL, 'https://github.com/vvetrov'),
44
+ ('Евгения', 'Громова', 'Андреевна', NULL, '@evgenia_g', 'gromova.e@mail.ru', NULL),
45
+ ('Антон', 'Дроздов', NULL, '+79087778899', NULL, 'drozdov.a@yandex.ru', 'https://github.com/adrozdov'),
46
+ ('Лариса', 'Егорова', 'Петровна', NULL, NULL, NULL, NULL),
47
+ ('Станислав', 'Жданов', NULL, NULL, '@stas_zhdanov', 'zhdanov.s@gmail.com', 'https://github.com/szhdanov'),
48
+ ('Маргарита', 'Зимина', 'Ильинична', '+79219990022', NULL, NULL, NULL),
49
+ ('Федор', 'Исаев', NULL, NULL, '@f_Isaev', 'isaev.f@mail.ru', NULL),
50
+ ('Валентина', 'Крылова', 'Дмитриевна', NULL, NULL, 'krylova.v@yandex.ru', 'https://github.com/vkrylova')
51
+ ;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: student_gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - s0195920
@@ -55,16 +55,18 @@ executables: []
55
55
  extensions: []
56
56
  extra_rdoc_files: []
57
57
  files:
58
- - checking_attr_writer.rb
59
- - controller.rb
60
- - data_list.rb
61
- - data_list_student_short.rb
62
- - data_table.rb
63
- - student.rb
64
- - student_ancestor.rb
65
- - student_list.rb
66
- - student_short.rb
67
- - view.rb
58
+ - lib/checking_attr_writer.rb
59
+ - lib/controller.rb
60
+ - lib/data_list.rb
61
+ - lib/data_list_student_short.rb
62
+ - lib/data_table.rb
63
+ - lib/student.rb
64
+ - lib/student_ancestor.rb
65
+ - lib/student_list.rb
66
+ - lib/student_short.rb
67
+ - lib/view.rb
68
+ - sql/ddl.sql
69
+ - sql/dml.sql
68
70
  homepage: https://fpm-gitlab.kubsu.ru/design-patterns-tests/s0195920
69
71
  licenses: []
70
72
  metadata: {}