from typing import Type from selfprivacy_api.graphql.queries.providers import ( BackupProvider as BackupProviderEnum, ) from selfprivacy_api.backup.providers.provider import AbstractBackupProvider from selfprivacy_api.backup.providers.backblaze import Backblaze from selfprivacy_api.backup.providers.memory import InMemoryBackup from selfprivacy_api.backup.providers.local_file import LocalFileBackup from selfprivacy_api.backup.providers.none import NoBackups PROVIDER_MAPPING: dict[BackupProviderEnum, Type[AbstractBackupProvider]] = { BackupProviderEnum.BACKBLAZE: Backblaze, BackupProviderEnum.MEMORY: InMemoryBackup, BackupProviderEnum.FILE: LocalFileBackup, BackupProviderEnum.NONE: NoBackups, } def get_provider( provider_type: BackupProviderEnum, ) -> Type[AbstractBackupProvider]: if provider_type not in PROVIDER_MAPPING.keys(): raise LookupError("could not look up provider", provider_type) return PROVIDER_MAPPING[provider_type] def get_kind(provider: AbstractBackupProvider) -> str: """Get the kind of the provider in the form of a string""" return provider.name.value