Files
mono/components/migrator
coopops 07ec6d9a5b
Build bootstrap container / build (push) Failing after 1m27s
Release / release (push) Failing after 16m43s
Release / trigger-mono-docs (push) Has been skipped
Release / publish-packages (push) Has been skipped
Release / trigger-coopenomics-docs (push) Has been skipped
chore(release): publish
2026-06-16 06:02:31 +00:00
..
2026-06-09 14:10:09 +05:00
2024-10-10 20:54:27 +05:00
2025-03-27 18:13:33 +05:00
2026-06-09 14:10:09 +05:00
2026-06-16 06:02:31 +00:00
2024-10-10 20:54:27 +05:00
2024-10-10 20:54:27 +05:00

🔄 migrator

Утилита миграции данных между версиями платформы «Цифровой Кооператив»

Описание

migrator — система автоматических миграций для данных и смарт-контрактов платформы. Использует паттерн фабрики для динамической загрузки и последовательного выполнения миграционных скриптов. Отслеживает состояние миграций через JSON-файл и гарантирует применение только новых, ещё не выполненных миграций.

Поддерживает несколько окружений (local, test, prod) с раздельной конфигурацией через .env файлы.

Возможности

  • Автоматическое отслеживание — JSON-файл состояния хранит последнюю выполненную миграцию для каждого окружения
  • Инкрементальное применение — выполняются только новые миграции, пропуская уже применённые
  • Паттерн Factory — динамическая загрузка миграционных скриптов через MigrationFactory
  • Множество окружений — раздельные .env файлы для local, test и prod
  • Утилиты — вспомогательные функции для работы с черновиками документов, переводами и блокчейн-операциями

Установка

pnpm install --filter migrator

Скрипты

Скрипт Описание
pnpm run local Запуск миграций для локального окружения
pnpm run test Запуск миграций для тестового окружения
pnpm run prod Запуск миграций для production-окружения

Все скрипты запускаются из корня монорепозитория через фильтр: pnpm --filter migrator run <скрипт>

Конфигурация

Создайте .env файлы для каждого окружения в корне компонента:

  • local.env — локальная разработка
  • test.env — тестовое окружение
  • prod.env — production

Основные переменные: endpoint блокчейна, приватные ключи для подписи транзакций. Подробности — в примерах .env файлов.

Архитектура

├── migrations/                # Миграционные скрипты
│   ├── 043_edit_selected_draft.ts
│   ├── 044_create_drafts.ts
│   └── ...                    # Нумерованные по порядку
├── src/
│   ├── index.ts               # Точка входа — загрузка .env и запуск
│   ├── migrator.ts            # Основная логика: загрузка состояния, выполнение миграций
│   ├── factory.ts             # Фабрика загрузки миграционных скриптов
│   ├── migration_interface.ts # Интерфейс миграции
│   ├── eos.ts                 # Утилиты для работы с блокчейном EOSIO
│   └── utils/                 # Вспомогательные утилиты
│       ├── createDraft.ts     # Создание черновиков документов
│       ├── editDraft.ts       # Редактирование черновиков
│       ├── editTranslation.ts # Работа с переводами
│       └── dirname.ts         # ESM-совместимый __dirname
└── migration_state.json       # Состояние выполненных миграций (per-env)

Жизненный цикл миграции

  1. Загружается файл состояния migration_state.json
  2. Определяется последняя выполненная миграция для текущего окружения
  3. Из директории migrations/ выбираются все скрипты после последней выполненной
  4. Каждая миграция загружается через MigrationFactory и выполняется последовательно
  5. После успешного выполнения состояние обновляется

Тестирование

pnpm --filter migrator run test

Лицензия

BY-NC-SA 4.0