From 3f61caf04f9985d59b14023a0c0bd445813a67a1 Mon Sep 17 00:00:00 2001 From: June Date: Tue, 13 Jan 2026 11:50:15 +1300 Subject: [PATCH] endpoint to get one entry by id --- src/pages/api/entry/[id].ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/pages/api/entry/[id].ts diff --git a/src/pages/api/entry/[id].ts b/src/pages/api/entry/[id].ts new file mode 100644 index 0000000..a44a962 --- /dev/null +++ b/src/pages/api/entry/[id].ts @@ -0,0 +1,30 @@ +import type { APIContext } from 'astro'; +import { eq } from 'drizzle-orm'; +import { db } from '../../../utils/db'; +import { entryTable } from '../../../db/schema'; +import { httpResponse } from '../../../utils/response'; + +export async function GET({ params }: APIContext) { + try { + const { id } = params + if (!id) { + return httpResponse({'error': 'no id provided'}, 400) + } + return getEntry(id) + } catch (error) { + return httpResponse({ error: `Failed to retrieve entry: ${error}` }, 500); + } +} + +async function getEntry(id) { + try { + const entry = await db.select().from(entryTable).where(eq(entryTable.id, id)) + if (entry.length == 0) { + return httpResponse({'error': 'entry not found'}, 404) + } + return httpResponse(entry[0], 200) + } catch { + return httpResponse({'error': 'bad request'}, 400) + } + +} \ No newline at end of file