fix(analytics): handle statDate as string from database

- Fix toDto method to handle statDate being string or Date
- Fix getTrendData method to handle statDate being string or Date
- PostgreSQL date type returns string, not Date object

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2026-01-26 08:40:09 -08:00
parent 9dbd54aefb
commit dcff831e7d
1 changed files with 9 additions and 2 deletions

View File

@ -133,7 +133,9 @@ export class StatisticsAggregationService {
const result: Record<string, TrendDataPoint[]> = {};
for (const metric of params.metrics) {
result[metric] = filtered.map(s => ({
date: s.statDate.toISOString().split('T')[0],
date: s.statDate instanceof Date
? s.statDate.toISOString().split('T')[0]
: String(s.statDate).split('T')[0],
// eslint-disable-next-line @typescript-eslint/no-explicit-any
value: Number((s as any)[metric] || 0),
}));
@ -373,8 +375,13 @@ export class StatisticsAggregationService {
}
private toDto(orm: DailyStatisticsORM): DailyStatisticsDto {
// Handle statDate being either Date or string
const statDateStr = orm.statDate instanceof Date
? orm.statDate.toISOString().split('T')[0]
: String(orm.statDate).split('T')[0];
return {
statDate: orm.statDate.toISOString().split('T')[0],
statDate: statDateStr,
dimension: orm.dimension,
dimensionValue: orm.dimensionValue,
newUsers: Number(orm.newUsers),