66 lines
1.5 KiB
TypeScript
66 lines
1.5 KiB
TypeScript
|
import type { Actions, Load } from '@sveltejs/kit';
|
||
|
import { Recipe } from '../../../models/Recipe';
|
||
|
import { dbConnect, dbDisconnect } from '../../../utils/db';
|
||
|
import { redirect } from '@sveltejs/kit';
|
||
|
|
||
|
export const load: Load = async () => {
|
||
|
await dbConnect();
|
||
|
let todos = await Recipe.find().lean();
|
||
|
await dbDisconnect();
|
||
|
todos = JSON.parse(JSON.stringify(todos));
|
||
|
todos = todos.reverse();
|
||
|
return {
|
||
|
todos,
|
||
|
};
|
||
|
};
|
||
|
|
||
|
export const actions: Actions = {
|
||
|
create: async ({ request }) => {
|
||
|
const formData = await request.formData();
|
||
|
const todoName = formData.get('todoName');
|
||
|
|
||
|
const newTodo = {
|
||
|
title: todoName,
|
||
|
isDone: false,
|
||
|
};
|
||
|
|
||
|
await dbConnect();
|
||
|
await Recipe.create(newTodo);
|
||
|
await dbDisconnect();
|
||
|
|
||
|
console.log('New todo added: ', newTodo);
|
||
|
return {
|
||
|
success: true,
|
||
|
};
|
||
|
},
|
||
|
update: async ({ request }) => {
|
||
|
const formData = await request.formData();
|
||
|
const todoId = formData.get('todoId');
|
||
|
const todoName = formData.get('todoName');
|
||
|
await dbConnect();
|
||
|
await Recipe.findByIdAndUpdate(todoId, {
|
||
|
title: todoName,
|
||
|
}).lean();
|
||
|
await dbDisconnect();
|
||
|
|
||
|
console.log('Todo updated: ', todoId);
|
||
|
|
||
|
return {
|
||
|
success: true,
|
||
|
};
|
||
|
},
|
||
|
|
||
|
delete: async ({ request }) => {
|
||
|
const formData = await request.formData();
|
||
|
const todoId = formData.get('todoId');
|
||
|
await dbConnect();
|
||
|
await Recipe.findByIdAndDelete(todoId);
|
||
|
await dbDisconnect();
|
||
|
|
||
|
console.log('Todo deleted: ', todoId);
|
||
|
return {
|
||
|
success: true,
|
||
|
};
|
||
|
},
|
||
|
};
|