Files
2025-04-15 17:09:46 +02:00

49 lines
1.1 KiB
Go

package activity
import (
"context"
"time"
"management/pkg/configuration"
"management/pkg/logging"
)
var log = logging.LoggerForThisPackage()
type Manager struct {
cfg *config
// eventStore is the event store
eventStore Store
}
// NewManager creates a new activity manager
func NewManager(eventStore Store) *Manager {
cfg, err := configuration.Parse[config]()
if err != nil {
log.Fatalf("failed to parse activity config: %v", err)
}
return &Manager{
cfg: cfg,
eventStore: eventStore,
}
}
func (m *Manager) StoreEvent(ctx context.Context, initiatorID, targetID, accountID string, activityID ActivityDescriber, meta map[string]any) {
if m.cfg.Enabled {
go func() {
_, err := m.eventStore.Save(ctx, &Event{
Timestamp: time.Now().UTC(),
Activity: activityID,
InitiatorID: initiatorID,
TargetID: targetID,
AccountID: accountID,
Meta: meta,
})
if err != nil {
// todo add metric
log.WithContext(ctx).Errorf("received an error while storing an activity event, error: %s", err)
}
}()
}
}