From b0b6557464f4b6c2e3cd6e67c2db73b72138fc5e Mon Sep 17 00:00:00 2001 From: Patrick Date: Sun, 19 Oct 2025 17:12:04 +0200 Subject: [PATCH] added basic task endpoint --- src/routes/api/users/tasks/+server.ts | 31 ++++++++++++++++++++ src/routes/api/users/tasks/create/+server.ts | 29 ++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/routes/api/users/tasks/+server.ts create mode 100644 src/routes/api/users/tasks/create/+server.ts diff --git a/src/routes/api/users/tasks/+server.ts b/src/routes/api/users/tasks/+server.ts new file mode 100644 index 0000000..ae0d829 --- /dev/null +++ b/src/routes/api/users/tasks/+server.ts @@ -0,0 +1,31 @@ +import type { RequestHandler } from "./$types"; + +import { json, error } from "@sveltejs/kit" + +import { Error401Cause } from "$lib/errors"; + +import db from "$lib/server/database" + +enum StatusFilterValues { + all, + open, + done, +} + +export const GET: RequestHandler = async ({ request, locals, url }) => { + + const filter_param = url.searchParams.get("status") + const filter = (filter_param && filter_param in StatusFilterValues) + ? StatusFilterValues[filter_param as keyof typeof StatusFilterValues] + : StatusFilterValues.all + + const tasks = await db.task.findMany({ + where: { + userId: { + equals: locals.user.id + } + } + }) + + return json(tasks) +} diff --git a/src/routes/api/users/tasks/create/+server.ts b/src/routes/api/users/tasks/create/+server.ts new file mode 100644 index 0000000..014c185 --- /dev/null +++ b/src/routes/api/users/tasks/create/+server.ts @@ -0,0 +1,29 @@ +import type { RequestHandler } from "./$types"; + +import { json, error } from "@sveltejs/kit" + +import db from "$lib/server/database" + +export const POST: RequestHandler = async ({ request, locals }) => { + + const data = await request.formData() + + const content = data.get("content") + + if (!content || typeof content !== "string") { + return error(400, { message: "content must be specified" }) + } + + const task = await db.task.create({ + data: { + content: content, + user: { + connect: { + id: locals.user.id + } + } + } + }) + + return json(task) +}