2023-06-29 09:52:09 +00:00
|
|
|
import 'package:json_annotation/json_annotation.dart';
|
|
|
|
import 'package:selfprivacy/logic/api_maps/graphql_maps/schema/backups.graphql.dart';
|
2023-08-07 12:23:48 +00:00
|
|
|
import 'package:selfprivacy/logic/api_maps/graphql_maps/schema/schema.graphql.dart';
|
2023-06-29 09:52:09 +00:00
|
|
|
import 'package:selfprivacy/logic/models/hive/backups_credential.dart';
|
|
|
|
|
|
|
|
class Backup {
|
|
|
|
Backup.fromGraphQL(
|
|
|
|
final Query$AllBackupSnapshots$backup$allSnapshots snapshot,
|
|
|
|
) : this(
|
|
|
|
id: snapshot.id,
|
|
|
|
time: snapshot.createdAt,
|
|
|
|
serviceId: snapshot.service.id,
|
|
|
|
fallbackServiceName: snapshot.service.displayName,
|
2023-09-09 07:22:43 +00:00
|
|
|
reason: snapshot.reason,
|
2023-06-29 09:52:09 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
Backup({
|
|
|
|
required this.time,
|
|
|
|
required this.id,
|
|
|
|
required this.serviceId,
|
|
|
|
required this.fallbackServiceName,
|
2023-09-09 07:22:43 +00:00
|
|
|
required this.reason,
|
2023-06-29 09:52:09 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
// Time of the backup
|
|
|
|
final DateTime time;
|
|
|
|
@JsonKey(name: 'short_id')
|
|
|
|
final String id;
|
|
|
|
final String serviceId;
|
|
|
|
final String fallbackServiceName;
|
2023-09-09 07:22:43 +00:00
|
|
|
final Enum$BackupReason reason;
|
|
|
|
}
|
|
|
|
|
|
|
|
extension BackupReasonExtension on Enum$BackupReason {
|
|
|
|
String get displayName => switch (this) {
|
|
|
|
Enum$BackupReason.AUTO => 'backup.snapshot_reasons.auto',
|
|
|
|
Enum$BackupReason.EXPLICIT => 'backup.snapshot_reasons.explicit',
|
|
|
|
Enum$BackupReason.PRE_RESTORE => 'backup.snapshot_reasons.pre_restore',
|
|
|
|
Enum$BackupReason.$unknown => 'backup.snapshot_reasons.unknown',
|
|
|
|
};
|
2023-06-29 09:52:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
class BackupConfiguration {
|
|
|
|
BackupConfiguration.fromGraphQL(
|
|
|
|
final Query$BackupConfiguration$backup$configuration configuration,
|
|
|
|
) : this(
|
|
|
|
// Provided by API as int of minutes
|
|
|
|
autobackupPeriod: configuration.autobackupPeriod != null
|
|
|
|
? Duration(minutes: configuration.autobackupPeriod!)
|
|
|
|
: null,
|
|
|
|
encryptionKey: configuration.encryptionKey,
|
|
|
|
isInitialized: configuration.isInitialized,
|
|
|
|
locationId: configuration.locationId,
|
|
|
|
locationName: configuration.locationName,
|
|
|
|
provider: BackupsProviderType.fromGraphQL(configuration.provider),
|
2023-09-09 18:13:27 +00:00
|
|
|
autobackupQuotas: AutobackupQuotas.fromGraphQL(
|
|
|
|
configuration.autobackupQuotas,
|
|
|
|
),
|
2023-06-29 09:52:09 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
BackupConfiguration({
|
|
|
|
required this.autobackupPeriod,
|
|
|
|
required this.encryptionKey,
|
|
|
|
required this.isInitialized,
|
|
|
|
required this.locationId,
|
|
|
|
required this.locationName,
|
|
|
|
required this.provider,
|
2023-09-09 18:13:27 +00:00
|
|
|
required this.autobackupQuotas,
|
2023-06-29 09:52:09 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
final Duration? autobackupPeriod;
|
|
|
|
final String encryptionKey;
|
|
|
|
final bool isInitialized;
|
|
|
|
final String? locationId;
|
|
|
|
final String? locationName;
|
|
|
|
final BackupsProviderType provider;
|
2023-09-09 18:13:27 +00:00
|
|
|
final AutobackupQuotas autobackupQuotas;
|
|
|
|
}
|
|
|
|
|
|
|
|
class AutobackupQuotas {
|
|
|
|
AutobackupQuotas.fromGraphQL(
|
|
|
|
final Query$BackupConfiguration$backup$configuration$autobackupQuotas
|
|
|
|
autobackupQuotas,
|
|
|
|
) : this(
|
|
|
|
last: autobackupQuotas.last,
|
|
|
|
daily: autobackupQuotas.daily,
|
|
|
|
weekly: autobackupQuotas.weekly,
|
|
|
|
monthly: autobackupQuotas.monthly,
|
|
|
|
yearly: autobackupQuotas.yearly,
|
|
|
|
);
|
|
|
|
|
|
|
|
AutobackupQuotas({
|
|
|
|
required this.last,
|
|
|
|
required this.daily,
|
|
|
|
required this.weekly,
|
|
|
|
required this.monthly,
|
|
|
|
required this.yearly,
|
|
|
|
});
|
|
|
|
|
|
|
|
final int last;
|
|
|
|
final int daily;
|
|
|
|
final int weekly;
|
|
|
|
final int monthly;
|
|
|
|
final int yearly;
|
|
|
|
|
|
|
|
AutobackupQuotas copyWith({
|
|
|
|
final int? last,
|
|
|
|
final int? daily,
|
|
|
|
final int? weekly,
|
|
|
|
final int? monthly,
|
|
|
|
final int? yearly,
|
|
|
|
}) =>
|
|
|
|
AutobackupQuotas(
|
|
|
|
last: last ?? this.last,
|
|
|
|
daily: daily ?? this.daily,
|
|
|
|
weekly: weekly ?? this.weekly,
|
|
|
|
monthly: monthly ?? this.monthly,
|
|
|
|
yearly: yearly ?? this.yearly,
|
|
|
|
);
|
2023-06-29 09:52:09 +00:00
|
|
|
}
|
2023-08-07 12:23:48 +00:00
|
|
|
|
|
|
|
enum BackupRestoreStrategy {
|
|
|
|
inplace,
|
|
|
|
downloadVerifyOverwrite,
|
|
|
|
unknown;
|
|
|
|
|
|
|
|
factory BackupRestoreStrategy.fromGraphQL(
|
|
|
|
final Enum$RestoreStrategy strategy,
|
|
|
|
) =>
|
|
|
|
switch (strategy) {
|
|
|
|
Enum$RestoreStrategy.INPLACE => inplace,
|
|
|
|
Enum$RestoreStrategy.DOWNLOAD_VERIFY_OVERWRITE =>
|
|
|
|
downloadVerifyOverwrite,
|
|
|
|
Enum$RestoreStrategy.$unknown => unknown,
|
|
|
|
};
|
|
|
|
|
|
|
|
Enum$RestoreStrategy get toGraphQL => switch (this) {
|
|
|
|
inplace => Enum$RestoreStrategy.INPLACE,
|
|
|
|
downloadVerifyOverwrite =>
|
|
|
|
Enum$RestoreStrategy.DOWNLOAD_VERIFY_OVERWRITE,
|
|
|
|
unknown => Enum$RestoreStrategy.$unknown,
|
|
|
|
};
|
|
|
|
}
|