feat: add endpoint and logic for retrieving transaction chart data, including SQL queries, models, and service integration

This commit is contained in:
Tran Anh Tuan
2026-05-14 10:41:25 +07:00
parent 0a56dfeb61
commit 96bc22942b
11 changed files with 413 additions and 0 deletions

View File

@@ -63,3 +63,17 @@ JOIN rooms r ON cab.room_id = r.id
WHERE ci.status != 'normal'
AND (sqlc.narg('warehouse_id')::bigint IS NULL OR r.warehouse_id = sqlc.narg('warehouse_id')::bigint)
ORDER BY ci.updated_at DESC;
-- name: GetTransactionChartData :many
SELECT DATE(st.created_at) AS date, st.transaction_type, COALESCE(SUM(st.quantity), 0)::bigint AS total_quantity
FROM stock_transactions st
JOIN containers con ON st.container_id = con.id
JOIN shelves s ON con.shelf_id = s.id
JOIN cabinets cab ON s.cabinet_id = cab.id
JOIN rooms r ON cab.room_id = r.id
WHERE st.transaction_type IN ('import', 'export')
AND st.created_at >= sqlc.arg('start_date')::timestamptz
AND st.created_at < sqlc.arg('end_date')::timestamptz
AND (sqlc.narg('warehouse_id')::bigint IS NULL OR r.warehouse_id = sqlc.narg('warehouse_id')::bigint)
GROUP BY DATE(st.created_at), st.transaction_type
ORDER BY DATE(st.created_at) ASC;