diff --git a/internal/repository/jobQuery.go b/internal/repository/jobQuery.go index c3fbe042..aacdebce 100644 --- a/internal/repository/jobQuery.go +++ b/internal/repository/jobQuery.go @@ -276,28 +276,26 @@ func BuildWhereClause(filter *model.JobFilter, query sq.SelectBuilder) sq.Select return query } -// buildIntCondition creates a BETWEEN clause for integer range filters. -// Reminder: BETWEEN Queries are slower and dont use indices as frequently: Only use if both conditions required +// buildIntCondition creates clauses for integer range filters, using BETWEEN only if required. func buildIntCondition(field string, cond *config.IntRange, query sq.SelectBuilder) sq.SelectBuilder { - if cond.From != 0 && cond.To != 0 { + if cond.From != 1 && cond.To != 0 { return query.Where(field+" BETWEEN ? AND ?", cond.From, cond.To) - } else if cond.From != 0 { + } else if cond.From != 1 && cond.To == 0 { return query.Where(field+" >= ?", cond.From) - } else if cond.To != 0 { + } else if cond.From == 1 && cond.To != 0 { return query.Where(field+" <= ?", cond.To) } else { return query } } -// buildFloatCondition creates a BETWEEN clause for float range filters. -// Reminder: BETWEEN Queries are slower and dont use indices as frequently: Only use if both conditions required +// buildFloatCondition creates a clauses for float range filters, using BETWEEN only if required. func buildFloatCondition(field string, cond *model.FloatRange, query sq.SelectBuilder) sq.SelectBuilder { - if cond.From != 0.0 && cond.To != 0.0 { + if cond.From != 1.0 && cond.To != 0.0 { return query.Where(field+" BETWEEN ? AND ?", cond.From, cond.To) - } else if cond.From != 0.0 { + } else if cond.From != 1.0 && cond.To == 0.0 { return query.Where(field+" >= ?", cond.From) - } else if cond.To != 0.0 { + } else if cond.From == 1.0 && cond.To != 0.0 { return query.Where(field+" <= ?", cond.To) } else { return query @@ -336,16 +334,15 @@ func buildTimeCondition(field string, cond *config.TimeRange, query sq.SelectBui } } -// buildFloatJSONCondition creates a filter on a numeric field within the footprint JSON column. -// Reminder: BETWEEN Queries are slower and dont use indices as frequently: Only use if both conditions required -func buildFloatJSONCondition(condName string, condRange *model.FloatRange, query sq.SelectBuilder) sq.SelectBuilder { +// buildFloatJSONCondition creates a filter on a numeric field within the footprint JSON column, using BETWEEN only if required. +func buildFloatJSONCondition(field string, cond *model.FloatRange, query sq.SelectBuilder) sq.SelectBuilder { query = query.Where("JSON_VALID(footprint)") - if condRange.From != 0.0 && condRange.To != 0.0 { - return query.Where("JSON_EXTRACT(footprint, \"$."+condName+"\") BETWEEN ? AND ?", condRange.From, condRange.To) - } else if condRange.From != 0.0 { - return query.Where("JSON_EXTRACT(footprint, \"$."+condName+"\") >= ?", condRange.From) - } else if condRange.To != 0.0 { - return query.Where("JSON_EXTRACT(footprint, \"$."+condName+"\") <= ?", condRange.To) + if cond.From != 1.0 && cond.To != 0.0 { + return query.Where("JSON_EXTRACT(footprint, \"$."+field+"\") BETWEEN ? AND ?", cond.From, cond.To) + } else if cond.From != 1.0 && cond.To == 0.0 { + return query.Where("JSON_EXTRACT(footprint, \"$."+field+"\") >= ?", cond.From) + } else if cond.From == 1.0 && cond.To != 0.0 { + return query.Where("JSON_EXTRACT(footprint, \"$."+field+"\") <= ?", cond.To) } else { return query } diff --git a/web/frontend/src/generic/filters/Energy.svelte b/web/frontend/src/generic/filters/Energy.svelte index 648fdb4d..dc532c86 100644 --- a/web/frontend/src/generic/filters/Energy.svelte +++ b/web/frontend/src/generic/filters/Energy.svelte @@ -29,7 +29,7 @@ /* Const */ const minEnergyPreset = 1; - const maxEnergyPreset = 1000; + const maxEnergyPreset = 100; /* Derived */ // Pending