Если вы храните информацию в реляционной базе данных, держу пари, вы хотели бы иметь удобное приложение, с помощью которого вы могли бы просматривать или редактировать эти данные. Затем, насколько я могу догадаться, вы начали создавать это приложение или даже создали его.
В любом случае, если вы когда-либо создавали приложение для работы с базой данных, вы знаете, что это совсем не просто.
Вы должны выбрать технологический стек. Затем вы должны спроектировать архитектуру приложения, чтобы обеспечить безопасность, скорость и точность данных и т.д.
К счастью, уже существует множество фреймворков и библиотек, которые можно использовать в качестве строительных блоков для приложений с полным стеком.
Но все равно написание и отладка кода отнимают много времени. Даже если вы очень опытный инженер-программист.
Поэтому мы решили создать инструмент, который генерировал бы код приложения для вашей базы данных, используя эти “блоки”. Мы хотели сделать сгенерированный исходный код пригодным для использования прямо из коробки. Если нет, вы могли бы использовать его в качестве начального для вашего собственного приложения.
И мы сделали это! Знакомьтесь IKODIX , онлайн-генератор исходного кода для приложений с полным стеком.
IKODIX не требует доступа к вашей базе данных для генерации кода. В нем используется декларативный подход.
Я терпеть не могу давать длинное и утомительное описание IKODIX – давайте сразу перейдем к созданию небольшого приложения. Это должно занять у вас не более 50-60 минут.
Даже если у вас уже есть несколько доступных тестовых баз данных, давайте запустим базу данных MySQL в Docker, чтобы ускорить процесс.
Запустите базу данных
Установите Docker Desktop на свой локальный хост. Нам это нужно не только для запуска базы данных, но и для запуска сгенерированного приложения.
- Создайте каталог
todo-db
, перейдите в него и создайте файлdocker-compose.yml
- Скопируйте следующий код в этот файл
services: db: image: mysql:8.0.19 volumes: - ./data:/var/lib/mysql - ./init.sql:/init.sql restart: always environment: - MYSQL_ROOT_PASSWORD=root_password - MYSQL_DATABASE=todo - MYSQL_USER=myuser - MYSQL_PASSWORD=mypassword expose: - 3306 ports: - 3306:3306 command: --init-file /init.sql
- Создать
запустите файл.sql
и скопируйте в него следующий код
CREATE DATABASE IF NOT EXISTS todo; USE todo; DROP TABLE IF EXISTS `employee`; CREATE TABLE `employee` ( `id` bigint NOT NULL AUTO_INCREMENT, `full_name` varchar(1000) NOT NULL, PRIMARY KEY (`id`) ); DROP TABLE IF EXISTS `task_status`; CREATE TABLE `task_status` ( `id` bigint NOT NULL AUTO_INCREMENT, `status_name` varchar(200) NOT NULL, PRIMARY KEY (`id`) ); DROP TABLE IF EXISTS `task`; CREATE TABLE `task` ( `id` bigint NOT NULL AUTO_INCREMENT, `description` varchar(5000) NOT NULL, `to_date` date DEFAULT NULL, `assignee_id` bigint DEFAULT NULL, `status_id` bigint NOT NULL, PRIMARY KEY (`id`), KEY `task_employee_id_fk` (`assignee_id`), KEY `task_task_status_id_fk` (`status_id`), CONSTRAINT `task_employee_id_fk` FOREIGN KEY (`assignee_id`) REFERENCES `employee` (`id`), CONSTRAINT `task_task_status_id_fk` FOREIGN KEY (`status_id`) REFERENCES `task_status` (`id`) );
- Создать другой
data
каталог внутри каталогаtodo-db
- Запустите команду в терминале:
docker-compose up -build
- Подождите, пока контейнер не сообщит, что он готов…
Теперь на вашем компьютере запущен контейнер Docker с базой данных todo
. Он содержит 3 таблицы: сотрудник
, задача
, task_status
.
Откройте IKODIX
Мы можем начать описывать таблицы в IKODIX. Открыть IKODIX . Перейдите в Таблицы данных и добавьте таблицы со столбцами, как описано ниже.
сотрудник таблица
- Добавьте таблицу
employee
. По умолчанию он уже будет иметь обязательныйПервичный ключ
столбец с типомДлинный
и имяидентификатор
. Это прекрасно для нас, потому что настоящая таблицасотрудник
имеет столбец первичного ключа с именемid
. Это относится ко всем остальным таблицам в нашей базе данных. - Добавить
full_name
столбец с типомString
.
task_status таблица
- Добавьте таблицу
task_status
. - Добавьте столбец
status_name
с типомString
.
задача таблица
- Добавьте таблицу
task
. - Добавьте
описание
столбец типаСтрока
. - Добавьте столбец
assignee_id
типаLong
. - Добавьте столбец
status_id
в качествеLong
. - Добавьте столбец
to_date
типаДата
.
Как только у нас будет список таблиц, мы сможем приступить к созданию прогнозов.
Проекция – это данные из некоторых связанных таблиц. Эти данные будут отображаться во внешнем интерфейсе на отдельной странице в DataGrid . Вы можете провести аналогию с SQL-запросом, который вы пишете для выбора некоторых записей из базы данных.
Как вы уже могли догадаться, наша база данных содержит информацию о некоторых задачах. Первое, что нам нужно увидеть, – это все задачи и назначенных на них сотрудников.
Создайте проекцию Task .
Перед нами откроется диаграмма, где нам нужно добавить таблицы, из которых мы хотим видеть записи.
Сначала мы добавим таблицу task
. Первая таблица – это корневая таблица на диаграмме и мы свяжем с ним другие таблицы. Это очень похоже на то, как мы пишем SQL-запрос.
Давайте добавим таблицу task_status
. Свяжите столбец status_id
из таблицы task
со столбцом id
в таблице task_status
.
Добавьте таблицу employee
. Свяжите столбец assignee_id
из таблицы task
со столбцом id
в таблице employee
.
Давайте перейдем на вкладку Просмотр . Здесь мы должны отметить как Видимые
все столбцы из таблиц на диаграмме, которые мы хотим видеть во внешнем интерфейсе.
Отметьте столбцы description
и to_date
в таблице задач. Задайте любые подходящие имена для этих столбцов в Заголовок столбца сетки .
Установите видимым столбец full_name
из таблицы employee
и status_name
столбец из таблицы task_status
. Дайте им тоже имена.
Вы можете изменить порядок столбцов, которые будут отображаться в DataGrid .
Далее перейдите на вкладку Создать . На этой вкладке мы настраиваем форму для создания записи для корневой таблицы на диаграмме. То есть запись будет создана только в таблице task
.
Давайте пометим описание
и to_date
поля как видимые, дайте им имена и соответствующие типы полей.
Но помимо этих полей, у нас есть связанные поля с другими таблицами: присваиваемый идентификатор
и status_id
. Давайте пометим их как видимые, назовем их и выберем Select
type.
Как только мы пометим их как видимые, у нас будет возможность в разделе Выбрать параметры управления настроить выпадающие списки. Мы можем указать столбец из связанной таблицы, который будет использоваться для имен в выпадающем списке.
Выберите status_name
столбец для status_id
и столбец full_name
для assignee_id
.
Перейдите на вкладку Update и сделайте то же самое, что и на вкладке Create .
У нас готова первая проекция. Теперь IKODIX сможет сгенерировать приложение, в котором у нас будет страница со всеми задачами и назначенными им сотрудниками. И мы сможем добавлять задачи через форму ввода.
Но у нас нет страницы и формы ввода для добавления сотрудников в список. Кроме того, здесь нет страницы и формы для ввода статусов вакансий.
Это легко исправить. Создайте две проекции для сотрудников и статусов: Сотрудники и Статусы . Добавьте к каждой проекции одну таблицу на диаграмме: сотрудник
и task_status_статус задачи
, соответственно.
Вероятно, было бы предпочтительнее, если бы вы попытались настроить DataGrid и формы на вкладках Просмотр , Создать и Обновите для каждой проекции самостоятельно.
Когда вы завершите все настройки в новых проекциях, мы сможем приступить к созданию исходного кода для приложения.
Генерация исходного кода
Но есть еще одна незаконченная вещь – нам нужно выбрать тип базы данных MySQL. Давайте перейдем в раздел Системные настройки и установим нужный нам тип базы данных.
Нажмите кнопку Загрузить исходный код и назовите приложение чем-то вроде “To Do Admin”.
Сохраните архив на локальном хосте в пустом каталоге todo-app
. Распакуйте архив в этом каталоге.
Теперь мы можем приступить к работе с нашим приложением. Нам не нужно устанавливать ничего дополнительного, чтобы запустить приложение.
Откройте README.txt
файл и внимательно прочитайте, что там написано.
Согласно руководству, существует два режима запуска приложения: демо-версия и dev .
Demo – это когда создается и запускается готовое к использованию приложение.
Dev – это когда приложение запускается для разработки. Горячая перезагрузка для интерфейса работает в этом режиме.
Давайте запустим приложение в демонстрационном режиме, чтобы посмотреть, как оно работает из коробки.
Прежде чем мы начнем, нам нужно настроить доступ к нашей базе данных. Это можно сделать в файле .env
. Найдите, где находится переменная DataSource.url
и замените ее значение на jdbc:mysql://host.docker.internal:3306/для выполнения . Затем замените имя пользователя ( DataSource.username
) на my user и пароль ( DataSource.password
) на my password . Сохраните файл.
Запуск приложения
Два контейнера Docker используются для запуска всех частей приложения. Но все, что нам нужно сделать, это выполнить команду app.sh демо-версия
(или app.cmd demo
для Windows). И дождитесь запуска приложения.
Поскольку контейнеры с приложением работают в фоновом режиме, нам нужно отслеживать их. Давайте выполним две команды app.sh клиентский журнал
и app.sh сервис-журнал
в отдельных терминалах.
Как только мы увидим, что все запущено и запущено, мы сможем открыть браузер по адресу http://localhost:3030
По умолчанию в системе есть один пользователь с правами администратора. Итак, мы войдем в систему под его учетной записью, именем пользователя: администратор и паролем: пароль администратора .
В наших таблицах нет записей, поэтому давайте попробуем получить новых сотрудников, новые статусы и создать задачи.
Несмотря на то, что приложение работает “из коробки”, нам нужно изменить название компании в левом верхнем углу.
Для того чтобы сделать это, давайте запустим приложение в режиме разработки. Просто запустите команду app.sh dev
.
Давайте подождем, пока запустятся все контейнеры Docker. Чтобы убедиться, что они готовы, используйте команды: app.sh клиентский журнал
и app.sh сервис-журнал
в отдельных терминалах.
Когда все будет готово, давайте откроем браузер с адресом http://localhost:3030
Теперь найдите рабочую область Page.txt
файл в интерфейсном коде в каталоге to-do-admin-client/src/features/layout
и замените текст “Название компании” на нужное нам значение: “ToDo Admin”.
Сохраните изменения в файле…. и просмотрите страницу в своем браузере. Значение должно автоматически измениться.
Контейнеры Docker для внешнего интерфейса сделаны так, что Горячая перезагрузка работает.
После внесения окончательных изменений вам необходимо запустить app.sh demo
снова – затем части приложения будут созданы для использования в производстве. Вы найдете дистрибутивы в to-do-admin-client/build
и в to-do-admin-service/target
.
Если вы собираетесь расширить функциональность приложения, сначала прочтите README.md
файлы с подробным описанием структуры кода в to-do-admin-client
и to-do-admin-service
каталоги. Это поможет вам без труда разобраться в коде.
Я надеюсь, вы не слишком устали и наслаждаетесь строительством с помощью IKODIX . В любом случае, это намного быстрее и удобнее, чем разрабатывать такие приложения самостоятельно.
Если у вас есть какие-либо комментарии или вопросы, не стесняйтесь размещать их на нашем форуме: Форум IKODIX
Также следите за новыми выпусками IKODIX в нашем Твиттере: @kodix
Спасибо!!!
Оригинал: “https://dev.to/ipselon/create-an-admin-panel-full-stack-app-for-your-database-in-minutes-1e65”