in store/reader.go [368:404]
func (r *kustoSpanReader) GetDependencies(ctx context.Context, endTs time.Time, lookback time.Duration) ([]model.DependencyLink, error) {
type kustoDependencyLink struct {
Parent string `kusto:"Parent"`
Child string `kusto:"Child"`
CallCount value.Long `kusto:"CallCount"`
}
kustoStmt := kql.New(queryResultsCacheAge).AddTable(r.tableName).AddLiteral(getDependenciesQuery).AddTable(r.tableName).AddLiteral(getDependenciesJoinQuery)
kustoParams := kql.NewParameters().AddDateTime("ParamEndTs", endTs).AddTimespan("ParamLookBack", lookback)
clientRequestId := GetClientId()
iter, err := r.client.Query(ctx, r.database, kustoStmt, append(r.defaultReadOptions, kusto.ClientRequestID(clientRequestId), kusto.QueryParameters(kustoParams))...)
if err != nil {
return nil, err
}
defer iter.Stop()
var dependencyLinks []model.DependencyLink
err = iter.DoOnRowOrError(
func(row *table.Row, e *errors.Error) error {
if e != nil {
return e
}
rec := kustoDependencyLink{}
if err := row.ToStruct(&rec); err != nil {
return err
}
dependencyLinks = append(dependencyLinks, model.DependencyLink{
Parent: rec.Parent,
Child: rec.Child,
CallCount: uint64(rec.CallCount.Value),
})
return nil
},
)
return dependencyLinks, err
}