func()

in server/datasource/mongo/track/polling_detail_dao.go [67:107]


func (s *Dao) GetPollingDetail(ctx context.Context, detail *model.PollingDetail) ([]*model.PollingDetail, error) {
	collection := dmongo.GetClient().GetDB().Collection(mmodel.CollectionPollingDetail)
	queryFilter := bson.M{"domain": detail.Domain}
	if detail.SessionID != "" {
		queryFilter["session_id"] = detail.SessionID
	}
	if detail.IP != "" {
		queryFilter["ip"] = detail.IP
	}
	if detail.UserAgent != "" {
		queryFilter["user_agent"] = detail.UserAgent
	}
	if detail.URLPath != "" {
		queryFilter["url_path"] = detail.URLPath
	}
	if detail.Revision != "" {
		queryFilter["revision"] = detail.Revision
	}
	cur, err := collection.Find(ctx, queryFilter)
	if err != nil {
		return nil, err
	}
	defer cur.Close(ctx)
	if cur.Err() != nil {
		return nil, err
	}
	records := make([]*model.PollingDetail, 0)
	for cur.Next(ctx) {
		curRecord := &model.PollingDetail{}
		if err := cur.Decode(curRecord); err != nil {
			openlog.Error("decode to KVs error: " + err.Error())
			return nil, err
		}
		curRecord.Domain = ""
		records = append(records, curRecord)
	}
	if len(records) == 0 {
		return nil, datasource.ErrRecordNotExists
	}
	return records, nil
}