From cbc9abf67c4d757f3e3241fe6e4411ece94e23b2 Mon Sep 17 00:00:00 2001 From: Marios Antonoudiou Date: Thu, 3 Jul 2025 09:42:11 +0300 Subject: [PATCH] Migrate to tasks architecture --- .../webhooks/strava/activity-create.post.ts | 50 ------------------- .../webhooks/strava/athlete-update.post.ts | 19 ------- server/routes/webhooks/strava/index.get.ts | 5 -- server/routes/webhooks/strava/index.post.ts | 19 ------- shell.nix | 8 --- 5 files changed, 101 deletions(-) delete mode 100644 server/routes/webhooks/strava/activity-create.post.ts delete mode 100644 server/routes/webhooks/strava/athlete-update.post.ts delete mode 100644 server/routes/webhooks/strava/index.get.ts delete mode 100644 server/routes/webhooks/strava/index.post.ts delete mode 100644 shell.nix diff --git a/server/routes/webhooks/strava/activity-create.post.ts b/server/routes/webhooks/strava/activity-create.post.ts deleted file mode 100644 index ad0a7fa..0000000 --- a/server/routes/webhooks/strava/activity-create.post.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { createActivityContent } from "~~/server/utils/create-content"; - -export default defineEventHandler(async (event) => { - await validateHookdeck(event); - - const body = await readBody(event); - const db = useDrizzle(); - - const user = await db.query.users.findFirst({ - where: (f, o) => o.eq(f.id, body.owner_id), - with: { - preferences: true, - }, - }); - - if (!user?.preferences.data?.enabled) { - return; - } - - const strava = await useStrava(body.owner_id); - - const currentActivity = await strava!(`/activities/${body.object_id}`); - const [, ...previousActivities] = await strava!(`/activities`, { - query: { - per_page: 20, - }, - }); - - const [aiError, stravaRequestBody] = await createActivityContent({ - currentActivity, - previousActivities, - user: user!, - }).catch((err) => [err]); - if (aiError) { - throw createError({ - statusCode: 500, - message: `OPENAI API: ${aiError.message}`, - }); - } - - await strava!(`activities/${body.object_id}`, { - method: "PUT", - body: stravaRequestBody, - }).catch((error) => { - throw createError({ - statusCode: 500, - message: `Strava API: ${error.message}`, - }); - }); -}); diff --git a/server/routes/webhooks/strava/athlete-update.post.ts b/server/routes/webhooks/strava/athlete-update.post.ts deleted file mode 100644 index fb76fd1..0000000 --- a/server/routes/webhooks/strava/athlete-update.post.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { get } from "radash"; -import { eq } from "drizzle-orm"; - -export default defineEventHandler(async (event) => { - await validateHookdeck(event); - - const body = await readBody(event); - const db = useDrizzle(); - - if (get(body, "updates.authorized") !== false) { - return; - } - - await db - .delete(tables.users) - .where(eq(tables.users.id, get(body, "object_id"))); - - sendNoContent(event); -}); diff --git a/server/routes/webhooks/strava/index.get.ts b/server/routes/webhooks/strava/index.get.ts deleted file mode 100644 index 118ca4d..0000000 --- a/server/routes/webhooks/strava/index.get.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default defineEventHandler(async (event) => { - const query = getQuery(event); - - return { "hub.challenge": query["hub.challenge"] }; -}); diff --git a/server/routes/webhooks/strava/index.post.ts b/server/routes/webhooks/strava/index.post.ts deleted file mode 100644 index e8f21e7..0000000 --- a/server/routes/webhooks/strava/index.post.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { get } from "radash"; - -export default defineEventHandler(async (event) => { - await validateHookdeck(event); - - const config = useRuntimeConfig(); - const body = await readBody(event); - - const aspectType = get(body, "aspect_type"); - const objectType = get(body, "object_type"); - - await $fetch(`/webhooks/strava/${objectType}-${aspectType}`, { - method: "post", - body, - headers: { - "X-Hookdeck-Key": config.hookdeckKey, - }, - }); -}); diff --git a/shell.nix b/shell.nix deleted file mode 100644 index e80e497..0000000 --- a/shell.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs ? import {} }: - -pkgs.mkShell { - buildInputs = [ - pkgs.nodejs - pkgs.git - ]; -}