databasus--databasus
75f3dd141c
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CI and Release / lint-frontend (push) Has been cancelled
CI and Release / dockerfile-scan (push) Has been cancelled
CI and Release / test-frontend (push) Has been cancelled
CI and Release / lint-verification-agent (push) Has been cancelled
CI and Release / test-verification-agent (push) Has been cancelled
CI and Release / e2e-verification-agent (push) Has been cancelled
CI and Release / test-backend (push) Has been cancelled
CI and Release / build-dev-image (push) Has been cancelled
CI and Release / push-dev-image (push) Has been cancelled
CI and Release / build-image (push) Has been cancelled
CI and Release / build-verification-image (push) Has been cancelled
CI and Release / determine-version (push) Has been cancelled
CI and Release / push-image (push) Has been cancelled
CI and Release / push-verification-image (12) (push) Has been cancelled
CI and Release / lint-backend (push) Has been cancelled
CI and Release / push-verification-image (17) (push) Has been cancelled
CI and Release / push-verification-image (18) (push) Has been cancelled
CI and Release / release (push) Has been cancelled
CI and Release / publish-helm-chart (push) Has been cancelled
CI and Release / push-verification-image (13) (push) Has been cancelled
CI and Release / push-verification-image (14) (push) Has been cancelled
CI and Release / push-verification-image (15) (push) Has been cancelled
CI and Release / push-verification-image (16) (push) Has been cancelled
47 行
839 B
Go
47 行
839 B
Go
package audit_logs
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log/slog"
|
|
"sync/atomic"
|
|
"time"
|
|
)
|
|
|
|
type AuditLogBackgroundService struct {
|
|
auditLogService *AuditLogService
|
|
logger *slog.Logger
|
|
|
|
hasRun atomic.Bool
|
|
}
|
|
|
|
func (s *AuditLogBackgroundService) Run(ctx context.Context) {
|
|
if s.hasRun.Swap(true) {
|
|
panic(fmt.Sprintf("%T.Run() called multiple times", s))
|
|
}
|
|
|
|
s.logger.Info("Starting audit log cleanup background service")
|
|
|
|
if ctx.Err() != nil {
|
|
return
|
|
}
|
|
|
|
ticker := time.NewTicker(1 * time.Hour)
|
|
defer ticker.Stop()
|
|
|
|
for {
|
|
select {
|
|
case <-ctx.Done():
|
|
return
|
|
case <-ticker.C:
|
|
if err := s.cleanOldAuditLogs(); err != nil {
|
|
s.logger.Error("Failed to clean old audit logs", "error", err)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func (s *AuditLogBackgroundService) cleanOldAuditLogs() error {
|
|
return s.auditLogService.CleanOldAuditLogs()
|
|
}
|