30 lines
951 B
TypeScript
30 lines
951 B
TypeScript
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 || isNaN(Number(id))) {
|
|
return httpResponse({'error': 'no id provided'}, 400)
|
|
}
|
|
return getEntry(Number(id))
|
|
} catch (error) {
|
|
return httpResponse({ error: `Failed to retrieve entry: ${error}` }, 500);
|
|
}
|
|
}
|
|
|
|
async function getEntry(id: number) {
|
|
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)
|
|
}
|
|
|
|
} |