export const getActivityMetrics = createServerFn({
method: 'POST',
})
.middleware([userAuthMiddleware, apiAuthMiddleware])
.validator(
zodValidator(
z.object({
startDate: z.string().datetime(),
endDate: z.string().datetime(),
studentId: z.string(),
timezone: z.string().optional(),
})
)
)
.handler(async ({ context, data }) => {
const { cognitoUser, analyticsApi } = context;
if (!cognitoUser) {
setResponseStatus(401);
return {
success: false,
data: null,
error: 'Unauthorized',
};
}
const { startDate, endDate, studentId, timezone } = data;
try {
const response = await fetchActivityMetrics(analyticsApi, {
startDate,
endDate,
studentId,
timezone,
});
return {
success: true,
data: response,
};
} catch (error) {
return handleServerFnError(
error,
{
service: 'analytics-api',
function: 'getActivityMetrics',
endpoint: '/api/reports/activity',
userId: cognitoUser.sub,
},
{
statusCode: 500,
clientMessage: 'Failed to fetch activity metrics',
}
);
}
});
export const getActivityMetrics = createServerFn({
method: 'POST',
})
.middleware([userAuthMiddleware, apiAuthMiddleware])
.validator(
zodValidator(
z.object({
startDate: z.string().datetime(),
endDate: z.string().datetime(),
studentId: z.string(),
timezone: z.string().optional(),
})
)
)
.handler(async ({ context, data }) => {
const { cognitoUser, analyticsApi } = context;
if (!cognitoUser) {
setResponseStatus(401);
return {
success: false,
data: null,
error: 'Unauthorized',
};
}
const { startDate, endDate, studentId, timezone } = data;
try {
const response = await fetchActivityMetrics(analyticsApi, {
startDate,
endDate,
studentId,
timezone,
});
return {
success: true,
data: response,
};
} catch (error) {
return handleServerFnError(
error,
{
service: 'analytics-api',
function: 'getActivityMetrics',
endpoint: '/api/reports/activity',
userId: cognitoUser.sub,
},
{
statusCode: 500,
clientMessage: 'Failed to fetch activity metrics',
}
);
}
});