MCPcopy Create free account
hub / github.com/astercloud/aster / QueryEvents

Method QueryEvents

pkg/security/audit.go:493–542  ·  view source on GitHub ↗

QueryEvents 查询事件

(ctx context.Context, query *AuditQuery)

Source from the content-addressed store, hash-verified

491
492// QueryEvents 查询事件
493func (al *InMemoryAuditLog) QueryEvents(ctx context.Context, query *AuditQuery) (*AuditResult, error) {
494 start := time.Now()
495
496 al.mu.RLock()
497 defer al.mu.RUnlock()
498
499 var filteredEvents []*AuditEvent
500 for i := range al.events {
501 event := &al.events[i]
502 if al.matchesQuery(event, query) {
503 filteredEvents = append(filteredEvents, event)
504 }
505 }
506
507 // 应用排序
508 if query.OrderBy != "" {
509 al.sortEvents(filteredEvents, query.OrderBy, query.OrderDesc)
510 }
511
512 // 应用分页
513 total := int64(len(filteredEvents))
514 offset := query.Offset
515 if offset < 0 {
516 offset = 0
517 }
518 limit := query.Limit
519 if limit <= 0 {
520 limit = 100
521 }
522
523 var events []*AuditEvent
524 if offset < len(filteredEvents) {
525 end := offset + limit
526 if end > len(filteredEvents) {
527 end = len(filteredEvents)
528 }
529 events = filteredEvents[offset:end]
530 } else {
531 events = []*AuditEvent{}
532 }
533
534 return &AuditResult{
535 Events: events,
536 Total: total,
537 Offset: offset,
538 Limit: limit,
539 HasMore: int64(offset+limit) < total,
540 QueryTime: time.Since(start),
541 }, nil
542}
543
544// matchesQuery 检查事件是否匹配查询条件
545func (al *InMemoryAuditLog) matchesQuery(event *AuditEvent, query *AuditQuery) bool {

Callers 5

GetEventsByUserMethod · 0.95
GetEventsByTypeMethod · 0.95
GetEventsByTimeRangeMethod · 0.95
GetEventSummaryMethod · 0.95
ExportEventsMethod · 0.95

Calls 2

matchesQueryMethod · 0.95
sortEventsMethod · 0.95

Tested by

no test coverage detected