Skip to content

Spaces Service

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

Сервис управления пространствами (spaces). Пространство — логическая единица для группировки файлов, предназначенных для синхронизации или расшаривания между устройствами/пользователями.

Эндпоинты

МетодПутьФункцияОписание
POST/api/spacescreate_space_svcСоздать пространство
GET/api/spaceslist_user_spaces_svcСписок пространств пользователя
POST/api/spaces/getget_user_space_svcПолучить пространство по ID
POST/api/spaces/updateupdate_space_svcОбновить пространство
POST/api/spaces/deletedelete_space_svcУдалить пространство
POST/api/spaces/files/addadd_files_to_space_svcДобавить файлы в пространство
POST/api/spaces/files/removeremove_file_from_space_svcУдалить файл из пространства
POST/api/spaces/fileslist_space_files_svcСписок файлов пространства
GET/api/spaces/receivedlist_received_spaces_svcСписок полученных пространств
POST/api/spaces/acceptaccept_space_svcПринять полученное пространство
POST/api/spaces/rejectreject_space_svcОтклонить полученное пространство

Зависимости

  • SpaceManager — CRUD операции с пространствами в SQLite
  • IdentityManager — привязка пространства к текущей identity

create_space_svc

POST /api/spaces

Создаёт новое пространство с опциональными настройками.

Параметры

ИмяТипОписание
nameStringИмя пространства
descriptionOption<String>Описание
iconOption<String>Иконка
colorOption<String>Цвет
sync_modeOption<String>Режим синхронизации
encryptionOption<bool>Шифрование
versioningOption<bool>Версионирование
notificationsOption<bool>Уведомления

Логика

  1. Получает текущую identity (ошибка, если не создана)
  2. Создаёт пространство через SpaceManager::create_space() с identity_id
plantuml Diagram

list_user_spaces_svc

GET /api/spaces

Список всех пространств текущего пользователя.

Логика

  1. Получает текущую identity
  2. Вызывает SpaceManager::list_spaces(&identity_id)
plantuml Diagram

get_user_space_svc

POST /api/spaces/get

Получает пространство по ID.

plantuml Diagram

update_space_svc

POST /api/spaces/update

Обновляет поля пространства (все опциональные — обновляются только переданные).

plantuml Diagram

delete_space_svc

POST /api/spaces/delete

Удаляет пространство и все связанные файлы.

plantuml Diagram

add_files_to_space_svc

POST /api/spaces/files/add

Добавляет файлы в пространство по путям. Для каждого файла вычисляется hash и метаданные.

Параметры

ИмяТипОписание
space_idStringID пространства
file_pathsVec<String>Пути к файлам

Возвращает

Result<Vec<SpaceFile>, String> — добавленные файлы с метаданными

plantuml Diagram

remove_file_from_space_svc

POST /api/spaces/files/remove

Удаляет файл из пространства по ID файла.

plantuml Diagram

list_space_files_svc

POST /api/spaces/files

Список всех файлов в пространстве.

plantuml Diagram

list_received_spaces_svc

GET /api/spaces/received

Список пространств, полученных от других пользователей через P2P sharing.

plantuml Diagram

accept_space_svc / reject_space_svc

POST /api/spaces/accept / POST /api/spaces/reject

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

plantuml Diagram