mirror of
https://github.com/netbirdio/management-refactor.git
synced 2026-05-22 17:12:59 -07:00
extract repo
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user