main

Алгоритм обновления базы xa-tags

Тридцать лет и три года Илья Муромец лежал на печи.
Такого бодуна Русь ещё не знала...

Вобщем, по части обновления бд не придумал ничего лучше, чем последовательно выбирать записи из базы с путями ниже определённой директории и сверять наличие на фс.

Предварительный алгоритм такой:

2 прохода:

- проход по БД:
  - файл есть по указанному пути и имеет верный uuid - пропускаем
    - файл есть по указанному пути и имеет другой uuid - смотрим количество ссылок (должно быть не больше одной)
      - если такой в базе есть - обновляем путь
      - если его в базе нет - выдаём предупреждение
  - файла нет по указанному пути - добавляем с список пропавших
  - если указан "глубокий" режим сканирования - добавляем uuid в список найденных

- проход по ФС:
  - смотри наличие uuid'а
    - нет - пропускаем
    - есть - смотрим базу uuid'а
      - отличается - выдаём info
        - наша - смотрим список пропавших
          - есть - обновляем базу - удаляем из списка пропавших - продолжаем
          - нет  - если указан "глубокий" режим сканирования - смотрим список найденных
            - есть - удаляем его оттуда - продолжаем
            - нет  - выдаём предупреждение
- выдаём статистику

Как показывает опыт, на практике будет сделано по другому как минимум наполовину. Так что не принимайте сей пост за документацию.