package mock import ( "context" "fmt" "tera-clone/services/tera-api/internal/domain" "tera-clone/services/tera-api/internal/logservice" ) func (s *Store) ClearLinkLogs(ctx context.Context) (domain.LinkLogClearResult, error) { s.mu.Lock() defer s.mu.Unlock() deleted := 0 if s.logJournal != nil { cleaner, ok := s.logJournal.(logservice.LinkLogCleaner) if !ok { return domain.LinkLogClearResult{}, fmt.Errorf("link log clearing is not supported by this journal") } count, err := cleaner.ClearLink() if err != nil { return domain.LinkLogClearResult{}, err } deleted = count if err := s.refreshLinkJournalLocked(); err != nil { return domain.LinkLogClearResult{}, err } } else { before, loaded := s.linkLogEvents, s.linkLogLoaded deleted = len(before) s.linkLogEvents, s.linkLogLoaded = []domain.LinkLogEvent{}, true if err := s.persistLinkLogStoreLocked(); err != nil { s.linkLogEvents, s.linkLogLoaded = before, loaded return domain.LinkLogClearResult{}, err } } id := s.recordAuditLocked(ctx, "log.link.clear", "link", "succeeded", fmt.Sprintf("cleared %d link-state events; system, audit and port logs preserved", deleted)) return domain.LinkLogClearResult{Deleted: deleted, AuditID: id}, nil }