boredgame/oldApis/wishlist/[id]/search/+server.ts

62 lines
1.5 KiB
TypeScript

import { error, json } from '@sveltejs/kit';
import { eq } from 'drizzle-orm';
import db from '../../../../../db';
import { wishlist_items, wishlists } from '$db/schema';
// Search a user's collection
export async function GET({ url, locals, params }) {
const searchParams = Object.fromEntries(url.searchParams);
// const q = searchParams?.q || '';
const limit = parseInt(searchParams?.limit) || 10;
const skip = parseInt(searchParams?.skip) || 0;
const order = searchParams?.order || 'asc';
const wishlist_id = params.id;
console.log('url', url);
console.log('username', locals?.user?.id);
if (!locals.user) {
return new Response(null, {
status: 401,
});
}
const wishlist = await db.query.wishlists.findFirst({
where: eq(wishlists.user_id, locals?.user?.id),
});
console.log('wishlist', wishlist);
if (!wishlist) {
console.log('Wishlist was not found');
error(404, { message: 'Wishlist was not found' });
}
try {
const itemsInWishlist = await db.query.wishlist_items.findMany({
where: eq(wishlist_items.wishlist_id, wishlist_id),
with: {
game: {
columns: {
id: true,
name: true,
thumb_url: true,
},
},
},
orderBy: (wishlist_items, { asc, desc }) => {
const dbSort = wishlist_items.created_at;
if (order === 'asc') {
return asc(dbSort);
} else {
return desc(dbSort);
}
},
offset: skip,
limit,
});
return json(itemsInWishlist);
} catch (e) {
console.error(e);
error(500, { message: 'Something went wrong' });
}
}