mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 10:06:24 +05:00
refactor StatSum to use RSRParsers and add conn_status converter
This commit is contained in:
committed by
Dan Christian Bogos
parent
22e02f18df
commit
b54e3b54ac
@@ -828,6 +828,7 @@ const (
|
||||
MetaSIPURIMethod = "*sipuri_method"
|
||||
MetaSIPURIHost = "*sipuri_host"
|
||||
MetaSIPURIUser = "*sipuri_user"
|
||||
MetaConnStatus = "*conn_status"
|
||||
E164DomainConverter = "*e164Domain"
|
||||
E164Converter = "*e164"
|
||||
URLDecConverter = "*urldecode"
|
||||
|
||||
@@ -132,6 +132,8 @@ func NewDataConverter(params string) (conv DataConverter, err error) {
|
||||
return NewRandomConverter(params[len(MetaRandom)+1:])
|
||||
case strings.HasPrefix(params, MetaStrip):
|
||||
return NewStripConverter(params)
|
||||
case params == MetaConnStatus:
|
||||
return ConnStatusConverter{}, nil
|
||||
case strings.HasPrefix(params, MetaGigawords):
|
||||
return new(GigawordsConverter), nil
|
||||
default:
|
||||
@@ -841,3 +843,21 @@ func (ts TimeStringConverter) Convert(in any) (out any, err error) {
|
||||
tm = tm.In(ts.loc)
|
||||
return tm.Format(ts.layout), nil
|
||||
}
|
||||
|
||||
// ConnStatusConverter converts connection status strings to numeric values.
|
||||
// Returns 1 for UP, -1 for DOWN, and 0 for DUPLICATE.
|
||||
type ConnStatusConverter struct{}
|
||||
|
||||
// Convert implements DataConverter interface
|
||||
func (c ConnStatusConverter) Convert(in any) (any, error) {
|
||||
status := IfaceAsString(in)
|
||||
switch status {
|
||||
case ConnStatusUp:
|
||||
return 1, nil
|
||||
case ConnStatusDown:
|
||||
return -1, nil
|
||||
case ConnStatusDuplicate:
|
||||
return 0, nil
|
||||
}
|
||||
return 0, fmt.Errorf("unsupported connection status: %q", status)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user