first commit
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import {
|
||||
getDayOfWeekAnalytics,
|
||||
getMonthOfYearAnalytics,
|
||||
getSeasonalityByAttribute,
|
||||
} from '@/lib/analytics/seasonality.service';
|
||||
import { parseAnalyticsParams } from '../_utils';
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
try {
|
||||
const filters = parseAnalyticsParams(request);
|
||||
const { searchParams } = new URL(request.url);
|
||||
const view = searchParams.get('view') || 'day-of-week';
|
||||
const attribute = searchParams.get('attribute') as 'size' | 'color' | null;
|
||||
|
||||
let result;
|
||||
switch (view) {
|
||||
case 'month-of-year':
|
||||
result = await getMonthOfYearAnalytics(filters);
|
||||
break;
|
||||
case 'by-attribute':
|
||||
if (attribute && ['size', 'color'].includes(attribute)) {
|
||||
result = await getSeasonalityByAttribute(filters, attribute);
|
||||
} else {
|
||||
return NextResponse.json(
|
||||
{ error: 'attribute parameter required (size or color)' },
|
||||
{ status: 422 },
|
||||
);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
result = await getDayOfWeekAnalytics(filters);
|
||||
}
|
||||
|
||||
return NextResponse.json(result);
|
||||
} catch (error) {
|
||||
console.error('GET /api/analytics/seasonality error:', error);
|
||||
return NextResponse.json({ error: 'Failed to fetch seasonality analytics' }, { status: 500 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user