package mock import ( "context" "fmt" "tera-clone/services/tera-api/internal/domain" "tera-clone/services/tera-api/internal/logservice" ) func (s *Store) ClearSystemLogs(ctx context.Context) (domain.SystemLogClearResult, error) { if _, err := s.RecordAudit(ctx, domain.AuditEvent{Action: "log.system.clear.request", Target: "system", Result: "succeeded", Message: "administrator requested clearing system events; audit records are preserved"}); err != nil { return domain.SystemLogClearResult{}, err } s.mu.Lock() defer s.mu.Unlock() deleted := 0 if s.logJournal != nil { cleaner, ok := s.logJournal.(logservice.SystemLogCleaner) if !ok { return domain.SystemLogClearResult{}, fmt.Errorf("system log clearing is not supported by this journal") } count, err := cleaner.ClearSystem() if err != nil { return domain.SystemLogClearResult{}, err } deleted = count if err := s.refreshSystemJournalLocked(); err != nil { return domain.SystemLogClearResult{}, err } } else { before, loaded := s.systemLogEvents, s.systemLogLoaded deleted = len(before) s.systemLogEvents, s.systemLogLoaded = []domain.SystemLogEvent{}, true if err := s.persistSystemLogStoreLocked(); err != nil { s.systemLogEvents, s.systemLogLoaded = before, loaded return domain.SystemLogClearResult{}, err } } id := s.recordAuditLocked(ctx, "log.system.clear", "system", "succeeded", fmt.Sprintf("cleared %d system event records; audit, port and link logs preserved", deleted)) return domain.SystemLogClearResult{Deleted: deleted, AuditID: id}, nil }