"""Storage queries."""

# pylint: disable=too-few-public-methods
import typing
import strawberry

from selfprivacy_api.graphql.common_types.service import (
    StorageVolume,
)
from selfprivacy_api.utils.block_devices import BlockDevices


@strawberry.type
class Storage:
    """GraphQL queries to get storage information."""

    @strawberry.field
    def volumes(self) -> typing.List[StorageVolume]:
        """Get list of volumes"""
        return [
            StorageVolume(
                total_space=(
                    str(volume.fssize)
                    if volume.fssize is not None
                    else str(volume.size)
                ),
                free_space=str(volume.fsavail),
                used_space=str(volume.fsused),
                root=volume.is_root(),
                name=volume.name,
                model=volume.model,
                serial=volume.serial,
                type=volume.type,
            )
            for volume in BlockDevices().get_block_devices()
        ]