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) +}