Skip to content

Filesystem Service

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

Сервис работы с локальной файловой системой. Предоставляет API для чтения директорий, получения метаданных файлов, проверки прав доступа и определения платформо-зависимых путей по умолчанию.

Эндпоинты

МетодПутьФункцияОписание
POST/api/filesystem/read-directoryread_directory_svcЧтение директории
POST/api/filesystem/file-infoget_file_info_svcМетаданные файла
POST/api/filesystem/read-directory-stateread_directory_with_state_svcЧтение с состоянием синхронизации
POST/api/filesystem/file-info-stateget_file_info_with_state_svcМетаданные с состоянием синхронизации
GET/api/filesystem/default-directoryget_default_directory_svcДиректория по умолчанию
POST/api/filesystem/check-accesscheck_storage_access_svcПроверка доступа к пути
GET/api/filesystem/check-permissionscheck_storage_permissions_svcПроверка прав storage

Зависимости

Нет внешних зависимостей — работает напрямую с std::fs.


read_directory_svc

POST /api/filesystem/read-directory

Читает содержимое директории с метаданными каждого элемента.

Параметры

ИмяТипОписание
pathStringПуть к директории

Возвращает

Result<Vec<FileEntry>, String> — отсортированный список (директории первыми, затем алфавитно)

Логика

  1. Валидирует и канонизирует путь
  2. Читает все записи директории
  3. Для каждой записи вызывает get_entry_info() — size, modified, created, is_dir, hidden
  4. Сортирует: директории первыми, затем алфавитно
plantuml Diagram

get_file_info_svc

POST /api/filesystem/file-info

Возвращает метаданные одного файла/директории.

plantuml Diagram

read_directory_with_state_svc

POST /api/filesystem/read-directory-state

Чтение директории с определением статуса синхронизации каждого файла по паттернам имени.

Паттерны статусов

Паттерн в имениСтатус
.syncing.syncing
.pending.pending
.conflict.conflict
.remote.remote
.error.error
(без паттерна)synced
plantuml Diagram

get_file_info_with_state_svc

POST /api/filesystem/file-info-state

Метаданные одного файла с определением статуса синхронизации.


get_default_directory_svc

GET /api/filesystem/default-directory

Возвращает платформо-зависимую директорию по умолчанию.

Платформы

ПлатформаЛогика
Android$EXTERNAL_STORAGE/storage/emulated/0/Documents/sdcard/Documents
Windows$USERPROFILEC:\
Unix/macOS$HOME/
plantuml Diagram

check_storage_access_svc

POST /api/filesystem/check-access

Проверяет, доступна ли директория для чтения.

Логика

  1. Проверяет существование пути
  2. Пытается прочитать содержимое
  3. Возвращает true при успехе
plantuml Diagram

check_storage_permissions_svc

GET /api/filesystem/check-permissions

Проверяет разрешения на доступ к storage.

  • Android: тестирует доступ к $EXTERNAL_STORAGE
  • Другие платформы: всегда true
plantuml Diagram