Provide your own database helper in src/lib/server/db.js. Its async createTodo(task) function saves a todo.
Export actions from +page.server.js. The default action handles a POST to this page.
Validate on the server. fail returns a status and data to the form without creating a todo.
After saving, return data for the page's form prop.
import { createTodo } from '#lib/server/db.js';
import { fail } from '@sveltejs/kit';
/** @type {import('./$types').Actions} */
export const actions = {
default: async ({ request }) => {
const fields = await request.formData();
const task = String(fields.get('task') ?? '').trim();
if (!task) {
return fail(400, { task, message: 'Please enter a todo.' });
}
await createTodo(task);
return { task: '', message: 'Todo created!' };
},
};