in server/datasource/etcd/track/polling_detail_dao.go [52:87]
func (s *Dao) GetPollingDetail(ctx context.Context, detail *model.PollingDetail) ([]*model.PollingDetail, error) {
kvs, n, err := etcdadpt.List(ctx, key.TrackList(detail.Domain, detail.Project))
if err != nil {
openlog.Error(err.Error())
return nil, err
}
records := make([]*model.PollingDetail, 0, n)
for _, kv := range kvs {
var doc model.PollingDetail
err := json.Unmarshal(kv.Value, &doc)
if err != nil {
openlog.Error("decode polling detail error: " + err.Error())
continue
}
if detail.SessionID != "" && doc.SessionID != detail.SessionID {
continue
}
if detail.IP != "" && doc.IP != detail.IP {
continue
}
if detail.UserAgent != "" && doc.UserAgent != detail.UserAgent {
continue
}
if detail.URLPath != "" && doc.URLPath != detail.URLPath {
continue
}
if detail.Revision != "" && doc.Revision != detail.Revision {
continue
}
records = append(records, &doc)
}
if len(records) == 0 {
return nil, datasource.ErrRecordNotExists
}
return records, nil
}