65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
package tasks
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
"codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/config"
|
|
"codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/internal/service/ipanonymization"
|
|
)
|
|
|
|
// IPAnonymizationTask implements scheduler.Task for IP address anonymization
|
|
type IPAnonymizationTask struct {
|
|
service ipanonymization.AnonymizeOldIPsService
|
|
config *config.Config
|
|
logger *zap.Logger
|
|
}
|
|
|
|
// ProvideIPAnonymizationTask creates a new IP anonymization task for Wire DI
|
|
func ProvideIPAnonymizationTask(
|
|
service ipanonymization.AnonymizeOldIPsService,
|
|
cfg *config.Config,
|
|
logger *zap.Logger,
|
|
) *IPAnonymizationTask {
|
|
return &IPAnonymizationTask{
|
|
service: service,
|
|
config: cfg,
|
|
logger: logger.Named("IPAnonymizationTask"),
|
|
}
|
|
}
|
|
|
|
// Name returns the task name
|
|
func (t *IPAnonymizationTask) Name() string {
|
|
return "IP Anonymization"
|
|
}
|
|
|
|
// Schedule returns the cron schedule for this task
|
|
func (t *IPAnonymizationTask) Schedule() string {
|
|
return t.config.Security.IPAnonymizationSchedule
|
|
}
|
|
|
|
// Execute runs the IP anonymization process
|
|
func (t *IPAnonymizationTask) Execute(ctx context.Context) error {
|
|
if !t.config.Security.IPAnonymizationEnabled {
|
|
t.logger.Debug("IP anonymization is disabled")
|
|
return nil
|
|
}
|
|
|
|
startTime := time.Now()
|
|
t.logger.Info("Starting IP anonymization task")
|
|
|
|
// Run the anonymization process via the service
|
|
if err := t.service.Execute(ctx); err != nil {
|
|
t.logger.Error("IP anonymization task failed",
|
|
zap.Error(err),
|
|
zap.Duration("duration", time.Since(startTime)))
|
|
return err
|
|
}
|
|
|
|
t.logger.Info("IP anonymization task completed successfully",
|
|
zap.Duration("duration", time.Since(startTime)))
|
|
|
|
return nil
|
|
}
|