MCPcopy
hub / github.com/SigNoz/signoz / conditionFor

Method conditionFor

pkg/telemetryaudit/condition_builder.go:23–171  ·  view source on GitHub ↗
(
	ctx context.Context,
	startNs, endNs uint64,
	key *telemetrytypes.TelemetryFieldKey,
	operator qbtypes.FilterOperator,
	value any,
	sb *sqlbuilder.SelectBuilder,
)

Source from the content-addressed store, hash-verified

21}
22
23func (c *conditionBuilder) conditionFor(
24 ctx context.Context,
25 startNs, endNs uint64,
26 key *telemetrytypes.TelemetryFieldKey,
27 operator qbtypes.FilterOperator,
28 value any,
29 sb *sqlbuilder.SelectBuilder,
30) (string, error) {
31 columns, err := c.fm.ColumnFor(ctx, startNs, endNs, key)
32 if err != nil {
33 return "", err
34 }
35
36 if operator.IsStringSearchOperator() {
37 value = querybuilder.FormatValueForContains(value)
38 }
39
40 fieldExpression, err := c.fm.FieldFor(ctx, startNs, endNs, key)
41 if err != nil {
42 return "", err
43 }
44
45 fieldExpression, value = querybuilder.DataTypeCollisionHandledFieldName(key, value, fieldExpression, operator)
46
47 switch operator {
48 case qbtypes.FilterOperatorEqual:
49 return sb.E(fieldExpression, value), nil
50 case qbtypes.FilterOperatorNotEqual:
51 return sb.NE(fieldExpression, value), nil
52 case qbtypes.FilterOperatorGreaterThan:
53 return sb.G(fieldExpression, value), nil
54 case qbtypes.FilterOperatorGreaterThanOrEq:
55 return sb.GE(fieldExpression, value), nil
56 case qbtypes.FilterOperatorLessThan:
57 return sb.LT(fieldExpression, value), nil
58 case qbtypes.FilterOperatorLessThanOrEq:
59 return sb.LE(fieldExpression, value), nil
60 case qbtypes.FilterOperatorLike:
61 return sb.Like(fieldExpression, value), nil
62 case qbtypes.FilterOperatorNotLike:
63 return sb.NotLike(fieldExpression, value), nil
64 case qbtypes.FilterOperatorILike:
65 return sb.ILike(fieldExpression, value), nil
66 case qbtypes.FilterOperatorNotILike:
67 return sb.NotILike(fieldExpression, value), nil
68 case qbtypes.FilterOperatorContains:
69 return sb.ILike(fieldExpression, fmt.Sprintf("%%%s%%", value)), nil
70 case qbtypes.FilterOperatorNotContains:
71 return sb.NotILike(fieldExpression, fmt.Sprintf("%%%s%%", value)), nil
72 case qbtypes.FilterOperatorRegexp:
73 return fmt.Sprintf(`match(%s, %s)`, sqlbuilder.Escape(fieldExpression), sb.Var(value)), nil
74 case qbtypes.FilterOperatorNotRegexp:
75 return fmt.Sprintf(`NOT match(%s, %s)`, sqlbuilder.Escape(fieldExpression), sb.Var(value)), nil
76 case qbtypes.FilterOperatorBetween:
77 values, ok := value.([]any)
78 if !ok {
79 return "", qbtypes.ErrBetweenValues
80 }

Callers 1

ConditionForMethod · 0.95

Calls 11

FormatValueForContainsFunction · 0.92
NewInvalidInputfFunction · 0.92
GetTypeMethod · 0.80
ColumnForMethod · 0.65
FieldForMethod · 0.65
GEMethod · 0.65
LTMethod · 0.65
LEMethod · 0.65

Tested by

no test coverage detected