2022-04-21 02:41:26 +00:00
|
|
|
import type { RequestHandler } from "@sveltejs/kit";
|
2022-04-24 23:38:12 +00:00
|
|
|
import type { SearchQuery } from "$lib/types";
|
2022-04-21 02:41:26 +00:00
|
|
|
|
|
|
|
|
export const post: RequestHandler = async ({ request }) => {
|
|
|
|
|
const form = await request.formData();
|
2022-04-24 23:38:12 +00:00
|
|
|
console.log('form', form);
|
2022-04-25 01:00:27 +00:00
|
|
|
const queryParams: SearchQuery = {
|
2022-04-21 02:41:26 +00:00
|
|
|
order_by: 'rank',
|
|
|
|
|
ascending: false,
|
2022-04-25 01:00:27 +00:00
|
|
|
limit: 20,
|
2022-04-21 02:41:26 +00:00
|
|
|
client_id: import.meta.env.VITE_PUBLIC_CLIENT_ID,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const minAge = form.get('minAge');
|
|
|
|
|
const minPlayers = form.get('minPlayers');
|
|
|
|
|
const maxPlayers = form.get('maxPlayers');
|
2022-04-24 23:38:12 +00:00
|
|
|
const exactMinAge = form.get('exactMinAge') || false;
|
|
|
|
|
const exactMinPlayers = form.get('exactMinPlayers') || false;
|
|
|
|
|
const exactMaxPlayers = form.get('exactMaxPlayers') || false;
|
2022-04-21 02:41:26 +00:00
|
|
|
const random = form.get('random') === 'on' || false;
|
2022-04-25 01:00:27 +00:00
|
|
|
|
2022-04-22 00:19:48 +00:00
|
|
|
console.log("form.get('minAge')", form.get('minAge'));
|
|
|
|
|
console.log("form.get('minPlayers')", form.get('minPlayers'));
|
|
|
|
|
console.log("form.get('maxPlayers')", form.get('maxPlayers'));
|
|
|
|
|
console.log("form.get('exactMinAge')", form.get('exactMinAge'));
|
|
|
|
|
console.log("form.get('exactMinPlayers')", form.get('exactMinPlayers'));
|
|
|
|
|
console.log("form.get('exactMaxPlayers')", form.get('exactMaxPlayers'));
|
|
|
|
|
console.log("form.get('random')", form.get('random'));
|
|
|
|
|
|
2022-04-25 01:00:27 +00:00
|
|
|
console.log('minAge', minAge);
|
|
|
|
|
console.log('minPlayers', minPlayers);
|
|
|
|
|
console.log('maxPlayers', maxPlayers);
|
|
|
|
|
console.log('exactMinAge', exactMinAge);
|
|
|
|
|
console.log('exactMinPlayers', exactMinPlayers);
|
|
|
|
|
console.log('exactMaxPlayers', exactMaxPlayers);
|
|
|
|
|
console.log('random', random);
|
2022-04-22 00:19:48 +00:00
|
|
|
|
|
|
|
|
if (minAge) {
|
|
|
|
|
if (exactMinAge) {
|
|
|
|
|
queryParams.min_age = +minAge;
|
|
|
|
|
} else {
|
|
|
|
|
queryParams.gt_min_age = +minAge === 1 ? 0 : +minAge - 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (minPlayers) {
|
|
|
|
|
if (exactMinPlayers) {
|
|
|
|
|
queryParams.min_players = +minPlayers;
|
|
|
|
|
} else {
|
|
|
|
|
queryParams.gt_min_players = (+minPlayers === 1 ? 0 : (+minPlayers - 1));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (maxPlayers) {
|
|
|
|
|
if (exactMaxPlayers) {
|
|
|
|
|
queryParams.max_players = +maxPlayers;
|
|
|
|
|
} else {
|
|
|
|
|
queryParams.lt_max_players = +maxPlayers + 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-04-21 02:41:26 +00:00
|
|
|
queryParams.random = random;
|
2022-04-24 23:38:12 +00:00
|
|
|
console.log('queryParams', queryParams);
|
2022-04-21 02:41:26 +00:00
|
|
|
|
|
|
|
|
const newQueryParams = {};
|
|
|
|
|
for (const key in queryParams) {
|
2022-04-24 23:38:12 +00:00
|
|
|
console.log('key', key);
|
|
|
|
|
console.log('queryParams[key]', queryParams[key]);
|
|
|
|
|
newQueryParams[key] = `${queryParams[key]}`;
|
2022-04-21 02:41:26 +00:00
|
|
|
}
|
2022-04-24 23:38:12 +00:00
|
|
|
|
2022-04-21 02:41:26 +00:00
|
|
|
const urlQueryParams = new URLSearchParams(newQueryParams);
|
|
|
|
|
|
|
|
|
|
const url = `https://api.boardgameatlas.com/api/search${urlQueryParams ? `?${urlQueryParams}` : ''}`
|
|
|
|
|
const response = await fetch(url, {
|
|
|
|
|
method: 'get',
|
|
|
|
|
headers: {
|
|
|
|
|
'content-type': 'application/json'
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
console.log('response', response);
|
|
|
|
|
if (response.status === 404) {
|
|
|
|
|
// user hasn't created a todo list.
|
|
|
|
|
// start with an empty array
|
|
|
|
|
return {
|
|
|
|
|
body: {
|
|
|
|
|
games: []
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (response.status === 200) {
|
|
|
|
|
const gameResponse = await response.json();
|
|
|
|
|
const games = gameResponse?.games;
|
|
|
|
|
console.log('games', games);
|
|
|
|
|
return {
|
|
|
|
|
body: {
|
|
|
|
|
games: gameResponse?.games,
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
status: response.status
|
|
|
|
|
};
|
|
|
|
|
}
|