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