mirror of
https://git.selfprivacy.org/SelfPrivacy/selfprivacy-rest-api.git
synced 2024-11-28 06:51:28 +00:00
refactor(backup): add a backup function to Backups singleton class
This commit is contained in:
parent
33df16f743
commit
bf3b698b34
|
@ -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)
|
||||||
|
|
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
|
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):
|
||||||
|
|
|
@ -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):
|
||||||
|
|
Loading…
Reference in a new issue