You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.7 KiB

Progress — миграция 001_initial (историческая заметка)

Актуальное описание продукта и сценариев: ../docs/PROJECT_STATUS.md.

Progress - Шаг 2: Проектирование базы данных

Статус: ЗАВЕРШЕНО

Выполненные задачи:

  1. Создание SQL-миграции (backend/src/db/migrations/001_initial.sql)

    • Созданы все таблицы:
      • departments (Подразделения)
      • users (Пользователи)
      • tests (Тесты)
      • test_versions (Версии тестов)
      • questions (Вопросы)
      • answer_options (Варианты ответов)
      • test_assignments (Назначения тестов)
      • test_assignment_targets (Получатели назначений)
      • test_attempts (Попытки прохождения)
      • user_answers (Ответы пользователя)
      • settings (Настройки)
    • Созданы ENUM типы: user_role, target_type, attempt_status
    • Созданы индексы для оптимизации запросов
    • Добавлены начальные данные в таблицу settings
  2. Создание скрипта миграции (backend/src/db/migrate.js)

    • Поддержка выполнения SQL-миграций
    • Отслеживание выполненных миграций в таблице migrations
    • Транзакционное выполнение миграций
    • Логирование процесса выполнения
  3. Создание db.js (backend/src/db/db.js)

    • Подключение к PostgreSQL с использованием пула соединений
    • Функции: query(), transaction(), getClient()
    • Обработка ошибок пула
    • Логирование запросов в режиме разработки
  4. Применение миграций к БД

    • Миграция 001_initial.sql успешно выполнена
    • Все таблицы созданы в базе данных clinic_tests

Созданные файлы:

backend/src/db/
├── migrations/
│   └── 001_initial.sql    # SQL-миграция с созданием всех таблиц
├── migrate.js              # Скрипт для выполнения миграций
└── db.js                   # Модуль подключения к PostgreSQL

Дата выполнения: 2026-03-21