mirror of
https://github.com/eliasstepanik/core.git
synced 2026-01-11 17:58:28 +00:00
* Feat: clustering fact statements * Feat: cluster drift * Feat: add recall count and model to search * Feat: Github integration * Fix: clustering UI * Improve graph * Bump: new version --------- Co-authored-by: Manoj K <saimanoj58@gmail.com>
68 lines
1.6 KiB
TypeScript
68 lines
1.6 KiB
TypeScript
import { type LoaderFunctionArgs, json } from "@remix-run/node";
|
|
import { requireUserId } from "~/services/session.server";
|
|
import { prisma } from "~/db.server";
|
|
|
|
export async function loader({ request }: LoaderFunctionArgs) {
|
|
const userId = await requireUserId(request);
|
|
|
|
// Get user's workspace
|
|
const user = await prisma.user.findUnique({
|
|
where: { id: userId },
|
|
select: { Workspace: { select: { id: true } } },
|
|
});
|
|
|
|
if (!user?.Workspace) {
|
|
throw new Response("Workspace not found", { status: 404 });
|
|
}
|
|
|
|
// Get activity data for the last year
|
|
const oneYearAgo = new Date();
|
|
oneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);
|
|
|
|
const activities = await prisma.ingestionQueue.findMany({
|
|
where: {
|
|
workspaceId: user.Workspace.id,
|
|
createdAt: {
|
|
gte: oneYearAgo,
|
|
},
|
|
},
|
|
select: {
|
|
createdAt: true,
|
|
status: true,
|
|
},
|
|
orderBy: {
|
|
createdAt: "desc",
|
|
},
|
|
});
|
|
|
|
// Group activities by date
|
|
const activityByDate = activities.reduce(
|
|
(acc, activity) => {
|
|
const date = activity.createdAt.toISOString().split("T")[0];
|
|
if (!acc[date]) {
|
|
acc[date] = { count: 0, status: activity.status };
|
|
}
|
|
acc[date].count += 1;
|
|
return acc;
|
|
},
|
|
{} as Record<string, { count: number; status: string }>,
|
|
);
|
|
|
|
// Convert to array format for the component
|
|
const contributionData = Object.entries(activityByDate).map(
|
|
([date, data]) => ({
|
|
date,
|
|
count: data.count,
|
|
status: data.status,
|
|
}),
|
|
);
|
|
|
|
return json({
|
|
success: true,
|
|
data: {
|
|
contributionData,
|
|
totalActivities: activities.length,
|
|
},
|
|
});
|
|
}
|