diff --git a/management/internals/network_map_db/db_store.go b/management/internals/network_map_db/db_store.go index 9fbdaf35f..3b2073945 100644 --- a/management/internals/network_map_db/db_store.go +++ b/management/internals/network_map_db/db_store.go @@ -2,7 +2,6 @@ package networkmapdb import ( "context" - "database/sql" "golang.org/x/exp/maps" @@ -12,13 +11,6 @@ import ( "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" ) -const ( - NMAP_STRUCT_TAG = "nmap" - NMAP_SKIP = "skip" - NMAP_MAP_TO = "map_to" - NMAP_JSON = "json" -) - type NetworkMapDBStore interface { //nolint:revive // established name across the codebase GetNetworkMapData(ctx context.Context, accountId string) (*networkmap.NetworkMapData, error) } @@ -43,19 +35,6 @@ type NetworkMapDBStoreConn interface { //nolint:revive // established name acros GetProxyTargetedDomainResourceIDs(ctx context.Context, accountId string) (map[string]struct{}, error) } -type Domain struct { - Domain sql.NullString - TargetCluster sql.NullString -} - -type Service struct { - Enabled sql.NullBool - Private sql.NullBool - AccessGroups []string - ProxyCluster sql.NullString - Domain sql.NullString -} - type NetworkMapDBStoreImpl struct { //nolint:revive // established name across the codebase store NetworkMapDBStore integratedPeerValidator integrated_validator.IntegratedValidator diff --git a/management/internals/network_map_db/pgsql/dns.go b/management/internals/network_map_db/pgsql/dns.go index b45a2acd9..dcae28556 100644 --- a/management/internals/network_map_db/pgsql/dns.go +++ b/management/internals/network_map_db/pgsql/dns.go @@ -5,18 +5,14 @@ import ( "database/sql" "encoding/json" "errors" - "fmt" "reflect" "github.com/jackc/pgx/v5" - "github.com/miekg/dns" networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db" "github.com/netbirdio/netbird/shared/management/networkmap" "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" ) -var ErrDnsUnsupportedRecordType = errors.New("unsupported record type") - const ( GetAccountZonesQuery = ` select zones.id as id, domain, not enable_search_domain as search_domain_disabled, distribution_groups, @@ -63,9 +59,9 @@ func (pgc *PgStoreConn) GetAppliedZoneCandidates(ctx context.Context, accountId currentZoneId = z.Id } - rtype, rdata, err := recordTypeAndRdata(z.RecordType.String, z.RecordRData.String) + rtype, rdata, err := networkmapdb.RecordTypeAndRdata(z.RecordType.String, z.RecordRData.String) if err != nil { - if errors.Is(err, ErrDnsUnsupportedRecordType) { + if errors.Is(err, networkmapdb.ErrDnsUnsupportedRecordType) { continue } return nil, err @@ -95,19 +91,6 @@ type zone struct { RecordRData sql.NullString `nmap:"skip"` } -func recordTypeAndRdata(t, rdata string) (int, string, error) { - switch t { - case "A": - return int(dns.TypeA), rdata, nil - case "AAAA": - return int(dns.TypeAAAA), rdata, nil - case "CNAME": - return int(dns.TypeCNAME), dns.Fqdn(rdata), nil - default: - return 0, "", fmt.Errorf("record type: %s %w", t, ErrDnsUnsupportedRecordType) - } -} - func appliedZoneCandidateFromZone(z nmdata.CustomZone, distributionGroups []string) networkmap.AppliedZoneCandidate { return networkmap.AppliedZoneCandidate{ DistributionGroups: distributionGroups, diff --git a/management/internals/network_map_db/shared_types.go b/management/internals/network_map_db/shared_types.go new file mode 100644 index 000000000..a48a8d06b --- /dev/null +++ b/management/internals/network_map_db/shared_types.go @@ -0,0 +1,37 @@ +package networkmapdb + +import ( + "database/sql" + "errors" + "fmt" + + "github.com/miekg/dns" +) + +var ErrDnsUnsupportedRecordType = errors.New("unsupported record type") + +type Domain struct { + Domain sql.NullString + TargetCluster sql.NullString +} + +type Service struct { + Enabled sql.NullBool + Private sql.NullBool + AccessGroups []string + ProxyCluster sql.NullString + Domain sql.NullString +} + +func RecordTypeAndRdata(t, rdata string) (int, string, error) { + switch t { + case "A": + return int(dns.TypeA), rdata, nil + case "AAAA": + return int(dns.TypeAAAA), rdata, nil + case "CNAME": + return int(dns.TypeCNAME), dns.Fqdn(rdata), nil + default: + return 0, "", fmt.Errorf("record type: %s %w", t, ErrDnsUnsupportedRecordType) + } +} diff --git a/management/internals/network_map_db/pgsql/dns_test.go b/management/internals/network_map_db/shared_types_test.go similarity index 92% rename from management/internals/network_map_db/pgsql/dns_test.go rename to management/internals/network_map_db/shared_types_test.go index 4a997f5f5..8a1239e26 100644 --- a/management/internals/network_map_db/pgsql/dns_test.go +++ b/management/internals/network_map_db/shared_types_test.go @@ -1,4 +1,4 @@ -package networkmap_pgsql +package networkmapdb import ( "testing" @@ -23,7 +23,7 @@ func TestRecordTypeAndRdata(t *testing.T) { for _, tt := range tests { t.Run(tt.recordType, func(t *testing.T) { - recordType, rdata, err := recordTypeAndRdata(tt.recordType, tt.rdata) + recordType, rdata, err := RecordTypeAndRdata(tt.recordType, tt.rdata) if tt.expectedErr != nil { assert.ErrorIs(t, err, ErrDnsUnsupportedRecordType) diff --git a/management/internals/network_map_db/struct_helpers.go b/management/internals/network_map_db/struct_helpers.go index 324c6df93..e2e20cfa7 100644 --- a/management/internals/network_map_db/struct_helpers.go +++ b/management/internals/network_map_db/struct_helpers.go @@ -10,6 +10,13 @@ import ( "github.com/rs/xid" ) +const ( + NMAP_STRUCT_TAG = "nmap" + NMAP_SKIP = "skip" + NMAP_MAP_TO = "map_to" + NMAP_JSON = "json" +) + type fieldTag struct { Key string Value string