diff --git a/integration_tests/management/network_map_db/pgsql/network_resource_test.go b/integration_tests/management/network_map_db/pgsql/network_resource_test.go index f502144bf..4325ed3ba 100644 --- a/integration_tests/management/network_map_db/pgsql/network_resource_test.go +++ b/integration_tests/management/network_map_db/pgsql/network_resource_test.go @@ -7,15 +7,11 @@ import ( "net/netip" "testing" - "github.com/netbirdio/netbird/management/server/types" "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" "github.com/stretchr/testify/assert" ) func TestGetNetworkResources(t *testing.T) { - if engine == string(types.SqliteStoreEngine) { - t.Skip() - } ctx := context.TODO() execQuery(t, ctx, diff --git a/management/internals/network_map_db/pgsql/account_settings.go b/management/internals/network_map_db/pgsql/account_settings.go index 6fbbc8ef8..cd5a36e35 100644 --- a/management/internals/network_map_db/pgsql/account_settings.go +++ b/management/internals/network_map_db/pgsql/account_settings.go @@ -2,11 +2,11 @@ package networkmap_pgsql import ( "context" - "database/sql" "encoding/json" "time" "github.com/jackc/pgx/v5" + networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db" "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" ) @@ -34,7 +34,7 @@ func (pgc *PgStoreConn) GetAccountSettings(ctx context.Context, accountId string return nmdata.AccountSettingsInfo{}, err } - settings, err := pgx.CollectOneRow(rows, pgx.RowToStructByName[account]) + settings, err := pgx.CollectOneRow(rows, pgx.RowToStructByName[networkmapdb.Account]) if err != nil { return nmdata.AccountSettingsInfo{}, err } @@ -59,17 +59,3 @@ func (pgc *PgStoreConn) GetAccountSettings(ctx context.Context, accountId string return settingsInfo, nil } - -type account struct { - PeerLoginExpirationEnabled sql.NullBool - PeerLoginExpiration sql.NullInt64 - PeerInactivityExpirationEnabled sql.NullBool - PeerInactivityExpiration sql.NullInt64 - DNSDomain sql.NullString - IPv6EnabledGroups json.RawMessage - RoutingPeerDNSResolutionEnabled sql.NullBool - LazyConnectionEnabled sql.NullBool - AutoUpdateVersion sql.NullString - AutoUpdateAlways sql.NullBool - MetricsPushEnabled sql.NullBool -} diff --git a/management/internals/network_map_db/pgsql/nameserver.go b/management/internals/network_map_db/pgsql/nameserver.go index 4fed409b0..12f215edb 100644 --- a/management/internals/network_map_db/pgsql/nameserver.go +++ b/management/internals/network_map_db/pgsql/nameserver.go @@ -2,9 +2,6 @@ package networkmap_pgsql import ( "context" - "database/sql" - "encoding/json" - "reflect" "github.com/jackc/pgx/v5" networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db" @@ -25,33 +22,10 @@ func (pgc *PgStoreConn) GetNameServerGroups(ctx context.Context, accountId strin return nil, err } - nsgroups, err := pgx.CollectRows(rows, pgx.RowToStructByName[nameserverGroup]) + nsgroups, err := pgx.CollectRows(rows, pgx.RowToStructByName[networkmapdb.NameserverGroup]) if err != nil { return nil, err } - toret := make([]nmdata.NameServerGroup, 0, len(nsgroups)) - for _, nsg := range nsgroups { - group := nmdata.NameServerGroup{} - err := networkmapdb.FromSqlTypesToSharedTypes( - reflect.ValueOf(&nsg), reflect.ValueOf(&group)) - if err != nil { - return nil, err - } - toret = append(toret, group) - } - return toret, nil -} - -type nameserverGroup struct { - ID string - PublicID sql.NullString - Name sql.NullString - Description sql.NullString - NameServers json.RawMessage - Groups json.RawMessage - Primary sql.NullBool - Domains json.RawMessage - Enabled sql.NullBool - SearchDomainsEnabled sql.NullBool + return networkmapdb.ConvertAllToSharedTypes[networkmapdb.NameserverGroup, nmdata.NameServerGroup](nsgroups) } diff --git a/management/internals/network_map_db/pgsql/network_resource.go b/management/internals/network_map_db/pgsql/network_resource.go index 27f4e75c6..48c9b0611 100644 --- a/management/internals/network_map_db/pgsql/network_resource.go +++ b/management/internals/network_map_db/pgsql/network_resource.go @@ -2,9 +2,6 @@ package networkmap_pgsql import ( "context" - "database/sql" - "encoding/json" - "reflect" "github.com/jackc/pgx/v5" networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db" @@ -25,33 +22,10 @@ func (pgc *PgStoreConn) GetNetworkResources(ctx context.Context, accountId strin return nil, err } - netresorces, err := pgx.CollectRows(rows, pgx.RowToStructByName[networkresource]) + netresorces, err := pgx.CollectRows(rows, pgx.RowToStructByName[networkmapdb.Networkresource]) if err != nil { return nil, err } - toret := make([]nmdata.NetworkResource, 0, len(netresorces)) - for _, nres := range netresorces { - resource := nmdata.NetworkResource{} - err := networkmapdb.FromSqlTypesToSharedTypes( - reflect.ValueOf(&nres), reflect.ValueOf(&resource)) - if err != nil { - return nil, err - } - toret = append(toret, resource) - } - return toret, nil -} - -type networkresource struct { - ID string - NetworkID sql.NullString - AccountID sql.NullString - PublicID sql.NullString - Name sql.NullString - Description sql.NullString - Type sql.NullString - Domain sql.NullString - Prefix json.RawMessage - Enabled sql.NullBool + return networkmapdb.ConvertAllToSharedTypes[networkmapdb.Networkresource, nmdata.NetworkResource](netresorces) } diff --git a/management/internals/network_map_db/shared_types.go b/management/internals/network_map_db/shared_types.go index f97315331..2168cc143 100644 --- a/management/internals/network_map_db/shared_types.go +++ b/management/internals/network_map_db/shared_types.go @@ -14,6 +14,20 @@ import ( var ErrDnsUnsupportedRecordType = errors.New("unsupported record type") +type Account struct { + PeerLoginExpirationEnabled sql.NullBool + PeerLoginExpiration sql.NullInt64 + PeerInactivityExpirationEnabled sql.NullBool + PeerInactivityExpiration sql.NullInt64 + DNSDomain sql.NullString + IPv6EnabledGroups []byte `nmap:"json"` + RoutingPeerDNSResolutionEnabled sql.NullBool + LazyConnectionEnabled sql.NullBool + AutoUpdateVersion sql.NullString + AutoUpdateAlways sql.NullBool + MetricsPushEnabled sql.NullBool +} + type Domain struct { Domain sql.NullString TargetCluster sql.NullString @@ -39,6 +53,32 @@ type Zone struct { RecordRData sql.NullString `nmap:"skip"` } +type NameserverGroup struct { + ID string + PublicID sql.NullString + Name sql.NullString + Description sql.NullString + NameServers []byte `nmap:"json"` + Groups []byte `nmap:"json"` + Primary sql.NullBool + Domains []byte `nmap:"json"` + Enabled sql.NullBool + SearchDomainsEnabled sql.NullBool +} + +type Networkresource struct { + ID string + NetworkID sql.NullString + AccountID sql.NullString + PublicID sql.NullString + Name sql.NullString + Description sql.NullString + Type sql.NullString + Domain sql.NullString + Prefix []byte `nmap:"json"` + Enabled sql.NullBool +} + func RecordTypeAndRdata(t, rdata string) (int, string, error) { switch t { case "A": diff --git a/management/internals/network_map_db/sqlite/account_setting.go b/management/internals/network_map_db/sqlite/account_setting.go index ff645a005..134c26aff 100644 --- a/management/internals/network_map_db/sqlite/account_setting.go +++ b/management/internals/network_map_db/sqlite/account_setting.go @@ -2,7 +2,6 @@ package networkmap_sqlite import ( "context" - "database/sql" "reflect" networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db" @@ -33,7 +32,7 @@ func (sc *SqliteStoreConn) GetAccountSettings(ctx context.Context, accountId str return nmdata.AccountSettingsInfo{}, err } - a, err := networkmapdb.CollectOneRowForSqlite[account](rows) + a, err := networkmapdb.CollectOneRowForSqlite[networkmapdb.Account](rows) settingsInfo := nmdata.AccountSettingsInfo{} err = networkmapdb.FromSqlTypesToSharedTypes(reflect.ValueOf(&a), reflect.ValueOf(&settingsInfo)) @@ -43,17 +42,3 @@ func (sc *SqliteStoreConn) GetAccountSettings(ctx context.Context, accountId str return settingsInfo, nil } - -type account struct { - PeerLoginExpirationEnabled sql.NullBool - PeerLoginExpiration sql.NullInt64 - PeerInactivityExpirationEnabled sql.NullBool - PeerInactivityExpiration sql.NullInt64 - DNSDomain sql.NullString - IPv6EnabledGroups []byte `nmap:"json"` - RoutingPeerDNSResolutionEnabled sql.NullBool - LazyConnectionEnabled sql.NullBool - AutoUpdateVersion sql.NullString - AutoUpdateAlways sql.NullBool - MetricsPushEnabled sql.NullBool -} diff --git a/management/internals/network_map_db/sqlite/nameserver.go b/management/internals/network_map_db/sqlite/nameserver.go index 21eee71d0..a4a8ec890 100644 --- a/management/internals/network_map_db/sqlite/nameserver.go +++ b/management/internals/network_map_db/sqlite/nameserver.go @@ -2,7 +2,6 @@ package networkmap_sqlite import ( "context" - "database/sql" networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db" "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" @@ -22,23 +21,10 @@ func (sc *SqliteStoreConn) GetNameServerGroups(ctx context.Context, accountId st return nil, err } - nsgroups, err := networkmapdb.CollectRowsForSqlite[nameserverGroup](rows) + nsgroups, err := networkmapdb.CollectRowsForSqlite[networkmapdb.NameserverGroup](rows) if err != nil { return nil, err } - return networkmapdb.ConvertAllToSharedTypes[nameserverGroup, nmdata.NameServerGroup](nsgroups) -} - -type nameserverGroup struct { - ID string - PublicID sql.NullString - Name sql.NullString - Description sql.NullString - NameServers []byte `nmap:"json"` - Groups []byte `nmap:"json"` - Primary sql.NullBool - Domains []byte `nmap:"json"` - Enabled sql.NullBool - SearchDomainsEnabled sql.NullBool + return networkmapdb.ConvertAllToSharedTypes[networkmapdb.NameserverGroup, nmdata.NameServerGroup](nsgroups) } diff --git a/management/internals/network_map_db/sqlite/network_resource.go b/management/internals/network_map_db/sqlite/network_resource.go new file mode 100644 index 000000000..2b308ea0f --- /dev/null +++ b/management/internals/network_map_db/sqlite/network_resource.go @@ -0,0 +1,30 @@ +package networkmap_sqlite + +import ( + "context" + + networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db" + "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" +) + +const ( + GetNetworkResourcesQuery = ` + select id, network_id, account_id, public_id, name, description, type, domain, prefix, enabled + from network_resources + where account_id=$1 + ` +) + +func (sc *SqliteStoreConn) GetNetworkResources(ctx context.Context, accountId string) ([]nmdata.NetworkResource, error) { + rows, err := sc.Conn.QueryContext(ctx, GetNetworkResourcesQuery, accountId) + if err != nil { + return nil, err + } + + netresorces, err := networkmapdb.CollectRowsForSqlite[networkmapdb.Networkresource](rows) + if err != nil { + return nil, err + } + + return networkmapdb.ConvertAllToSharedTypes[networkmapdb.Networkresource, nmdata.NetworkResource](netresorces) +} diff --git a/management/internals/network_map_db/sqlite/sqlite_store.go b/management/internals/network_map_db/sqlite/sqlite_store.go index d268c5783..c0205e9cb 100644 --- a/management/internals/network_map_db/sqlite/sqlite_store.go +++ b/management/internals/network_map_db/sqlite/sqlite_store.go @@ -91,9 +91,6 @@ func (s *SqliteStoreConn) GetPolicies(ctx context.Context, accountId string) ([] func (s *SqliteStoreConn) GetRoutes(ctx context.Context, accountId string) ([]nmdata.Route, error) { return nil, nil } -func (s *SqliteStoreConn) GetNetworkResources(ctx context.Context, accountId string) ([]nmdata.NetworkResource, error) { - return nil, nil -} func (s *SqliteStoreConn) GetNetworkRouters(ctx context.Context, accountId string) (map[string]map[string]*nmdata.NetworkRouter, error) { return nil, nil }