Logo
Logo

Быстрое создание веб-приложения из существующей базы данных

Алексей Новиков

Oct 21, 2020

Создать web-ориентированную информационную систему из базы данных Adventure Works с помощью бесплатной платформы Abris

Платформа Abris действительно хороша при создании бэкэнда для вашей базы данных. В то время как интерфейс довольно прост, бэкэнд может быть более сложным из-за множества таблиц, которые нужно отредактировать. Для каждой таблицы вам нужно создать страницу отображения, отредактировать форму и написать некоторый серверный код для извлечения и сохранения данных. Это долгая и скучная работа.

Вы можете быть удивлены, но ваша база данных содержит почти всю информацию для автоматического создания интерфейса. Платформа Abris может сделать это за вас.

Прежде всего, нам нужно получить бесплатную версию платформы Abris. Мы будем использовать контейнер docker с предустановленным Apache+PHP+PostgreSQL+Abris. Поэтому откройте строку командной строки и введите команды (Docker уже должен быть установлен):

docker pull abrissite/abris-free
docker run --name abris -it -p 80:80 -p 5432:5432 abrissite/abris-free

Следующий шаг-создание базы данных. Вы можете восстановить его из дампа или резервной копии, или использовать SQL-скрипт или любой другой способ, который вам нравится. Например мы используем известную демонстрационную базу данных созданную Microsoft и часто используемую для демонстраций. Adventure Works выглядит так:

Эта схема сейчас недоступна с сайта Microsoft, мы взяли ее из Improve & Repeat blog

Можно видеть, что эта база данных сложна и содержит более 60 таблиц.

Первоначально эта база данных была создана для Microsoft SQL Server, но существует версия, преобразованная для PostgreSQL.

Она не содержит данных, поэтому нам нужно будет загрузить их из репозитория Microsoft

https://github.com/Microsoft/sql-server-samples/tree/master/samples/databases/adventure-works/oltp-install-script

Теперь мы находимся внутри контейнера docker, который только что создали. Нам нужно установить Ruby. Он необходим для скрипта, который преобразует некоторые примеры данных MS SQL Server в PostgreSQL.

apt install ruby

Затем загрузите скрипты базы данных, образцы данных и создайте базу данных.

Загрузка и распаковка схемы базы данных:

curl --output adv.zip --location "https://github.com/lorint/AdventureWorks-for-Postgres/archive/master.zip"
unzip adv.zip

Загрузка и распаковка образцов данных:

curl --output adv-sample.zip --location "https://github.com/microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks-oltp-install-script.zip"
unzip adv-sample.zip -d AdventureWorks-for-Postgres-master

Предварительная обработка образцов данных:

cd AdventureWorks-for-Postgres-master/
ruby update_csvs.rb

Создание базы данных и заполнение ее образцами данных:

PGPASSWORD=123456 psql --host=localhost --username=postgres -c "create database adventure"
PGPASSWORD=123456 psql --host=localhost --username=postgres --dbname=adventure < install.sql

Затем запустите браузер и перейдите по адресу вашей машины, где работает docker, или просто http://localhost/ если docker работает на той же машине, что и ваш браузер.

Вы можете увидеть форму установки и сообщения о том, что конфигурация еще не существует.

В форме установки заполните пароль по умолчанию (123456), имя базы данных (adventure), установите флажки "Create new database" и "Install demo data" в положение "No" потому что база данных уже создана, и "Create menu" в "Yes".

Нажмите кнопку "Install" а потом войдите в систему и… вот и все!

Вы видите пункты меню, соответствующие схемам, и подпункты, соответствующие таблицам и представлениям. И теперь вы можете просматривать данные, редактировать и сохранять их.

Вы можете сделать этот трюк с любой базой данных PostgreSQL. Главное условие - все таблицы должны быть связаны ограничениями внешних ключей. Платформа Abris использует информацию о внешних ключах для создания абсолютно просматриваемого пользовательского интерфейса.

Подробности смотрите в видео-инструкции:

Ни кода, ни особого дизайна. Просто установите и используйте.