Skip to content

ITBirzha/ITB-DB

Repository files navigation

Database Initialization

Этот проект включает сценарии для автоматической генерации файла init.sql, который собирает все схемы и настройки базы данных из различных файлов SQL в папке schemas.

Структура проекта

  • schemas/ — папка, содержащая все схемы базы данных, разделенные на файлы:
    • schemas/users/ — схема для работы с пользователями.
      • functions.sql — пользовательские функции для работы с данными.
      • indexes.sql — индексы для таблицы пользователей.
      • table.sql — описание таблицы Users.
      • triggers.sql — триггеры для таблицы Users.

Как это работает

  1. Скрипт run.sh парсит все SQL-файлы в папке schemas/, включая вложенные папки (например, schemas/users/).
  2. Каждый файл добавляется в общий файл init.sql в порядке, определенном скриптом.
  3. Результирующий файл init.sql включает все таблицы, индексы, функции и триггеры, которые необходимы для инициализации базы данных.

Примечание: Если какой-либо из файлов отсутствует, скрипт завершится с ошибкой. Убедитесь, что все необходимые файлы присутствуют в папке schemas/.

Установка

  1. Скачайте или клонируйте репозиторий.
  2. Убедитесь, что у вас установлен bash и доступ к shell.
  3. В корне проекта выполните команду:
    bash run.sh
  4. После выполнения скрипта в директории появится файл init.sql, готовый к использованию для инициализации базы данных.

Структура init.sql

Файл init.sql будет содержать:

  1. Таблицы — описание всех таблиц, включая их поля и ограничения.
  2. Индексы — индексы, которые помогают ускорить выполнение запросов.
  3. Функции — пользовательские функции, используемые для работы с данными.
  4. Триггеры — триггеры для автоматического выполнения определенных действий при изменении данных.

Пример структуры каталогов:

schemas/
├── users/
│   ├── functions.sql
│   ├── indexes.sql
│   ├── table.sql
│   └── triggers.sql
run.sh
init.sql

Пример содержимого table.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

About

No description, website, or topics provided.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published