mirror of
https://github.com/netbirdio/netbird.git
synced 2025-06-20 17:58:02 +02:00
[management] add gorm tag for primary key for the networks objects (#3758)
This commit is contained in:
parent
12f883badf
commit
055df9854c
@ -352,3 +352,24 @@ func MigrateNewField[T any](ctx context.Context, db *gorm.DB, columnName string,
|
|||||||
log.WithContext(ctx).Infof("Migration of empty %s to default value in table %s completed", columnName, tableName)
|
log.WithContext(ctx).Infof("Migration of empty %s to default value in table %s completed", columnName, tableName)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DropIndex[T any](ctx context.Context, db *gorm.DB, indexName string) error {
|
||||||
|
var model T
|
||||||
|
|
||||||
|
if !db.Migrator().HasTable(&model) {
|
||||||
|
log.WithContext(ctx).Debugf("table for %T does not exist, no migration needed", model)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if !db.Migrator().HasIndex(&model, indexName) {
|
||||||
|
log.WithContext(ctx).Debugf("index %s does not exist in table %T, no migration needed", indexName, model)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := db.Migrator().DropIndex(&model, indexName); err != nil {
|
||||||
|
return fmt.Errorf("failed to drop index %s: %w", indexName, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.WithContext(ctx).Infof("dropped index %s from table %T", indexName, model)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -227,3 +227,25 @@ func TestMigrateSetupKeyToHashedSetupKey_ForAlreadyMigratedKey_Case2(t *testing.
|
|||||||
|
|
||||||
assert.Equal(t, "9+FQcmNd2GCxIK+SvHmtp6PPGV4MKEicDS+xuSQmvlE=", key.Key, "Key should be hashed")
|
assert.Equal(t, "9+FQcmNd2GCxIK+SvHmtp6PPGV4MKEicDS+xuSQmvlE=", key.Key, "Key should be hashed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDropIndex(t *testing.T) {
|
||||||
|
db := setupDatabase(t)
|
||||||
|
|
||||||
|
err := db.AutoMigrate(&types.SetupKey{})
|
||||||
|
require.NoError(t, err, "Failed to auto-migrate tables")
|
||||||
|
|
||||||
|
err = db.Save(&types.SetupKey{
|
||||||
|
Id: "1",
|
||||||
|
Key: "9+FQcmNd2GCxIK+SvHmtp6PPGV4MKEicDS+xuSQmvlE=",
|
||||||
|
}).Error
|
||||||
|
require.NoError(t, err, "Failed to insert setup key")
|
||||||
|
|
||||||
|
exist := db.Migrator().HasIndex(&types.SetupKey{}, "idx_setup_keys_account_id")
|
||||||
|
assert.True(t, exist, "Should have the index")
|
||||||
|
|
||||||
|
err = migration.DropIndex[types.SetupKey](context.Background(), db, "idx_setup_keys_account_id")
|
||||||
|
require.NoError(t, err, "Migration should not fail to remove index")
|
||||||
|
|
||||||
|
exist = db.Migrator().HasIndex(&types.SetupKey{}, "idx_setup_keys_account_id")
|
||||||
|
assert.False(t, exist, "Should not have the index")
|
||||||
|
}
|
||||||
|
@ -30,7 +30,7 @@ func (p NetworkResourceType) String() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type NetworkResource struct {
|
type NetworkResource struct {
|
||||||
ID string `gorm:"index"`
|
ID string `gorm:"primaryKey"`
|
||||||
NetworkID string `gorm:"index"`
|
NetworkID string `gorm:"index"`
|
||||||
AccountID string `gorm:"index"`
|
AccountID string `gorm:"index"`
|
||||||
Name string
|
Name string
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type NetworkRouter struct {
|
type NetworkRouter struct {
|
||||||
ID string `gorm:"index"`
|
ID string `gorm:"primaryKey"`
|
||||||
NetworkID string `gorm:"index"`
|
NetworkID string `gorm:"index"`
|
||||||
AccountID string `gorm:"index"`
|
AccountID string `gorm:"index"`
|
||||||
Peer string
|
Peer string
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Network struct {
|
type Network struct {
|
||||||
ID string `gorm:"index"`
|
ID string `gorm:"primaryKey"`
|
||||||
AccountID string `gorm:"index"`
|
AccountID string `gorm:"index"`
|
||||||
Name string
|
Name string
|
||||||
Description string
|
Description string
|
||||||
|
@ -82,6 +82,10 @@ func NewSqlStore(ctx context.Context, db *gorm.DB, storeEngine types.Engine, met
|
|||||||
log.WithContext(ctx).Warnf("setting NB_SQL_MAX_OPEN_CONNS is not supported for sqlite, using default value 1")
|
log.WithContext(ctx).Warnf("setting NB_SQL_MAX_OPEN_CONNS is not supported for sqlite, using default value 1")
|
||||||
}
|
}
|
||||||
conns = 1
|
conns = 1
|
||||||
|
_, err = sql.Exec("PRAGMA foreign_keys = ON")
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to set foreign keys for sqlite: %w", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sql.SetMaxOpenConns(conns)
|
sql.SetMaxOpenConns(conns)
|
||||||
|
@ -60,10 +60,10 @@ func Test_NewStore(t *testing.T) {
|
|||||||
|
|
||||||
runTestForAllEngines(t, "", func(t *testing.T, store Store) {
|
runTestForAllEngines(t, "", func(t *testing.T, store Store) {
|
||||||
if store == nil {
|
if store == nil {
|
||||||
t.Errorf("expected to create a new Store")
|
t.Fatalf("expected to create a new Store")
|
||||||
}
|
}
|
||||||
if len(store.GetAllAccounts(context.Background())) != 0 {
|
if len(store.GetAllAccounts(context.Background())) != 0 {
|
||||||
t.Errorf("expected to create a new empty Accounts map when creating a new FileStore")
|
t.Fatalf("expected to create a new empty Accounts map when creating a new FileStore")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -1115,7 +1115,7 @@ func TestSqlite_CreateAndGetObjectInTransaction(t *testing.T) {
|
|||||||
|
|
||||||
group := &types.Group{
|
group := &types.Group{
|
||||||
ID: "group-id",
|
ID: "group-id",
|
||||||
AccountID: "account-id",
|
AccountID: "bf1c8084-ba50-4ce7-9439-34653001fc3b",
|
||||||
Name: "group-name",
|
Name: "group-name",
|
||||||
Issued: "api",
|
Issued: "api",
|
||||||
Peers: nil,
|
Peers: nil,
|
||||||
|
@ -315,6 +315,15 @@ func getMigrations(ctx context.Context) []migrationFunc {
|
|||||||
func(db *gorm.DB) error {
|
func(db *gorm.DB) error {
|
||||||
return migration.MigrateNewField[routerTypes.NetworkRouter](ctx, db, "enabled", true)
|
return migration.MigrateNewField[routerTypes.NetworkRouter](ctx, db, "enabled", true)
|
||||||
},
|
},
|
||||||
|
func(db *gorm.DB) error {
|
||||||
|
return migration.DropIndex[networkTypes.Network](ctx, db, "idx_networks_id")
|
||||||
|
},
|
||||||
|
func(db *gorm.DB) error {
|
||||||
|
return migration.DropIndex[resourceTypes.NetworkResource](ctx, db, "idx_network_resources_id")
|
||||||
|
},
|
||||||
|
func(db *gorm.DB) error {
|
||||||
|
return migration.DropIndex[routerTypes.NetworkRouter](ctx, db, "idx_network_routers_id")
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ const (
|
|||||||
// Group of the peers for ACL
|
// Group of the peers for ACL
|
||||||
type Group struct {
|
type Group struct {
|
||||||
// ID of the group
|
// ID of the group
|
||||||
ID string
|
ID string `gorm:"primaryKey"`
|
||||||
|
|
||||||
// AccountID is a reference to Account that this object belongs
|
// AccountID is a reference to Account that this object belongs
|
||||||
AccountID string `json:"-" gorm:"index"`
|
AccountID string `json:"-" gorm:"index"`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user