feature(backups): a graphql query to get provider info

restic-rewrite-api
Houkime 2023-05-29 16:12:22 +00:00
parent 97e4c529f6
commit 345e2c10c4
2 changed files with 36 additions and 3 deletions

View File

@ -108,6 +108,13 @@ class Service:
return None
@strawberry.type
class SnapshotInfo:
id: str
service: "Service"
created_at: datetime.datetime
def service_to_graphql_service(service: ServiceInterface) -> Service:
"""Convert service to graphql service"""
return Service(

View File

@ -2,13 +2,39 @@
# pylint: disable=too-few-public-methods
import typing
import strawberry
from selfprivacy_api.graphql.common_types.backup_snapshot import SnapshotInfo
from selfprivacy_api.backup import Backups
from selfprivacy_api.backup.local_secret import LocalBackupSecret
from selfprivacy_api.graphql.queries.providers import BackupProvider
from selfprivacy_api.graphql.common_types.service import SnapshotInfo
@strawberry.type
class BackupConfiguration:
provider: BackupProvider
# When server is lost, the app should have the key to decrypt backups on a new server
encryption_key: str
# If none, autobackups are disabled
autobackup_period: typing.Optional[int] = None
# Bucket name for Backblaze, path for some other providers
location_name: typing.Optional[str] = None
location_id: typing.Optional[str] = None
# False when repo is not initialized and not ready to be used
is_initialized: bool
@strawberry.type
class Backup:
backend: str
@strawberry.field
def configuration() -> BackupConfiguration:
config = BackupConfiguration()
config.encryption_key = LocalBackupSecret.get()
config.is_initialized = Backups.is_initted()
config.autobackup_period = Backups.autobackup_period_minutes()
config.location_name = Backups.provider().location
config.location_id = Backups.provider().repo_id
@strawberry.field
def get_backups(self) -> typing.List[SnapshotInfo]:
def all_snapshots(self) -> typing.List[SnapshotInfo]:
return []