Spaces Service
Файл:
backend/src/services/spaces.rs
Сервис управления пространствами (spaces). Пространство — логическая единица для группировки файлов, предназначенных для синхронизации или расшаривания между устройствами/пользователями.
Эндпоинты
| Метод | Путь | Функция | Описание |
|---|---|---|---|
| POST | /api/spaces | create_space_svc | Создать пространство |
| GET | /api/spaces | list_user_spaces_svc | Список пространств пользователя |
| POST | /api/spaces/get | get_user_space_svc | Получить пространство по ID |
| POST | /api/spaces/update | update_space_svc | Обновить пространство |
| POST | /api/spaces/delete | delete_space_svc | Удалить пространство |
| POST | /api/spaces/files/add | add_files_to_space_svc | Добавить файлы в пространство |
| POST | /api/spaces/files/remove | remove_file_from_space_svc | Удалить файл из пространства |
| POST | /api/spaces/files | list_space_files_svc | Список файлов пространства |
| GET | /api/spaces/received | list_received_spaces_svc | Список полученных пространств |
| POST | /api/spaces/accept | accept_space_svc | Принять полученное пространство |
| POST | /api/spaces/reject | reject_space_svc | Отклонить полученное пространство |
Зависимости
SpaceManager— CRUD операции с пространствами в SQLiteIdentityManager— привязка пространства к текущей identity
create_space_svc
POST /api/spaces
Создаёт новое пространство с опциональными настройками.
Параметры
| Имя | Тип | Описание |
|---|---|---|
name | String | Имя пространства |
description | Option<String> | Описание |
icon | Option<String> | Иконка |
color | Option<String> | Цвет |
sync_mode | Option<String> | Режим синхронизации |
encryption | Option<bool> | Шифрование |
versioning | Option<bool> | Версионирование |
notifications | Option<bool> | Уведомления |
Логика
- Получает текущую identity (ошибка, если не создана)
- Создаёт пространство через
SpaceManager::create_space()с identity_id
list_user_spaces_svc
GET /api/spaces
Список всех пространств текущего пользователя.
Логика
- Получает текущую identity
- Вызывает
SpaceManager::list_spaces(&identity_id)
get_user_space_svc
POST /api/spaces/get
Получает пространство по ID.
update_space_svc
POST /api/spaces/update
Обновляет поля пространства (все опциональные — обновляются только переданные).
delete_space_svc
POST /api/spaces/delete
Удаляет пространство и все связанные файлы.
add_files_to_space_svc
POST /api/spaces/files/add
Добавляет файлы в пространство по путям. Для каждого файла вычисляется hash и метаданные.
Параметры
| Имя | Тип | Описание |
|---|---|---|
space_id | String | ID пространства |
file_paths | Vec<String> | Пути к файлам |
Возвращает
Result<Vec<SpaceFile>, String> — добавленные файлы с метаданными
remove_file_from_space_svc
POST /api/spaces/files/remove
Удаляет файл из пространства по ID файла.
list_space_files_svc
POST /api/spaces/files
Список всех файлов в пространстве.
list_received_spaces_svc
GET /api/spaces/received
Список пространств, полученных от других пользователей через P2P sharing.
accept_space_svc / reject_space_svc
POST /api/spaces/accept / POST /api/spaces/reject
Принятие или отклонение полученного пространства.