Package io.fathom.cloud.dns.state

Source Code of io.fathom.cloud.dns.state.DnsRepository

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();
    }

}
TOP

Related Classes of io.fathom.cloud.dns.state.DnsRepository

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.