mirror of
https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api.git
synced 2024-11-18 00:19:15 +00:00
refactor(backup): add a backup function to Backups singleton class
This commit is contained in:
parent
ff72d4124e
commit
178c456593
|
@ -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"""
|
||||
|
||||
provider: AbstractBackupProvider
|
||||
|
||||
class AbstractBackuper(ABC):
|
||||
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
|
||||
|
||||
@abstractmethod
|
||||
def start_backup(self, folder: str):
|
||||
raise NotImplementedError
|
||||
@staticmethod
|
||||
def load_provider_json() -> AbstractBackupProvider:
|
||||
pass
|
||||
|
||||
def back_up(self, service: Service):
|
||||
folder = service.get_location()
|
||||
repo_name = service.get_id()
|
||||
self.provider.backuper.start_backup(folder, repo_name)
|
||||
|
|
10
selfprivacy_api/backup/backuper.py
Normal file
10
selfprivacy_api/backup/backuper.py
Normal 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
|
|
@ -4,7 +4,7 @@ It assumes that while some providers are supported via restic/rclone, others may
|
|||
require different backends
|
||||
"""
|
||||
from abc import ABC
|
||||
from selfprivacy_api.backup import AbstractBackuper
|
||||
from selfprivacy_api.backup.backuper import AbstractBackuper
|
||||
|
||||
|
||||
class AbstractBackupProvider(ABC):
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import subprocess
|
||||
|
||||
from selfprivacy_api.backup import AbstractBackuper
|
||||
from selfprivacy_api.backup.backuper import AbstractBackuper
|
||||
|
||||
|
||||
class ResticBackuper(AbstractBackuper):
|
||||
|
|
Loading…
Reference in a new issue