wired up sqlite store for use in networkmap controller

Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io>
This commit is contained in:
Dmitri Dolguikh
2026-08-13 13:16:23 +02:00
parent 931598e593
commit 4aa123b6ad
8 changed files with 130 additions and 72 deletions
@@ -0,0 +1,73 @@
package networkmapdbfactory
import (
"context"
"fmt"
"os"
networkmapdb "github.com/netbirdio/netbird/management/internals/network_map_db"
networkmap_pgsql "github.com/netbirdio/netbird/management/internals/network_map_db/pgsql"
networkmap_sqlite "github.com/netbirdio/netbird/management/internals/network_map_db/sqlite"
"github.com/netbirdio/netbird/management/server/integrations/integrated_validator"
"github.com/netbirdio/netbird/management/server/settings"
"github.com/netbirdio/netbird/management/server/store"
"github.com/netbirdio/netbird/management/server/types"
log "github.com/sirupsen/logrus"
)
const storeSqliteFileName = "store.db"
func NewNetworkMapDBStore(
ctx context.Context,
kind types.Engine,
dataDir string,
integratedPeerValidator integrated_validator.IntegratedValidator,
extraSettingsManager settings.Manager) (*networkmapdb.NetworkMapDBStoreImpl, error) {
switch kind {
case types.SqliteStoreEngine:
log.WithContext(ctx).Info("networkmap store is using SQLite")
storeFile := storeSqliteFileName
if envFile, ok := os.LookupEnv("NB_STORE_ENGINE_SQLITE_FILE"); ok && envFile != "" {
storeFile = envFile
}
store, err := networkmap_sqlite.NewSqliteStore(storeFile, dataDir)
if err != nil {
return nil, err
}
return &networkmapdb.NetworkMapDBStoreImpl{
Store: store,
IntegratedPeerValidator: integratedPeerValidator,
ExtraSettingsManager: extraSettingsManager,
}, nil
case types.PostgresStoreEngine:
log.WithContext(ctx).Info("using Postgres store engine")
dsn, err := mustLookupDsnEnv()
if err != nil {
return nil, err
}
store, err := networkmap_pgsql.NewPostgresqlStore(ctx, dsn)
if err != nil {
return nil, err
}
return &networkmapdb.NetworkMapDBStoreImpl{
Store: store,
IntegratedPeerValidator: integratedPeerValidator,
ExtraSettingsManager: extraSettingsManager,
}, nil
}
return nil, nil
}
func mustLookupDsnEnv() (string, error) {
if v, ok := os.LookupEnv(store.PostgresDsnEnv); ok {
return v, nil
}
if v, ok := os.LookupEnv(store.PostgresDsnEnvLegacy); ok {
return v, nil
}
return "", fmt.Errorf("%s env var must be set when using postgres networkmap store", store.PostgresDsnEnv)
}