Исходный код application.use_cases.devices_management.get_devices_list

from typing import Any, Optional
from datetime import datetime

from domain.value_objects.ip_address import IpAddress
from domain.value_objects.sort_order import SortOrder
from domain.repositories.device_repository import DeviceRepository


[документация] class GetDevicesListUseCase:
[документация] def __init__(self, device_repo: DeviceRepository): self.device_repo = device_repo
[документация] async def execute( self, ip: Optional[str] = None, model: Optional[str] = None, last_activity_after: Optional[str] = None, last_activity_before: Optional[str] = None, sort_by_last_activity: Optional[SortOrder] = None, limit: Optional[int] = None, offset: Optional[int] = None ) -> list[dict[str, Any]]: ip_value_object = IpAddress(ip) if ip else None datetime_after = datetime.fromisoformat(last_activity_after) if last_activity_after else None datetime_before = datetime.fromisoformat(last_activity_before) if last_activity_before else None devices = await self.device_repo.get_by_filters( ip_address=ip_value_object, model=model, last_activity_from=datetime_after, last_activity_to=datetime_before, sort_by_last_activity=sort_by_last_activity, limit=limit, offset=offset ) return [ { 'id': str(d.id), 'mac_address': d.mac_address.value, 'model': d.model, 'ip_address': d.ip_address.value if d.ip_address else None, 'last_activity': d.last_activity } for d in devices ]