Skip to content

Devices Service

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

Сервис управления устройствами. Отвечает за получение списка устройств, текущего устройства и обновление их параметров.

Эндпоинты

МетодПутьФункцияОписание
GET/api/deviceslist_devices_svcСписок всех устройств
GET/api/devices/currentget_current_device_svcТекущее устройство
POST/api/devices/current/loadload_current_device_svcЗагрузить текущее устройство из БД
GET/api/devices/current/existshas_current_device_svcПроверка наличия текущего устройства
POST/api/devices/nameupdate_device_name_svcОбновить имя устройства

Зависимости

  • DeviceManager — CRUD операции с устройствами в SQLite
  • IdentityManager — получение текущей identity для фильтрации устройств

list_devices_svc

GET /api/devices

Возвращает список всех устройств, привязанных к текущей identity.

Параметры

ИмяТипОписание
device_managerArc<Mutex<DeviceManager>>Менеджер устройств

Возвращает

Result<Vec<Device>, String>

Логика

  1. Захватывает lock на DeviceManager
  2. Вызывает list_devices()
  3. Записывает общее количество устройств в метрики
plantuml Diagram

get_current_device_svc

GET /api/devices/current

Возвращает текущее устройство (на котором запущен backend).

Параметры

ИмяТипОписание
device_managerArc<Mutex<DeviceManager>>Менеджер устройств

Возвращает

Result<Option<Device>, String>

Логика

  1. Захватывает lock на DeviceManager
  2. Возвращает клон текущего устройства
plantuml Diagram

load_current_device_svc

POST /api/devices/current/load

Загружает данные текущего устройства из базы данных в память.

Параметры

ИмяТипОписание
device_managerArc<Mutex<DeviceManager>>Менеджер устройств

Возвращает

Result<(), String>

Логика

  1. Захватывает lock на DeviceManager
  2. Вызывает load_current_device() — читает из SQLite и кеширует в памяти
plantuml Diagram

has_current_device_svc

GET /api/devices/current/exists

Проверяет, существует ли текущее устройство (было ли оно создано при первом запуске).

Параметры

ИмяТипОписание
device_managerArc<Mutex<DeviceManager>>Менеджер устройств

Возвращает

Result<bool, String>

Логика

  1. Захватывает lock на DeviceManager
  2. Возвращает current_device.is_some()
plantuml Diagram

update_device_name_svc

POST /api/devices/name

Обновляет отображаемое имя устройства.

Параметры

ИмяТипОписание
device_idStringID устройства
nameStringНовое имя
device_managerArc<Mutex<DeviceManager>>Менеджер устройств

Возвращает

Result<(), String>

Логика

  1. Захватывает lock на DeviceManager
  2. Вызывает update_device_name(device_id, name)
  3. Записывает метрики
plantuml Diagram