support for GetRoutes in sqlite

Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io>
This commit is contained in:
Dmitri Dolguikh
2026-08-11 13:49:36 +02:00
parent 4375fdc7b6
commit 859af13c12
5 changed files with 55 additions and 44 deletions

View File

@@ -7,16 +7,12 @@ import (
"net/netip"
"testing"
"github.com/netbirdio/netbird/management/server/types"
"github.com/netbirdio/netbird/shared/management/domain"
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
"github.com/stretchr/testify/assert"
)
func TestGetRoutes(t *testing.T) {
if engine == string(types.SqliteStoreEngine) {
t.Skip()
}
ctx := context.TODO()
execQuery(t, ctx,

View File

@@ -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"
@@ -27,41 +24,10 @@ func (pgc *PgStoreConn) GetRoutes(ctx context.Context, accountId string) ([]nmda
return nil, err
}
routes, err := pgx.CollectRows(rows, pgx.RowToStructByName[route])
routes, err := pgx.CollectRows(rows, pgx.RowToStructByName[networkmapdb.Route])
if err != nil {
return nil, err
}
toret := make([]nmdata.Route, 0, len(routes))
for _, r := range routes {
route := nmdata.Route{}
err := networkmapdb.FromSqlTypesToSharedTypes(
reflect.ValueOf(&r), reflect.ValueOf(&route))
if err != nil {
return nil, err
}
toret = append(toret, route)
}
return toret, nil
}
type route struct {
ID string
AccountID sql.NullString
PublicID sql.NullString
Network json.RawMessage
Domains json.RawMessage
KeepRoute sql.NullBool
NetID sql.NullString
Description sql.NullString
Peer sql.NullString
PeerID sql.NullString
PeerGroups json.RawMessage
NetworkType sql.NullInt64
Masquerade sql.NullBool
Metric sql.NullInt64
Enabled sql.NullBool
Groups json.RawMessage
AccessControlGroups json.RawMessage
SkipAutoApply sql.NullBool
return networkmapdb.ConvertAllToSharedTypes[networkmapdb.Route, nmdata.Route](routes)
}

View File

@@ -151,6 +151,27 @@ type PostureChecks struct {
Checks []byte `nmap:"json"`
}
type Route struct {
ID string
AccountID sql.NullString
PublicID sql.NullString
Network []byte `nmap:"json"`
Domains []byte `nmap:"json"`
KeepRoute sql.NullBool
NetID sql.NullString
Description sql.NullString
Peer sql.NullString
PeerID sql.NullString
PeerGroups []byte `nmap:"json"`
NetworkType sql.NullInt64
Masquerade sql.NullBool
Metric sql.NullInt64
Enabled sql.NullBool
Groups []byte `nmap:"json"`
AccessControlGroups []byte `nmap:"json"`
SkipAutoApply sql.NullBool
}
func RecordTypeAndRdata(t, rdata string) (int, string, error) {
switch t {
case "A":

View File

@@ -0,0 +1,32 @@
package networkmap_sqlite
import (
"context"
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
)
const (
GetRoutesQuery = `
select id, account_id, public_id, network, domains, keep_route, net_id, description,
peer, peer as peer_id, peer_groups, network_type, masquerade, metric, enabled,
groups, access_control_groups, skip_auto_apply
from routes
where account_id=?
`
)
func (sc *SqliteStoreConn) GetRoutes(ctx context.Context, accountId string) ([]nmdata.Route, error) {
rows, err := sc.Conn.QueryContext(ctx, GetRoutesQuery, accountId)
if err != nil {
return nil, err
}
routes, err := CollectRowsForSqlite[networkmapdb.Route](rows)
if err != nil {
return nil, err
}
return networkmapdb.ConvertAllToSharedTypes[networkmapdb.Route, nmdata.Route](routes)
}

View File

@@ -11,7 +11,6 @@ import (
"database/sql"
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
)
var ErrNoRows = errors.New("no rows in result set")
@@ -120,9 +119,6 @@ func CollectRowsForSqlite[T any](rows *sql.Rows) ([]T, error) {
return toret, nil
}
func (s *SqliteStoreConn) GetRoutes(ctx context.Context, accountId string) ([]nmdata.Route, error) {
return nil, nil
}
func (s *SqliteStoreConn) GetAllowedUsers(ctx context.Context, accountId string) (map[string]struct{}, map[string][]string, error) {
return nil, nil, nil
}