From 3d5c715b0908b037f184a6074b3e0afef4a91cd0 Mon Sep 17 00:00:00 2001 From: JefQuidousse2 Date: Tue, 1 Oct 2024 10:42:34 +0200 Subject: [PATCH 1/3] init --- prisma/schema.prisma | 6 ++++++ src/app/find-the-expert/[role]/page.tsx | 6 ++++-- src/server/log.ts | 9 +++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/server/log.ts diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 758b819..83d819a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -110,3 +110,9 @@ model VerificationToken { @@unique([identifier, token]) } + +model UsageMetrics { + id String @id @default(cuid()) + action String + createdAt DateTime @default(now()) +} \ No newline at end of file diff --git a/src/app/find-the-expert/[role]/page.tsx b/src/app/find-the-expert/[role]/page.tsx index 66ef65d..7ffad36 100644 --- a/src/app/find-the-expert/[role]/page.tsx +++ b/src/app/find-the-expert/[role]/page.tsx @@ -7,6 +7,7 @@ import ButtonSkeleton from "~/components/loading/button-loader"; import { Login } from "~/components/login"; import ShowDataTable from "~/components/show-data-table"; import { getServerAuthSession } from "~/server/auth"; +import { logUsageMetric } from "~/server/log"; import { extractUniqueIds, fetchUserAnswersForRole, @@ -37,9 +38,10 @@ const ContentSection = () => ( ); -const FindTheExpertPage = async () => { +const FindTheExpertPage = async (context: { params: { role: any; }; }) => { const session = await getServerAuthSession(); - + await logUsageMetric("Find The Expert Page Accessed For Role: " + context.params.role); + return (

diff --git a/src/server/log.ts b/src/server/log.ts new file mode 100644 index 0000000..6b583cd --- /dev/null +++ b/src/server/log.ts @@ -0,0 +1,9 @@ +import { db } from "./db" + +export const logUsageMetric = async (action: string) => { + await db.usageMetrics.create({ + data: { + action: action + } + }); +} \ No newline at end of file From eba55ca17219b967e21a53cffa873104cbd86d68 Mon Sep 17 00:00:00 2001 From: JefQuidousse2 Date: Wed, 9 Oct 2024 16:28:23 +0200 Subject: [PATCH 2/3] refactor logging --- src/app/find-the-expert/[role]/page.tsx | 4 ++-- .../additional-buttons-homepage.tsx | 13 ++++++++++-- src/components/select-role.tsx | 6 ++++++ src/server/api/root.ts | 2 ++ src/server/log.ts | 21 ++++++++++++------- 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/src/app/find-the-expert/[role]/page.tsx b/src/app/find-the-expert/[role]/page.tsx index 7ffad36..680a921 100644 --- a/src/app/find-the-expert/[role]/page.tsx +++ b/src/app/find-the-expert/[role]/page.tsx @@ -7,7 +7,7 @@ import ButtonSkeleton from "~/components/loading/button-loader"; import { Login } from "~/components/login"; import ShowDataTable from "~/components/show-data-table"; import { getServerAuthSession } from "~/server/auth"; -import { logUsageMetric } from "~/server/log"; +import { api } from "~/trpc/server"; import { extractUniqueIds, fetchUserAnswersForRole, @@ -40,7 +40,7 @@ const ContentSection = () => ( const FindTheExpertPage = async (context: { params: { role: any; }; }) => { const session = await getServerAuthSession(); - await logUsageMetric("Find The Expert Page Accessed For Role: " + context.params.role); + api.usageMetricLogger.logUsageMetric.mutate({logMessage: 'find-the-expert-page-filtered-on-role'}); return (
diff --git a/src/components/additional-buttons-homepage.tsx b/src/components/additional-buttons-homepage.tsx index d131ea9..5ea0420 100644 --- a/src/components/additional-buttons-homepage.tsx +++ b/src/components/additional-buttons-homepage.tsx @@ -5,8 +5,15 @@ import { Login } from "./login"; import { Button } from "./ui/button"; import { ArrowRightDarkModeFriendly } from "./svg"; import { signIn } from "next-auth/react"; +import { api } from "~/trpc/react"; const Buttons = ({ session }: { session: Session | null }) => { + const {mutate: logUsageMetric} = api.usageMetricLogger.logUsageMetric.useMutation(); + + const handleLogging = () => { + logUsageMetric({logMessage:'find-the-expert-page-accessed'}); + } + return (
@@ -24,8 +31,10 @@ const Buttons = ({ session }: { session: Session | null }) => {