CloudManager
Файл:
backend/src/clouds/manager.rs
Управление облачными подключениями (S3-совместимые хранилища). Простой CRUD-менеджер для конфигурации облачных провайдеров с зашифрованными credentials.
Структура
| Поле | Тип | Описание |
|---|---|---|
db | Arc<Mutex<Connection>> | SQLite соединение |
Методы
| Метод | Сигнатура | Описание |
|---|---|---|
new | fn(db) -> Result<Self> | Инициализация + создание таблицы |
create_cloud | fn(&self, identity_id, name, provider, endpoint, region, ...) -> Result<Cloud> | Создать подключение |
get_cloud | fn(&self, cloud_id) -> Result<Option<Cloud>> | Получить по ID |
list_clouds | fn(&self, identity_id) -> Result<Vec<Cloud>> | Список по identity |
update_cloud | fn(&self, cloud_id, ...) -> Result<()> | Обновить поля |
delete_cloud | fn(&self, cloud_id) -> Result<()> | Удалить |
get_cloud_credentials | fn(&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 | &str | ID владельца |
name | &str | Имя подключения |
provider | &str | Провайдер (minio, aws, r2, ...) |
endpoint | &str | URL эндпоинта |
region | &str | Регион |
bucket_name | Option<&str> | Имя бакета |
access_key_encrypted | Option<&[u8]> | Зашифрованный access key |
secret_key_encrypted | Option<&[u8]> | Зашифрованный secret key |
Логика
- Генерирует UUID v4 для cloud_id
- INSERT INTO clouds со всеми полями
- Credentials хранятся как зашифрованные blob'ы (шифрование выполняется вызывающим кодом)
Используется в: внутренне в
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