package io.fathom.cloud.dns.state;
import io.fathom.cloud.protobuf.DnsModel.BackendData;
import io.fathom.cloud.protobuf.DnsModel.DnsRecordsetData;
import io.fathom.cloud.protobuf.DnsModel.DnsSuffixData;
import io.fathom.cloud.protobuf.DnsModel.DnsZoneData;
import io.fathom.cloud.state.NamedItemCollection;
import io.fathom.cloud.state.NumberedItemCollection;
import io.fathom.cloud.state.RepositoryBase;
import io.fathom.cloud.state.StateStore.StateNode;
import javax.inject.Singleton;
@Singleton
public class DnsRepository extends RepositoryBase {
public NamedItemCollection<DnsSuffixData> getDnsSuffixes() {
StateNode node = stateStore.getRoot("dnssuffix");
return NamedItemCollection.builder(node, DnsSuffixData.class).idField(DnsSuffixData.KEY_FIELD_NUMBER).create();
}
public NamedItemCollection<DnsSuffixData> getSharedSubdomains(String key) {
StateNode subdomains = stateStore.getRoot("dnssubdomains");
StateNode node = subdomains.child(key);
return NamedItemCollection.builder(node, DnsSuffixData.class).idField(DnsSuffixData.KEY_FIELD_NUMBER).create();
}
public NumberedItemCollection<DnsZoneData> getDnsZones(long projectId) {
StateNode dnsNode = stateStore.getRoot("dnsdomain");
StateNode projectNode = dnsNode.child(Long.toHexString(projectId));
return NumberedItemCollection.builder(projectNode, DnsZoneData.class).idField(DnsZoneData.ID_FIELD_NUMBER)
.keyField(DnsZoneData.NAME_FIELD_NUMBER).create();
}
public NumberedItemCollection<DnsRecordsetData> getDnsRecordsets(long projectId, long zoneId) {
StateNode dnsNode = stateStore.getRoot("dnsrecord");
StateNode projectNode = dnsNode.child(Long.toHexString(projectId));
StateNode domainNode = projectNode.child(Long.toHexString(zoneId));
return NumberedItemCollection.builder(domainNode, DnsRecordsetData.class)
.idField(DnsRecordsetData.ID_FIELD_NUMBER).create();
}
public NamedItemCollection<BackendData> getBackends() {
StateNode node = stateStore.getRoot("dnsbackends");
return NamedItemCollection.builder(node, BackendData.class).idField(BackendData.KEY_FIELD_NUMBER).create();
}
}