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) { 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 } if err := s.refreshAuditJournalLocked(); err != nil { return domain.SystemLogClearResult{}, err } } else { before, loaded := s.systemLogEvents, s.systemLogLoaded audits := s.auditEvents deleted = len(before) + len(audits) s.systemLogEvents, s.systemLogLoaded = []domain.SystemLogEvent{}, true if err := s.persistSystemLogStoreLocked(); err != nil { s.systemLogEvents, s.systemLogLoaded = before, loaded return domain.SystemLogClearResult{}, err } s.auditEvents = nil if err := s.persistAuditLogLocked(); err != nil { s.auditEvents = audits return domain.SystemLogClearResult{}, err } } id := s.recordAuditLocked(ctx, "log.system.clear", "system", "succeeded", fmt.Sprintf("cleared %d system and audit records; port and link logs preserved", deleted)) return domain.SystemLogClearResult{Deleted: deleted, AuditID: id}, nil }