mirror of
https://github.com/BradNut/boredgame
synced 2025-09-08 17:40:22 +00:00
96 lines
1.9 KiB
TypeScript
96 lines
1.9 KiB
TypeScript
|
|
import { redirect } from '@sveltejs/kit';
|
||
|
|
import { superValidate } from 'sveltekit-superforms/server';
|
||
|
|
import prisma from '$lib/prisma.js';
|
||
|
|
import { list_game_request_schema } from '$lib/zodValidation';
|
||
|
|
|
||
|
|
export async function load({ params, locals }) {
|
||
|
|
const session = await locals.auth.validate();
|
||
|
|
if (!session) {
|
||
|
|
throw redirect(302, '/auth/signin');
|
||
|
|
}
|
||
|
|
|
||
|
|
try {
|
||
|
|
let wishlists = await prisma.wishlist.findMany({
|
||
|
|
where: {
|
||
|
|
user_id: session.userId
|
||
|
|
},
|
||
|
|
include: {
|
||
|
|
items: true
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
if (wishlists.length === 0) {
|
||
|
|
const wishlist = await prisma.wishlist.create({
|
||
|
|
data: {
|
||
|
|
user_id: session.userId,
|
||
|
|
name: 'My Wishlist'
|
||
|
|
}
|
||
|
|
});
|
||
|
|
wishlists.push(wishlist);
|
||
|
|
}
|
||
|
|
|
||
|
|
return {
|
||
|
|
wishlists
|
||
|
|
};
|
||
|
|
} catch (e) {
|
||
|
|
console.error(e);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
export const actions = {
|
||
|
|
// Add game to a wishlist
|
||
|
|
add: async (event) => {
|
||
|
|
const { params, locals, request } = event;
|
||
|
|
const form = await superValidate(event, list_game_request_schema);
|
||
|
|
|
||
|
|
const session = await locals.auth.validate();
|
||
|
|
if (!session) {
|
||
|
|
throw redirect(302, '/auth/signin');
|
||
|
|
}
|
||
|
|
|
||
|
|
const game = await prisma.game.findUnique({
|
||
|
|
where: {
|
||
|
|
id: form.id
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// if (!game) {
|
||
|
|
// throw redirect(302, '/404');
|
||
|
|
// }
|
||
|
|
|
||
|
|
if (game) {
|
||
|
|
const wishlist = await prisma.wishlist.create({
|
||
|
|
data: {
|
||
|
|
user_id: session.userId,
|
||
|
|
name: form.name
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
return {
|
||
|
|
form
|
||
|
|
};
|
||
|
|
},
|
||
|
|
// Create new wishlist
|
||
|
|
create: async ({ params, locals, request }) => {
|
||
|
|
const session = await locals.auth.validate();
|
||
|
|
if (!session) {
|
||
|
|
throw redirect(302, '/auth/signin');
|
||
|
|
}
|
||
|
|
},
|
||
|
|
// Delete a wishlist
|
||
|
|
delete: async ({ params, locals, request }) => {
|
||
|
|
const session = await locals.auth.validate();
|
||
|
|
if (!session) {
|
||
|
|
throw redirect(302, '/auth/signin');
|
||
|
|
}
|
||
|
|
},
|
||
|
|
// Remove game from a wishlist
|
||
|
|
remove: async ({ params, locals, request }) => {
|
||
|
|
const session = await locals.auth.validate();
|
||
|
|
if (!session) {
|
||
|
|
throw redirect(302, '/auth/signin');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|