diff --git a/selfprivacy_api/backup/__init__.py b/selfprivacy_api/backup/__init__.py index e69de29..ff9bb2d 100644 --- a/selfprivacy_api/backup/__init__.py +++ b/selfprivacy_api/backup/__init__.py @@ -0,0 +1,5 @@ +from abc import ABC + +class AbstractBackuper(ABC): + def __init__(self): + pass \ No newline at end of file diff --git a/selfprivacy_api/backup/providers/backblaze.py b/selfprivacy_api/backup/providers/backblaze.py index e69de29..6dfa1a7 100644 --- a/selfprivacy_api/backup/providers/backblaze.py +++ b/selfprivacy_api/backup/providers/backblaze.py @@ -0,0 +1,6 @@ +from .provider import AbstractBackupProvider +from selfprivacy_api.backup.restic_backuper import ResticBackuper + + +class Backblaze(AbstractBackupProvider): + backuper = ResticBackuper() diff --git a/selfprivacy_api/backup/providers/provider.py b/selfprivacy_api/backup/providers/provider.py index e69de29..9bd8a60 100644 --- a/selfprivacy_api/backup/providers/provider.py +++ b/selfprivacy_api/backup/providers/provider.py @@ -0,0 +1,13 @@ +""" +An abstract class for BackBlaze, S3 etc. +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 + + +class AbstractBackupProvider(ABC): + @property + def backuper(self) -> AbstractBackuper: + raise NotImplementedError diff --git a/selfprivacy_api/backup/restic_backuper.py b/selfprivacy_api/backup/restic_backuper.py new file mode 100644 index 0000000..f1775ff --- /dev/null +++ b/selfprivacy_api/backup/restic_backuper.py @@ -0,0 +1,6 @@ +from selfprivacy_api.backup import AbstractBackuper + + +class ResticBackuper(AbstractBackuper): + def __init__(self): + pass