Skip to content

Sync Service

Файл: backend/src/services/sync_cmd.rs

Сервис S3-синхронизации. Анализирует различия между локальными файлами и объектами в S3-хранилище, формирует план синхронизации и выполняет его с прогресс-уведомлениями.

Эндпоинты

МетодПутьФункцияОписание
POST/api/sync/analyzeanalyze_sync_svcАнализ и построение плана синхронизации
POST/api/sync/executeexecute_sync_svcВыполнение плана синхронизации

Зависимости

  • SharedState — глобальное состояние (содержит S3Client)
  • S3Client — клиент для работы с S3-совместимым хранилищем
  • EventBus — прогресс-уведомления в UI

analyze_sync_svc

POST /api/sync/analyze

Анализирует локальную директорию и S3-бакет, строит план действий для синхронизации.

Параметры

ИмяТипОписание
local_dirStringПуть к локальной директории
bucketStringИмя S3-бакета
prefixOption<String>Префикс в бакете
optionsOption<SyncOptions>Опции (delete_missing и др.)

Возвращает

Result<SyncPlan, String> — план с действиями: Upload, Update, Delete

Логика

  1. Рекурсивно сканирует локальную директорию (scan_directory())
  2. Получает список объектов из S3 (list_objects())
  3. Для каждого локального файла:
    • Если есть в S3 и needs_update() — действие Update
    • Если нет в S3 — действие Upload
    • Если без изменений — пропуск
  4. Если delete_missing включён — файлы в S3 без локальных → действие Delete
  5. Возвращает SyncPlan со списком действий
plantuml Diagram

execute_sync_svc

POST /api/sync/execute

Выполняет план синхронизации, загружая/обновляя/удаляя файлы в S3.

Параметры

ИмяТипОписание
event_busEventBusШина событий для прогресса
local_dirStringПуть к локальной директории
bucketStringИмя S3-бакета
planSyncPlanПлан из analyze_sync_svc

Возвращает

Result<String, String> — сообщение о завершении

Логика

  1. Итерирует по действиям плана:
    • Upload/Update: читает файл → загружает в S3 → прогресс-событие
    • Delete: удаляет объект из S3
    • Download: логирует (не реализовано)
  2. Записывает метрики (количество байт)
  3. Отправляет SSE progress-события после каждого действия
plantuml Diagram