Этот проект включает сценарии для автоматической генерации файла init.sql
, который собирает все схемы и настройки базы
данных из различных файлов SQL в папке schemas
.
schemas/
— папка, содержащая все схемы базы данных, разделенные на файлы:schemas/users/
— схема для работы с пользователями.functions.sql
— пользовательские функции для работы с данными.indexes.sql
— индексы для таблицы пользователей.table.sql
— описание таблицыUsers
.triggers.sql
— триггеры для таблицыUsers
.
- Скрипт
run.sh
парсит все SQL-файлы в папкеschemas/
, включая вложенные папки (например,schemas/users/
). - Каждый файл добавляется в общий файл
init.sql
в порядке, определенном скриптом. - Результирующий файл
init.sql
включает все таблицы, индексы, функции и триггеры, которые необходимы для инициализации базы данных.
Примечание: Если какой-либо из файлов отсутствует, скрипт завершится с ошибкой. Убедитесь, что все необходимые файлы присутствуют в папке
schemas/
.
- Скачайте или клонируйте репозиторий.
- Убедитесь, что у вас установлен
bash
и доступ кshell
. - В корне проекта выполните команду:
bash run.sh
- После выполнения скрипта в директории появится файл
init.sql
, готовый к использованию для инициализации базы данных.
Файл init.sql
будет содержать:
Таблицы
— описание всех таблиц, включая их поля и ограничения.Индексы
— индексы, которые помогают ускорить выполнение запросов.Функции
— пользовательские функции, используемые для работы с данными.Триггеры
— триггеры для автоматического выполнения определенных действий при изменении данных.
schemas/
├── users/
│ ├── functions.sql
│ ├── indexes.sql
│ ├── table.sql
│ └── triggers.sql
run.sh
init.sql
CREATE TYPE user_role AS ENUM ('ADMIN', 'MODERATOR', 'HELPER', 'USER');
CREATE TABLE Users
(
id SERIAL PRIMARY KEY,
username VARCHAR(255) UNIQUE,
fullname VARCHAR(75) NOT NULL,
email VARCHAR(255) UNIQUE,
is_email_confirmed BOOLEAN DEFAULT FALSE,
phone_number VARCHAR(10),
is_phone_number_confirmed BOOLEAN DEFAULT FALSE,
password_hash VARCHAR(100),
avatar_url VARCHAR(255),
avatar_updated_at TIMESTAMP DEFAULT NULL,
role user_role NOT NULL DEFAULT 'USER',
is_active BOOLEAN DEFAULT TRUE,
is_verified BOOLEAN DEFAULT FALSE,
last_login_at TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
rating DECIMAL(3, 2) CHECK (rating >= 1.00 AND rating <= 5.00) DEFAULT NULL
);
После выполнения скрипта run.sh
файл init.sql
будет содержать все необходимые схемы для работы с пользователями,
которые могут быть использованы для инициализации вашей базы данных.
Дальнейшие инструкции находятся в USAGE.md