Skip to content

Commit

Permalink
In statistics queries, group by absolute measure value without using …
Browse files Browse the repository at this point in the history
…display unit
  • Loading branch information
pylipp committed Oct 1, 2024
1 parent 93e5825 commit 563c477
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 9 deletions.
5 changes: 3 additions & 2 deletions back/boxtribute_server/business_logic/statistics/crud.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from functools import wraps

from peewee import JOIN, SQL, fn
from peewee import JOIN, SQL, Case, fn

from ...db import db
from ...enums import BoxState, HumanGender, TaggableObjectType, TargetType
Expand Down Expand Up @@ -433,7 +433,8 @@ def compute_stock_overview(base_id):
Product.category.alias("category_id"),
fn.TRIM(fn.LOWER(Product.name)).alias("product_name"),
fn.CONCAT(
fn.ROUND(boxes.c.measure_value * Unit.conversion_factor, 2), Unit.symbol
fn.ROUND(boxes.c.measure_value, 3),
Case(Unit.dimension_id, ((28, "kg"), (29, "l")), ""),
).alias("measure_name"),
Product.gender.alias("gender"),
boxes.c.tag_ids,
Expand Down
24 changes: 18 additions & 6 deletions back/boxtribute_server/business_logic/statistics/sql.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,9 @@
TRIM(LOWER(p.name)) AS product_name,
p.gender_id AS gender,
t.size_id,
CONCAT(ROUND(t.stock_measure_value * u.conversion_factor, 2), u.symbol) AS measure_name,
CONCAT(ROUND(t.stock_measure_value, 3),
CASE u.dimension_id WHEN 28 THEN 'kg' WHEN 29 THEN 'l' ELSE '' END
) AS measure_name,
GROUP_CONCAT(DISTINCT tr.tag_id) AS tag_ids,
"Deleted" AS target_id,
NULL AS organisation_name,
Expand All @@ -244,7 +246,9 @@
TRIM(LOWER(p.name)) AS product_name,
p.gender_id AS gender,
t.size_id,
CONCAT(ROUND(t.stock_measure_value * u.conversion_factor, 2), u.symbol) AS measure_name,
CONCAT(ROUND(t.stock_measure_value, 3),
CASE u.dimension_id WHEN 28 THEN 'kg' WHEN 29 THEN 'l' ELSE '' END
) AS measure_name,
GROUP_CONCAT(DISTINCT tr.tag_id) AS tag_ids,
"Deleted" AS target_id,
NULL AS organisation_name,
Expand All @@ -267,7 +271,9 @@
TRIM(LOWER(p.name)) AS product_name,
p.gender_id AS gender,
t.size_id,
CONCAT(ROUND(t.stock_measure_value * u.conversion_factor, 2), u.symbol) AS measure_name,
CONCAT(ROUND(t.stock_measure_value, 3),
CASE u.dimension_id WHEN 28 THEN 'kg' WHEN 29 THEN 'l' ELSE '' END
) AS measure_name,
GROUP_CONCAT(DISTINCT tr.tag_id) AS tag_ids,
loc.label AS target_id,
NULL AS organisation_name,
Expand All @@ -290,7 +296,9 @@
TRIM(LOWER(p.name)) AS product_name,
p.gender_id AS gender,
t.size_id,
CONCAT(ROUND(t.stock_measure_value * u.conversion_factor, 2), u.symbol) AS measure_name,
CONCAT(ROUND(t.stock_measure_value, 3),
CASE u.dimension_id WHEN 28 THEN 'kg' WHEN 29 THEN 'l' ELSE '' END
) AS measure_name,
GROUP_CONCAT(DISTINCT tr.tag_id) AS tag_ids,
loc.label AS target_id,
NULL AS organisation_name,
Expand Down Expand Up @@ -329,7 +337,9 @@
p.gender_id AS gender,
d.source_size_id AS size_id,
-- neglect possible history of box's measure_value
CONCAT(ROUND(b.measure_value * u.conversion_factor, 2), u.symbol) AS measure_name,
CONCAT(ROUND(b.measure_value, 3),
CASE u.dimension_id WHEN 28 THEN 'kg' WHEN 29 THEN 'l' ELSE '' END
) AS measure_name,
GROUP_CONCAT(DISTINCT tr.tag_id) AS tag_ids,
c.name AS target_id,
o.label AS organisation_name,
Expand Down Expand Up @@ -364,7 +374,9 @@
TRIM(LOWER(p.name)) AS product_name,
p.gender_id AS gender,
b.size_id,
CONCAT(ROUND(b.measure_value * u.conversion_factor, 2), u.symbol) AS measure_name,
CONCAT(ROUND(b.measure_value, 3),
CASE u.dimension_id WHEN 28 THEN 'kg' WHEN 29 THEN 'l' ELSE '' END
) AS measure_name,
GROUP_CONCAT(DISTINCT tr.tag_id) AS tag_ids,
bs.label AS target_id,
NULL AS organisation_name,
Expand Down
2 changes: 1 addition & 1 deletion back/test/endpoint_tests/test_statistics.py
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ def test_query_stock_overview(
"locationId": 1,
"productName": "rice",
"sizeId": None,
"measureName": "500.00g",
"measureName": "0.500kg",
"tagIds": [],
},
]
Expand Down

0 comments on commit 563c477

Please sign in to comment.