fix: complete analytics edge cases

This commit is contained in:
2026-08-21 06:13:23 +03:00
parent d86624b9ef
commit 7154e8f2ea
9 changed files with 56 additions and 8 deletions

View File

@@ -14,6 +14,7 @@ interface BaseParams {
from: string;
to: string;
accountId?: number;
categoryId?: number;
onlyConfirmed?: boolean;
}
@@ -61,6 +62,13 @@ function buildBaseConditions(
values.push(params.accountId);
idx++;
}
if (params.categoryId != null) {
conditions.push(params.categoryId === 0 ? 't.category_id IS NULL' : `t.category_id = $${idx}`);
if (params.categoryId !== 0) {
values.push(params.categoryId);
idx++;
}
}
if (params.onlyConfirmed) {
conditions.push('t.is_category_confirmed = TRUE');
}
@@ -196,6 +204,8 @@ export async function getTimeseries(
}
const txConditions: string[] = [
't.operation_at::date >= $1::date',
't.operation_at::date <= $2::date',
't.operation_at::date >= p.period_start',
't.operation_at::date <= p.period_end',
];
@@ -207,8 +217,11 @@ export async function getTimeseries(
values.push(params.accountId);
}
if (params.categoryId != null) {
txConditions.push(`t.category_id = $${idx++}`);
values.push(params.categoryId);
if (params.categoryId === 0) txConditions.push('t.category_id IS NULL');
else {
txConditions.push(`t.category_id = $${idx++}`);
values.push(params.categoryId);
}
}
if (params.onlyConfirmed) {
txConditions.push('t.is_category_confirmed = TRUE');