extract repo

This commit is contained in:
Pascal Fischer
2025-06-12 10:52:21 +02:00
parent f612dba3d3
commit 99304f17af
4 changed files with 38 additions and 33 deletions
@@ -1,10 +0,0 @@
package manager
import (
"github.com/netbirdio/management-refactor/internals/modules/networks"
"github.com/netbirdio/management-refactor/internals/shared/hook"
)
func (m *managerImpl) OnNetworkDelete() *hook.Hook[*networks.NetworkEvent] {
return m.onNetworkDelete
}
+26 -19
View File
@@ -7,17 +7,25 @@ import (
"github.com/rs/xid"
"github.com/netbirdio/management-refactor/internals/modules/networks"
"github.com/netbirdio/management-refactor/internals/modules/networks/resources"
"github.com/netbirdio/management-refactor/internals/modules/networks/routers"
"github.com/netbirdio/management-refactor/internals/shared/activity"
"github.com/netbirdio/management-refactor/internals/shared/db"
"github.com/netbirdio/management-refactor/internals/shared/hook"
)
type managerImpl struct {
repo Repository
repo Repository
activityManager activity.Manager
resourceManager resources.Manager
routerManager routers.Manager
}
func NewManager(repo Repository) networks.Manager {
func NewManager(repo Repository, activityManager activity.Manager, resourceManager resources.Manager, routerManager routers.Manager) networks.Manager {
return &managerImpl{
repo: repo,
repo: repo,
activityManager: activityManager,
resourceManager: resourceManager,
routerManager: routerManager,
}
}
@@ -55,25 +63,24 @@ func (m *managerImpl) UpdateNetwork(ctx context.Context, tx db.Transaction, user
func (m *managerImpl) DeleteNetwork(ctx context.Context, tx db.Transaction, accountID, userID, networkID string) error {
return db.WithTx(m.repo.Store(), tx, func(tx db.Transaction) error {
network := &networks.Network{ID: networkID}
ev := &networks.NetworkEvent{
Context: ctx,
Tx: tx,
Network: network,
err := m.routerManager.DeleteRoutersInNetwork(ctx, tx, accountID, userID, networkID)
if err != nil {
return fmt.Errorf("failed to delete routers in network: %w", err)
}
err := m.OnNetworkDelete().Trigger(ev, func(ne *networks.NetworkEvent) error {
if err := m.repo.DeleteNetwork(ne.Tx, ne.Network); err != nil {
return fmt.Errorf("failed to delete network: %w", err)
}
err = m.resourceManager.DeleteResourcesInNetwork(ctx, tx, accountID, userID, networkID)
if err != nil {
return fmt.Errorf("failed to delete resources in network: %w", err)
}
tx.AddEvent(func() {
// addActivityEvent("Network deleted")
// noop
})
return nil
})
network := &networks.Network{ID: networkID}
err = m.repo.DeleteNetwork(tx, network)
if err != nil {
return err
}
m.activityManager.StoreEvent(ctx, tx, userID, networkID, accountID, activity.NetworkDeleted, network.EventMeta())
return err
})
@@ -17,5 +17,5 @@ type Manager interface {
// Delete
DeleteResource(ctx context.Context, tx db.Transaction, resource *NetworkResource) error
DeleteResourcesInNetwork(ctx context.Context, tx db.Transaction, network *networks.Network) error
DeleteResourcesInNetwork(ctx context.Context, tx db.Transaction, accountID, userID, networkID string) error
}
+11 -3
View File
@@ -4,6 +4,7 @@ import (
"context"
"time"
"github.com/netbirdio/management-refactor/internals/shared/db"
"github.com/netbirdio/management-refactor/pkg/configuration"
"github.com/netbirdio/management-refactor/pkg/logging"
)
@@ -28,9 +29,9 @@ func NewManager(eventStore Store) *Manager {
}
}
func (m *Manager) StoreEvent(ctx context.Context, initiatorID, targetID, accountID string, activityID ActivityDescriber, meta map[string]any) {
func (m *Manager) StoreEvent(ctx context.Context, tx db.Transaction, initiatorID, targetID, accountID string, activityID ActivityDescriber, meta map[string]any) {
if m.cfg.Enabled {
go func() {
eventFunc := func() {
_, err := m.eventStore.Save(ctx, &Event{
Timestamp: time.Now().UTC(),
Activity: activityID,
@@ -43,6 +44,13 @@ func (m *Manager) StoreEvent(ctx context.Context, initiatorID, targetID, account
// todo add metric
log.WithContext(ctx).Errorf("received an error while storing an activity event, error: %s", err)
}
}()
}
if tx != nil {
tx.AddEvent(eventFunc)
return
}
go eventFunc()
}
}