mirror of
https://github.com/SigNoz/signoz.git
synced 2026-09-14 23:40:42 +01:00
Some checks failed
build-staging / prepare (push) Has been cancelled
build-staging / js-build (push) Has been cancelled
build-staging / go-build (push) Has been cancelled
build-staging / staging (push) Has been cancelled
cacheci / tests (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
* feat: support llm trace list and span list * fix: take perf into consideration * fix: more tests * fix: more cleanup * fix: cleanup and more tests * fix: add resource fingerprint cte * fix: edge cases and correct cost key * fix: update integration test * fix: update openapi * fix: address comments * fix: address comments * fix: fix tests * fix: add back the flag in metadata * fix: remove source and change to builder ai query * fix: updated openapi * fix: minor cleanup * fix: refactor as requested * fix: address comments * fix: address comments * fix: remove tracefield. explicit rejection * fix: remove comment * fix: remove accidentally added file * fix: add NewFactory * fix: refactor integration tests * fix: address comment * fix: use assert * fix: use assert and condense comments
42 lines
1.6 KiB
Go
42 lines
1.6 KiB
Go
package scopedtracesstatementbuilder
|
|
|
|
import (
|
|
"context"
|
|
|
|
qbtypes "github.com/SigNoz/signoz/pkg/types/querybuildertypes/querybuildertypesv5"
|
|
"github.com/SigNoz/signoz/pkg/types/telemetrytypes"
|
|
"github.com/SigNoz/signoz/pkg/valuer"
|
|
"github.com/huandu/go-sqlbuilder"
|
|
)
|
|
|
|
// columnResolver resolves keys to bare column/value expressions through the shared
|
|
// field mapper. It binds no args, so its expressions embed in any builder; predicates
|
|
// (which do bind args) are the predicateResolver's job.
|
|
type columnResolver struct {
|
|
fm qbtypes.FieldMapper
|
|
keys map[string][]*telemetrytypes.TelemetryFieldKey
|
|
}
|
|
|
|
func newColumnResolver(fm qbtypes.FieldMapper, keys map[string][]*telemetrytypes.TelemetryFieldKey) *columnResolver {
|
|
return &columnResolver{fm: fm, keys: keys}
|
|
}
|
|
|
|
func (r *columnResolver) FieldFor(ctx context.Context, orgID valuer.UUID, startNs, endNs uint64, key *telemetrytypes.TelemetryFieldKey) (string, error) {
|
|
return r.fm.FieldFor(ctx, orgID, startNs, endNs, key)
|
|
}
|
|
|
|
// ValueFor returns the value expression for an attribute key.
|
|
func (r *columnResolver) ValueFor(ctx context.Context, orgID valuer.UUID, startNs, endNs uint64, key *telemetrytypes.TelemetryFieldKey, dt telemetrytypes.FieldDataType) (string, error) {
|
|
// TODO(nitya): Fix this as this is not correct way
|
|
if cands := r.keys[key.Name]; len(cands) > 0 {
|
|
key = cands[0]
|
|
}
|
|
expr, err := r.fm.ColumnExpressionFor(ctx, orgID, startNs, endNs, key, dt, r.keys)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
// a materialized column name carries `$$`, which Build would otherwise unescape
|
|
// to a single `$` and reference the wrong column
|
|
return sqlbuilder.Escape(expr), nil
|
|
}
|