Использование библиотеки для взаимодействия с базой данных Sequel
Документация
- Официальная страница документации библиотеки Sequel
- Шпаргалка по основным возможностям библиотеки Sequel
- Перечисление основных классов, используемых для построения Sequel DSL
Задача
Разработайте приложение, помогающие решать задачи для аналитики результатов запуска задач в рамках окружения непрерывной интеграции, continuous integration, CI.
Допустим, что в рамках CI у нас выполняется набор задач. Каждая задача описывается названием, параметрами запуска и набором шагов, которые выполняются.
Выполненные запуски задач отличаются друг от друга значением параметров, списком выполненых шагов. Параметры можно описать как пары строк ключ-значение.
Для каждого выполненого шага известна следующая информация:
- Название шага.
- Время выполнения шага.
- Текст, содержащий вывод задачи.
- Свойство, описывающее результат: успех, провал, ошибка.
Подзадача №1
Создайте Entity Relation (ER) диаграмму, описывающую схему базы данных, позволяющую оперировать данными, указанными выше. Для описания ER-диаграммы можно использовать либо текстовую нотацию, либо графическую. В качестве инструмента для формирования диаграммы можно воспользоваться:
Подзадача №2
Сформируйте набор миграций, который будет создавать таблицы в базе данных. На каждую таблицу должна приходиться 1 миграция.
Примените миграции для базы данных sqlite. Для этого вам потребуется установить следующие джемы:
Для решения можно либо написать скрипты, либо воспользоваться специализированной подсистемой. Описание подсистемы миграций доступна по ссылке sequel migration.
Установка sqlite3
под Windows
- Запустите консоль
mingw64
, которая находится в каталоге с интерпретатором Ruby (обычноC:\ruby-2.6.5
).- Откройте каталог с установкой Ruby.
- Перейдите в подкаталог
msys64
. - Запустите приложение
mingw64
.
- Получите ссылку на последний выпуск SQLite3
- Откройте сайт https://www.sqlite.org/download.html
- Скопируйте ссылку на последний выпуск. Необходимо скопировать ссылку на файл с расширением
.tar.gz
.
- Получите исходные коды
- В консоли
mingw64
введите командуwget --no-certificate-check URL
. ВместоURL
введите полученный на предыдущем шаге URL. - У вас должен скачаться файл вида
sqlite-snapshot-11111111111-.tar.gz
. Используйте командуls
для просмотра содержимого директории. - Распакуйте данный файл с помощью команды
tar xf FILE
. ВместоFILE
укажите путь к скачанному файлу. - После распаковки у вас должен появиться каталог. Перейдите в него с помощью команды
cd DIRECTORY
.
- В консоли
-
Скомпилируйте и установите sqlite
./configure make make install
- Закройте консоль
msys64
. - Установите джем
sqlite3
.
Подзадача №3
Сформируйте класс, предоставляющий методы для взаимодействия с базой данных. Данный класс должен предоставлять методы:
- Для наполнения каждой из таблиц случайными данными. Необходимо добавить как минимум по 500 записей в таблицы-листья и по 20 записей в центральные таблицы.
- Для наполнения тестовыми данными всех таблиц. Метод должен выполнять добавление информации только если все таблицы пустые.
Выполните код данных методов, проверьте состояние базы путём выполнения запросов и с помощью инструмента SQLiteBrowser.
Подзадача №4
Добавьте в созданный на этапе №3 классу методы, которые позволят решать следующие задачи:
- Добавлять новую задачу.
- Добавлять информацию о конкретном запуске задачи.
- Для заданного запуска задачи находить: завершился ли он успешно или с ошибками. С помощью данного запроса отобразите сводную таблицу для всех запусков конкретной задачи.
- Для заданного запуска задачи находить общее время его работы. Расширьте вывод таблицы, добавив туда общее время работы.
- Для данной задачи иметь возможность вывести следующую таблицу по каждому из запусков. Для каждого запуска должна быть возможность указать:
- Названия параметров для вывода. В выводе пользователю должно быть понятно какому параметру соответствует какое значение.
- Названия шагов для вывода. В выводе шага надо указывать успешно или с ошибкой он завершился.
- Расширьте вариант предыдущего запроса. Для вывода не показывать такие шаги, которые для всех запусков завершились с успехом.