mirror of
https://github.com/safing/portmaster
synced 2025-09-16 17:59:41 +00:00
Add support for SUM in netquery
This commit is contained in:
parent
b9b6c09dc6
commit
620a9c0fde
2 changed files with 19 additions and 5 deletions
|
@ -53,6 +53,7 @@ type (
|
||||||
|
|
||||||
Sum struct {
|
Sum struct {
|
||||||
Condition Query `json:"condition"`
|
Condition Query `json:"condition"`
|
||||||
|
Field string `json:"field"`
|
||||||
As string `json:"as"`
|
As string `json:"as"`
|
||||||
Distinct bool `json:"distinct"`
|
Distinct bool `json:"distinct"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -218,8 +218,11 @@ func (req *QueryRequestPayload) prepareSelectedFields(ctx context.Context, schem
|
||||||
case s.Distinct != nil:
|
case s.Distinct != nil:
|
||||||
field = *s.Distinct
|
field = *s.Distinct
|
||||||
case s.Sum != nil:
|
case s.Sum != nil:
|
||||||
// field is not used in case of $sum
|
if s.Sum.Field != "" {
|
||||||
field = "*"
|
field = s.Sum.Field
|
||||||
|
} else {
|
||||||
|
field = "*"
|
||||||
|
}
|
||||||
case s.Min != nil:
|
case s.Min != nil:
|
||||||
if s.Min.Field != "" {
|
if s.Min.Field != "" {
|
||||||
field = s.Min.Field
|
field = s.Min.Field
|
||||||
|
@ -261,9 +264,19 @@ func (req *QueryRequestPayload) prepareSelectedFields(ctx context.Context, schem
|
||||||
return fmt.Errorf("missing 'as' for $sum")
|
return fmt.Errorf("missing 'as' for $sum")
|
||||||
}
|
}
|
||||||
|
|
||||||
clause, params, err := s.Sum.Condition.toSQLWhereClause(ctx, fmt.Sprintf("sel%d", idx), schema, orm.DefaultEncodeConfig)
|
var (
|
||||||
if err != nil {
|
clause string
|
||||||
return fmt.Errorf("in $sum: %w", err)
|
params map[string]any
|
||||||
|
)
|
||||||
|
|
||||||
|
if s.Sum.Field != "" {
|
||||||
|
clause = s.Sum.Field
|
||||||
|
} else {
|
||||||
|
var err error
|
||||||
|
clause, params, err = s.Sum.Condition.toSQLWhereClause(ctx, fmt.Sprintf("sel%d", idx), schema, orm.DefaultEncodeConfig)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("in $sum: %w", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
req.mergeParams(params)
|
req.mergeParams(params)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue