Compare commits

...

7 Commits

Author SHA1 Message Date
eKuG
b6445bc0ad feat: added support for custom quick filters 2025-04-21 12:29:28 +05:30
eKuG
ce81ab73b1 feat: added support for custom quick filters 2025-04-21 12:28:36 +05:30
eKuG
20f7615a80 feat: added support for custom quick filters 2025-04-21 11:59:57 +05:30
eKuG
9777b020c5 feat: added support for custom quick filters 2025-04-21 11:58:54 +05:30
eKuG
be72e2ea1d feat: added support for custom quick filters 2025-04-21 11:37:57 +05:30
Ekansh Gupta
38a5a21ff0 Merge branch 'main' into quickFiltersFeature 2025-04-17 16:25:44 +05:30
eKuG
ca6f90926c feat: added support for custom quick filters 2025-04-17 16:18:02 +05:30
2 changed files with 52 additions and 4 deletions

View File

@@ -2,7 +2,9 @@ package preferencetypes
import (
"context"
"encoding/json"
"fmt"
v3 "github.com/SigNoz/signoz/pkg/query-service/model/v3"
"strings"
"github.com/SigNoz/signoz/pkg/errors"
@@ -129,6 +131,24 @@ func NewDefaultPreferenceMap() map[string]Preference {
IsDiscreteValues: true,
AllowedScopes: []string{"user"},
},
"TRACES_QUICK_FILTERS_MAPPING": {
Key: "TRACES_QUICK_FILTERS_MAPPING",
Name: "Quick Filters Mapping for traces",
Description: "Structured keys for Quick filters",
ValueType: "json",
DefaultValue: "[]",
IsDiscreteValues: false,
AllowedScopes: []string{"org"},
},
"LOGS_QUICK_FILTERS_MAPPING": {
Key: "LOGS_QUICK_FILTERS_MAPPING",
Name: "Quick Filters Mapping for logs",
Description: "Structured keys for Quick filters",
ValueType: "json",
DefaultValue: "[]",
IsDiscreteValues: false,
AllowedScopes: []string{"org"},
},
}
}
@@ -222,6 +242,22 @@ func (p *Preference) IsValidValue(preferenceValue interface{}) error {
return errors.Newf(errors.TypeInvalidInput, errors.CodeInvalidInput, fmt.Sprintf("the preference value is not in the range specified, min: %v , max:%v", p.Range.Min, p.Range.Max))
}
}
case PreferenceValueTypeAttributeKeys:
strVal, ok := preferenceValue.(string)
if !ok {
return p.ErrorValueTypeMismatch()
}
var parsed []v3.AttributeKey
if err := json.Unmarshal([]byte(strVal), &parsed); err != nil {
return errors.Newf(errors.TypeInvalidInput, errors.CodeInvalidInput, "invalid attribute_keys JSON format: %v", err)
}
for _, attr := range parsed {
if err := attr.Validate(); err != nil {
return errors.Newf(errors.TypeInvalidInput, errors.CodeInvalidInput, "invalid attribute key: %v", err)
}
}
case PreferenceValueTypeString:
_, ok := preferenceValue.(string)
if !ok {
@@ -275,6 +311,17 @@ func (p *Preference) SanitizeValue(preferenceValue interface{}) interface{} {
} else {
return false
}
case PreferenceValueTypeAttributeKeys:
switch val := preferenceValue.(type) {
case string:
var result interface{}
if err := json.Unmarshal([]byte(val), &result); err == nil {
return result
}
return []interface{}{}
default:
return []interface{}{}
}
default:
return preferenceValue
}

View File

@@ -1,10 +1,11 @@
package preferencetypes
const (
PreferenceValueTypeInteger string = "integer"
PreferenceValueTypeFloat string = "float"
PreferenceValueTypeString string = "string"
PreferenceValueTypeBoolean string = "boolean"
PreferenceValueTypeInteger string = "integer"
PreferenceValueTypeFloat string = "float"
PreferenceValueTypeString string = "string"
PreferenceValueTypeBoolean string = "boolean"
PreferenceValueTypeAttributeKeys string = "json"
)
const (