Skip to content

CloudManager

Файл: backend/src/clouds/manager.rs

Управление облачными подключениями (S3-совместимые хранилища). Простой CRUD-менеджер для конфигурации облачных провайдеров с зашифрованными credentials.

Структура

ПолеТипОписание
dbArc<Mutex<Connection>>SQLite соединение

Методы

МетодСигнатураОписание
newfn(db) -> Result<Self>Инициализация + создание таблицы
create_cloudfn(&self, identity_id, name, provider, endpoint, region, ...) -> Result<Cloud>Создать подключение
get_cloudfn(&self, cloud_id) -> Result<Option<Cloud>>Получить по ID
list_cloudsfn(&self, identity_id) -> Result<Vec<Cloud>>Список по identity
update_cloudfn(&self, cloud_id, ...) -> Result<()>Обновить поля
delete_cloudfn(&self, cloud_id) -> Result<()>Удалить
get_cloud_credentialsfn(&self, cloud_id) -> Result<(Option<Vec<u8>>, Option<Vec<u8>>)>Получить зашифрованные credentials

Зависимости

  • SQLite — таблица clouds

create_cloud

fn create_cloud(&self, identity_id: &str, name: &str, provider: &str, endpoint: &str, region: &str, bucket_name: Option<&str>, access_key_encrypted: Option<&[u8]>, secret_key_encrypted: Option<&[u8]>) -> Result<Cloud>

Создаёт новое облачное подключение.

Параметры

ИмяТипОписание
identity_id&strID владельца
name&strИмя подключения
provider&strПровайдер (minio, aws, r2, ...)
endpoint&strURL эндпоинта
region&strРегион
bucket_nameOption<&str>Имя бакета
access_key_encryptedOption<&[u8]>Зашифрованный access key
secret_key_encryptedOption<&[u8]>Зашифрованный secret key

Логика

  1. Генерирует UUID v4 для cloud_id
  2. INSERT INTO clouds со всеми полями
  3. Credentials хранятся как зашифрованные blob'ы (шифрование выполняется вызывающим кодом)
plantuml Diagram

Используется в: внутренне в SharingManager при state sync


list_clouds / get_cloud

  • list_clouds(identity_id) — SELECT WHERE identity_id = ? (фильтрация по identity предотвращает cross-identity утечку)
  • get_cloud(cloud_id) — SELECT WHERE id = ?

Используется в: внутренне в SharingManager при state sync


update_cloud

fn update_cloud(&self, cloud_id: &str, name: Option<&str>, endpoint: Option<&str>, region: Option<&str>, bucket_name: Option<&str>) -> Result<()>

Обновляет поля облачного подключения. Обновляются только переданные поля (partial update).

Используется в: внутренне в SharingManager при state sync


delete_cloud

fn delete_cloud(&self, cloud_id: &str) -> Result<()>

Удаляет облачное подключение из БД.

Используется в: внутренне в SharingManager при state sync


get_cloud_credentials

fn get_cloud_credentials(&self, cloud_id: &str) -> Result<(Option<Vec<u8>>, Option<Vec<u8>>)>

Возвращает зашифрованные credentials (access_key, secret_key) для расшифровки вызывающим кодом.

Используется в: внутренне в SharingManager при state sync