diff options
| author | Yuval Adam <_@yuv.al> | 2025-06-27 10:10:56 +0200 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2025-06-27 10:10:56 +0200 |
| commit | 2ad5ce929f6d69c9aaca71573744b30e02ab8bed (patch) | |
| tree | 078cd3b8a968ebfd99e86492abb9564f183ec21a /src/pages/api/tasks | |
| parent | 0282fb367ecfd3864cf94c27a44961a61e2ff6f2 (diff) | |
Add cloudflare basic impl
Diffstat (limited to 'src/pages/api/tasks')
| -rw-r--r-- | src/pages/api/tasks/[id].ts | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/pages/api/tasks/[id].ts b/src/pages/api/tasks/[id].ts new file mode 100644 index 0000000..e9341b6 --- /dev/null +++ b/src/pages/api/tasks/[id].ts @@ -0,0 +1,57 @@ +import type { APIRoute } from 'astro'; + +export const PUT: APIRoute = async ({ params, request, locals }) => { + try { + const db = locals.runtime.env.DB; + const id = params.id; + const body = await request.json(); + const { title, description, completed } = body; + + const { results } = await db.prepare( + 'UPDATE tasks SET title = ?, description = ?, completed = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ? RETURNING *' + ).bind(title, description || '', completed || false, id).all(); + + if (results.length === 0) { + return new Response(JSON.stringify({ error: 'Task not found' }), { + status: 404, + headers: { 'Content-Type': 'application/json' } + }); + } + + return new Response(JSON.stringify(results[0]), { + status: 200, + headers: { 'Content-Type': 'application/json' } + }); + } catch (error) { + return new Response(JSON.stringify({ error: 'Failed to update task' }), { + status: 500, + headers: { 'Content-Type': 'application/json' } + }); + } +}; + +export const DELETE: APIRoute = async ({ params, locals }) => { + try { + const db = locals.runtime.env.DB; + const id = params.id; + + const { success } = await db.prepare('DELETE FROM tasks WHERE id = ?').bind(id).run(); + + if (!success) { + return new Response(JSON.stringify({ error: 'Task not found' }), { + status: 404, + headers: { 'Content-Type': 'application/json' } + }); + } + + return new Response(JSON.stringify({ message: 'Task deleted successfully' }), { + status: 200, + headers: { 'Content-Type': 'application/json' } + }); + } catch (error) { + return new Response(JSON.stringify({ error: 'Failed to delete task' }), { + status: 500, + headers: { 'Content-Type': 'application/json' } + }); + } +};
\ No newline at end of file |
