refactor(backup): add a backup function to Backups singleton class

This commit is contained in:
Houkime 2023-02-08 14:57:34 +00:00 committed by Inex Code
parent ff72d4124e
commit 178c456593
4 changed files with 44 additions and 8 deletions

View file

@ -1,14 +1,40 @@
from abc import ABC, abstractmethod from selfprivacy_api.utils.singleton_metaclass import SingletonMetaclass
from selfprivacy_api.services.service import Service
from selfprivacy_api.backup.providers.provider import AbstractBackupProvider
from selfprivacy_api.backup.providers import get_provider
from selfprivacy_api.graphql.queries.providers import BackupProvider
class Backups: class Backups(metaclass=SingletonMetaclass):
"""A singleton controller for backups""" """A singleton controller for backups"""
provider: AbstractBackupProvider
class AbstractBackuper(ABC):
def __init__(self): def __init__(self):
self.lookup_provider()
def lookup_provider(self):
redis_provider = Backups.load_provider_redis()
if redis_provider is not None:
self.provider = redis_provider
json_provider = Backups.load_provider_json()
if json_provider is not None:
self.provider = json_provider
provider_class = get_provider(BackupProvider.MEMORY)
self.provider = provider_class(login="", key="")
@staticmethod
def load_provider_redis() -> AbstractBackupProvider:
pass pass
@abstractmethod @staticmethod
def start_backup(self, folder: str): def load_provider_json() -> AbstractBackupProvider:
raise NotImplementedError pass
def back_up(self, service: Service):
folder = service.get_location()
repo_name = service.get_id()
self.provider.backuper.start_backup(folder, repo_name)

View file

@ -0,0 +1,10 @@
from abc import ABC, abstractmethod
class AbstractBackuper(ABC):
def __init__(self):
pass
@abstractmethod
def start_backup(self, folder: str, repo_name: str):
raise NotImplementedError

View file

@ -4,7 +4,7 @@ It assumes that while some providers are supported via restic/rclone, others may
require different backends require different backends
""" """
from abc import ABC from abc import ABC
from selfprivacy_api.backup import AbstractBackuper from selfprivacy_api.backup.backuper import AbstractBackuper
class AbstractBackupProvider(ABC): class AbstractBackupProvider(ABC):

View file

@ -1,6 +1,6 @@
import subprocess import subprocess
from selfprivacy_api.backup import AbstractBackuper from selfprivacy_api.backup.backuper import AbstractBackuper
class ResticBackuper(AbstractBackuper): class ResticBackuper(AbstractBackuper):