deckhearth/.next/server/pages/api/cards/search.js

66 lines
36 KiB
JavaScript
Raw Normal View History

"use strict";
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(() => {
var exports = {};
exports.id = "pages/api/cards/search";
exports.ids = ["pages/api/cards/search"];
exports.modules = {
/***/ "(api-node)/./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES_API&page=%2Fapi%2Fcards%2Fsearch&preferredRegion=&absolutePagePath=.%2Fpages%2Fapi%2Fcards%2Fsearch.js&middlewareConfigBase64=e30%3D!":
/*!**********************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES_API&page=%2Fapi%2Fcards%2Fsearch&preferredRegion=&absolutePagePath=.%2Fpages%2Fapi%2Fcards%2Fsearch.js&middlewareConfigBase64=e30%3D! ***!
\**********************************************************************************************************************************************************************************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ config: () => (/* binding */ config),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ handler: () => (/* binding */ handler)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_api_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/api-utils */ \"(api-node)/./node_modules/next/dist/server/api-utils/index.js\");\n/* harmony import */ var next_dist_server_api_utils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_api_utils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/route-kind */ \"(api-node)/./node_modules/next/dist/server/route-kind.js\");\n/* harmony import */ var next_dist_server_route_modules_pages_api_module_compiled__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/route-modules/pages-api/module.compiled */ \"(api-node)/./node_modules/next/dist/server/route-modules/pages-api/module.compiled.js\");\n/* harmony import */ var next_dist_server_route_modules_pages_api_module_compiled__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_pages_api_module_compiled__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/build/templates/helpers */ \"(api-node)/./node_modules/next/dist/build/templates/helpers.js\");\n/* harmony import */ var _pages_api_cards_search_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pages/api/cards/search.js */ \"(api-node)/./pages/api/cards/search.js\");\n/* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! next/dist/server/lib/trace/tracer */ \"(api-node)/./node_modules/next/dist/server/lib/trace/tracer.js\");\n/* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! next/dist/server/lib/trace/constants */ \"(api-node)/./node_modules/next/dist/server/lib/trace/constants.js\");\n/* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_6__);\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_pages_api_cards_search_js__WEBPACK_IMPORTED_MODULE_4__]);\n_pages_api_cards_search_js__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\n// Import the userland code.\n\n\n\n// Re-export the handler (should be the default export).\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_3__.hoist)(_pages_api_cards_search_js__WEBPACK_IMPORTED_MODULE_4__, 'default'));\n// Re-export config.\nconst config = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_3__.hoist)(_pages_api_cards_search_js__WEBPACK_IMPORTED_MODULE_4__, 'config');\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_route_modules_pages_api_module_compiled__WEBPACK_IMPORTED_MODULE_2__.PagesAPIRouteModule({\n definition: {\n kind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.PAGES_API,\n page: \"/api/cards/search\",\n pathname: \"/api/cards/search\",\n // The following aren't used in production.\n
/***/ }),
/***/ "(api-node)/./pages/api/cards/search.js":
/*!***********************************!*\
!*** ./pages/api/cards/search.js ***!
\***********************************/
/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ handler)\n/* harmony export */ });\n/* harmony import */ var _vercel_postgres__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vercel/postgres */ \"@vercel/postgres\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_vercel_postgres__WEBPACK_IMPORTED_MODULE_0__]);\n_vercel_postgres__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\nasync function handler(req, res) {\n if (req.method !== 'GET') {\n return res.status(405).json({\n error: 'Method not allowed'\n });\n }\n try {\n const { query = '', game = '', rarity = '', set = '', minPrice = '', maxPrice = '', page = 1, limit = 50 } = req.query;\n // Build WHERE clause based on filters\n let whereConditions = [];\n let queryParams = [];\n if (query && query.trim()) {\n whereConditions.push(`(name ILIKE '%${query.trim()}%' OR oracle_text ILIKE '%${query.trim()}%')`);\n }\n if (game && game !== 'all') {\n whereConditions.push(`game = '${game}'`);\n }\n if (rarity && rarity !== 'all') {\n whereConditions.push(`rarity = '${rarity}'`);\n }\n if (set && set !== 'all') {\n whereConditions.push(`set_name = '${set}'`);\n }\n if (minPrice && minPrice !== '') {\n whereConditions.push(`current_price >= ${parseFloat(minPrice)}`);\n }\n if (maxPrice && maxPrice !== '') {\n whereConditions.push(`current_price <= ${parseFloat(maxPrice)}`);\n }\n const whereClause = whereConditions.length > 0 ? `WHERE ${whereConditions.join(' AND ')}` : '';\n // Get filtered cards\n let result;\n if (whereClause) {\n result = await (0,_vercel_postgres__WEBPACK_IMPORTED_MODULE_0__.sql)`\n SELECT \n id, name, set_name, set_code, card_number, rarity, game,\n mana_cost, cmc, card_type, colors, oracle_text,\n power, toughness, image_url, stock_image_url,\n current_price, market_price, scryfall_id, verified,\n created_at, updated_at\n FROM cards\n WHERE ${whereConditions.join(' AND ')}\n ORDER BY name ASC\n LIMIT ${parseInt(limit)} OFFSET ${(parseInt(page) - 1) * parseInt(limit)}\n `;\n } else {\n result = await (0,_vercel_postgres__WEBPACK_IMPORTED_MODULE_0__.sql)`\n SELECT \n id, name, set_name, set_code, card_number, rarity, game,\n mana_cost, cmc, card_type, colors, oracle_text,\n power, toughness, image_url, stock_image_url,\n current_price, market_price, scryfall_id, verified,\n created_at, updated_at\n FROM cards\n ORDER BY name ASC\n LIMIT ${parseInt(limit)} OFFSET ${(parseInt(page) - 1) * parseInt(limit)}\n `;\n }\n // Get total count with same filters\n let countResult;\n if (whereClause) {\n countResult = await (0,_vercel_postgres__WEBPACK_IMPORTED_MODULE_0__.sql)`\n SELECT COUNT(*) as total FROM cards\n WHERE ${whereConditions.join(' AND ')}\n `;\n } else {\n countResult = await (0,_vercel_postgres__WEBPACK_IMPORTED_MODULE_0__.sql)`\n SELECT COUNT(*) as total FROM cards\n `;\n }\n const total = parseInt(countResult.rows[0]?.total || 0);\n // Get unique values for filters\n const [gamesResult, raritiesResult, setsResult] = await Promise.all([\n (0,_vercel_postgres__WEBPACK_IMPORTED_MODULE_0__.sql)`SELECT DISTINCT game FROM cards WHERE game IS NOT NULL ORDER BY game`,\n (0,_vercel_postgres__WEBPACK_IMPORTED_MODU
/***/ }),
/***/ "@vercel/postgres":
/*!***********************************!*\
!*** external "@vercel/postgres" ***!
\***********************************/
/***/ ((module) => {
module.exports = import("@vercel/postgres");;
/***/ }),
/***/ "next/dist/compiled/next-server/pages-api.runtime.dev.js":
/*!**************************************************************************!*\
!*** external "next/dist/compiled/next-server/pages-api.runtime.dev.js" ***!
\**************************************************************************/
/***/ ((module) => {
module.exports = require("next/dist/compiled/next-server/pages-api.runtime.dev.js");
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../webpack-api-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next"], () => (__webpack_exec__("(api-node)/./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES_API&page=%2Fapi%2Fcards%2Fsearch&preferredRegion=&absolutePagePath=.%2Fpages%2Fapi%2Fcards%2Fsearch.js&middlewareConfigBase64=e30%3D!")));
module.exports = __webpack_exports__;
})();