selfprivacy.org.app/lib/logic/models/hive/server_domain.dart
2024-06-30 18:50:21 +04:00

64 lines
1.4 KiB
Dart

import 'package:hive/hive.dart';
import 'package:selfprivacy/logic/api_maps/graphql_maps/schema/schema.graphql.dart';
part 'server_domain.g.dart';
@HiveType(typeId: 3)
class ServerDomain {
ServerDomain({
required this.domainName,
required this.provider,
});
@HiveField(0)
final String domainName;
// @HiveField(1)
@HiveField(2, defaultValue: DnsProviderType.cloudflare)
final DnsProviderType provider;
}
@HiveType(typeId: 100)
enum DnsProviderType {
@HiveField(0)
unknown,
@HiveField(1)
cloudflare,
@HiveField(2)
desec,
@HiveField(3)
digitalOcean;
factory DnsProviderType.fromGraphQL(final Enum$DnsProvider provider) {
switch (provider) {
case Enum$DnsProvider.CLOUDFLARE:
return cloudflare;
case Enum$DnsProvider.DESEC:
return desec;
case Enum$DnsProvider.DIGITALOCEAN:
return digitalOcean;
default:
return unknown;
}
}
String toInfectName() => switch (this) {
digitalOcean => 'DIGITALOCEAN',
cloudflare => 'CLOUDFLARE',
desec => 'DESEC',
unknown => 'UNKNOWN',
};
String get displayName => switch (this) {
digitalOcean => 'Digital Ocean DNS',
cloudflare => 'Cloudflare',
desec => 'deSEC',
unknown => 'Unknown',
};
}
extension DnsProviderTypeIsSpecified on DnsProviderType? {
bool get isSpecified => this != null && this != DnsProviderType.unknown;
}