From 4375fdc7b64797ea839e33c39548c7a059787c35 Mon Sep 17 00:00:00 2001 From: Dmitri Dolguikh Date: Tue, 11 Aug 2026 13:42:14 +0200 Subject: [PATCH] support for GetPostureChecks in sqlite Signed-off-by: Dmitri Dolguikh --- .../network_map_db/pgsql/posture_test.go | 4 -- .../internals/network_map_db/pgsql/posture.go | 10 +---- .../internals/network_map_db/shared_types.go | 6 +++ .../network_map_db/sqlite/posture.go | 43 +++++++++++++++++++ .../network_map_db/sqlite/sqlite_store.go | 3 -- 5 files changed, 50 insertions(+), 16 deletions(-) create mode 100644 management/internals/network_map_db/sqlite/posture.go diff --git a/integration_tests/management/network_map_db/pgsql/posture_test.go b/integration_tests/management/network_map_db/pgsql/posture_test.go index f729e1cc9..2b4bb3f3d 100644 --- a/integration_tests/management/network_map_db/pgsql/posture_test.go +++ b/integration_tests/management/network_map_db/pgsql/posture_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 TestGetPostureChecks(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/posture.go b/management/internals/network_map_db/pgsql/posture.go index e4ef8420c..aedfec2a5 100644 --- a/management/internals/network_map_db/pgsql/posture.go +++ b/management/internals/network_map_db/pgsql/posture.go @@ -2,8 +2,6 @@ package networkmap_pgsql import ( "context" - "database/sql" - "encoding/json" "reflect" "github.com/jackc/pgx/v5" @@ -25,7 +23,7 @@ func (pgc *PgStoreConn) GetPostureChecks(ctx context.Context, accountId string) return nil, nil, err } - checks, err := pgx.CollectRows(rows, pgx.RowToStructByName[posturechecks]) + checks, err := pgx.CollectRows(rows, pgx.RowToStructByName[networkmapdb.PostureChecks]) if err != nil { return nil, nil, err } @@ -44,9 +42,3 @@ func (pgc *PgStoreConn) GetPostureChecks(ctx context.Context, accountId string) return toret, idToPublicIDIdx, nil } - -type posturechecks struct { - ID string - PublicID sql.NullString `nmap:"skip"` - Checks json.RawMessage -} diff --git a/management/internals/network_map_db/shared_types.go b/management/internals/network_map_db/shared_types.go index 836a95182..542e92add 100644 --- a/management/internals/network_map_db/shared_types.go +++ b/management/internals/network_map_db/shared_types.go @@ -145,6 +145,12 @@ type Peer struct { LocationConnectionIp []byte `nmap:"skip,json"` } +type PostureChecks struct { + ID string + PublicID sql.NullString `nmap:"skip"` + Checks []byte `nmap:"json"` +} + func RecordTypeAndRdata(t, rdata string) (int, string, error) { switch t { case "A": diff --git a/management/internals/network_map_db/sqlite/posture.go b/management/internals/network_map_db/sqlite/posture.go new file mode 100644 index 000000000..6caee6e79 --- /dev/null +++ b/management/internals/network_map_db/sqlite/posture.go @@ -0,0 +1,43 @@ +package networkmap_sqlite + +import ( + "context" + "reflect" + + networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db" + "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" +) + +const ( + GetPostureChecksQuery = ` + select id, public_id, checks + from posture_checks + where account_id=? + ` +) + +func (sc *SqliteStoreConn) GetPostureChecks(ctx context.Context, accountId string) ([]nmdata.PostureChecks, map[string]string, error) { + rows, err := sc.Conn.QueryContext(ctx, GetPostureChecksQuery, accountId) + if err != nil { + return nil, nil, err + } + + checks, err := CollectRowsForSqlite[networkmapdb.PostureChecks](rows) + if err != nil { + return nil, nil, err + } + + toret := make([]nmdata.PostureChecks, 0, len(checks)) + idToPublicIDIdx := make(map[string]string) + for _, c := range checks { + checks := nmdata.PostureChecks{} + err := networkmapdb.FromSqlTypesToSharedTypes(reflect.ValueOf(&c), reflect.ValueOf(&checks)) + if err != nil { + return nil, nil, err + } + toret = append(toret, checks) + idToPublicIDIdx[checks.ID] = c.PublicID.String + } + + return toret, idToPublicIDIdx, nil +} diff --git a/management/internals/network_map_db/sqlite/sqlite_store.go b/management/internals/network_map_db/sqlite/sqlite_store.go index 9d5d25c5b..bd611a29c 100644 --- a/management/internals/network_map_db/sqlite/sqlite_store.go +++ b/management/internals/network_map_db/sqlite/sqlite_store.go @@ -123,9 +123,6 @@ func CollectRowsForSqlite[T any](rows *sql.Rows) ([]T, error) { func (s *SqliteStoreConn) GetRoutes(ctx context.Context, accountId string) ([]nmdata.Route, error) { return nil, nil } -func (s *SqliteStoreConn) GetPostureChecks(ctx context.Context, accountId string) ([]nmdata.PostureChecks, map[string]string, error) { - return nil, nil, nil -} func (s *SqliteStoreConn) GetAllowedUsers(ctx context.Context, accountId string) (map[string]struct{}, map[string][]string, error) { return nil, nil, nil }