Files
mamad-app/.next/server/app/api/admin/users/[id]/route.js
2026-01-16 17:48:46 +02:00

96 lines
42 KiB
JavaScript

"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 = "app/api/admin/users/[id]/route";
exports.ids = ["app/api/admin/users/[id]/route"];
exports.modules = {
/***/ "mysql2/promise":
/*!*********************************!*\
!*** external "mysql2/promise" ***!
\*********************************/
/***/ ((module) => {
module.exports = require("mysql2/promise");
/***/ }),
/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js":
/*!*************************************************************************!*\
!*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***!
\*************************************************************************/
/***/ ((module) => {
module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js");
/***/ }),
/***/ "next/dist/compiled/next-server/app-route.runtime.dev.js":
/*!**************************************************************************!*\
!*** external "next/dist/compiled/next-server/app-route.runtime.dev.js" ***!
\**************************************************************************/
/***/ ((module) => {
module.exports = require("next/dist/compiled/next-server/app-route.runtime.dev.js");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute&page=%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute.ts&appDir=C%3A%5CUsers%5Ctom%5CVS%20Code%5CMamadApp%5Cmamad-app%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=C%3A%5CUsers%5Ctom%5CVS%20Code%5CMamadApp%5Cmamad-app&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!":
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute&page=%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute.ts&appDir=C%3A%5CUsers%5Ctom%5CVS%20Code%5CMamadApp%5Cmamad-app%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=C%3A%5CUsers%5Ctom%5CVS%20Code%5CMamadApp%5Cmamad-app&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ patchFetch: () => (/* binding */ patchFetch),\n/* harmony export */ requestAsyncStorage: () => (/* binding */ requestAsyncStorage),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ serverHooks: () => (/* binding */ serverHooks),\n/* harmony export */ staticGenerationAsyncStorage: () => (/* binding */ staticGenerationAsyncStorage)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-route/module.compiled */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-route/module.compiled.js\");\n/* harmony import */ var next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"(rsc)/./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/lib/patch-fetch */ \"(rsc)/./node_modules/next/dist/server/lib/patch-fetch.js\");\n/* harmony import */ var next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var C_Users_tom_VS_Code_MamadApp_mamad_app_app_api_admin_users_id_route_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/api/admin/users/[id]/route.ts */ \"(rsc)/./app/api/admin/users/[id]/route.ts\");\n\n\n\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"\"\nconst routeModule = new next_dist_server_future_route_modules_app_route_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppRouteRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_ROUTE,\n page: \"/api/admin/users/[id]/route\",\n pathname: \"/api/admin/users/[id]\",\n filename: \"route\",\n bundlePath: \"app/api/admin/users/[id]/route\"\n },\n resolvedPagePath: \"C:\\\\Users\\\\tom\\\\VS Code\\\\MamadApp\\\\mamad-app\\\\app\\\\api\\\\admin\\\\users\\\\[id]\\\\route.ts\",\n nextConfigOutput,\n userland: C_Users_tom_VS_Code_MamadApp_mamad_app_app_api_admin_users_id_route_ts__WEBPACK_IMPORTED_MODULE_3__\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { requestAsyncStorage, staticGenerationAsyncStorage, serverHooks } = routeModule;\nconst originalPathname = \"/api/admin/users/[id]/route\";\nfunction patchFetch() {\n return (0,next_dist_server_lib_patch_fetch__WEBPACK_IMPORTED_MODULE_2__.patchFetch)({\n serverHooks,\n staticGenerationAsyncStorage\n });\n}\n\n\n//# sourceMappingURL=app-route.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZhcGklMkZhZG1pbiUyRnVzZXJzJTJGJTVCaWQlNUQlMkZyb3V0ZSZwYWdlPSUyRmFwaSUyRmFkbWluJTJGdXNlcnMlMkYlNUJpZCU1RCUyRnJvdXRlJmFwcFBhdGhzPSZwYWdlUGF0aD1wcml2YXRlLW5leHQtYXBwLWRpciUyRmFwaSUyRmFkbWluJTJGdXNlcnMlMkYlNUJpZCU1RCUyRnJvdXRlLnRzJmFwcERpcj1DJTNBJTVDVXNlcnMlNUN0b20lNUNWUyUyMENvZGUlNUNNYW1hZEFwcCU1Q21hbWFkLWFwcCU1Q2FwcCZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJnJvb3REaXI9QyUzQSU1Q1VzZXJzJTVDdG9tJTVDVlMlMjBDb2RlJTVDTWFtYWRBcHAlNUNtYW1hZC1hcHAmaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0QhIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFzRztBQUN2QztBQUNjO0FBQ29DO0FBQ2pIO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnSEFBbUI7QUFDM0M7QUFDQSxjQUFjLHlFQUFTO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxZQUFZO0FBQ1osQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLFFBQVEsaUVBQWlFO0FBQ3pFO0FBQ0E7QUFDQSxXQUFXLDRFQUFXO0FBQ3RCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDdUg7O0FBRXZIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLz8wMjYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcFJvdXRlUm91dGVNb2R1bGUgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUtbW9kdWxlcy9hcHAtcm91dGUvbW9kdWxlLmNvbXBpbGVkXCI7XG5pbXBvcnQgeyBSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUta2luZFwiO1xuaW1wb3J0IHsgcGF0Y2hGZXRjaCBhcyBfcGF0Y2hGZXRjaCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9wYXRjaC1mZXRjaFwiO1xuaW1wb3J0ICogYXMgdXNlcmxhbmQgZnJvbSBcIkM6XFxcXFVzZXJzXFxcXHRvbVxcXFxWUyBDb2RlXFxcXE1hbWFkQXBwXFxcXG1hbWFkLWFwcFxcXFxhcHBcXFxcYXBpXFxcXGFkbWluXFxcXHVzZXJzXFxcXFtpZF1cXFxccm91dGUudHNcIjtcbi8vIFdlIGluamVjdCB0aGUgbmV4dENvbmZpZ091dHB1dCBoZXJlIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVtIGluIHRoZSByb3V0ZVxuLy8gbW9kdWxlLlxuY29uc3QgbmV4dENvbmZpZ091dHB1dCA9IFwiXCJcbmNvbnN0IHJvdXRlTW9kdWxlID0gbmV3IEFwcFJvdXRlUm91dGVNb2R1bGUoe1xuICAgIGRlZmluaXRpb246IHtcbiAgICAgICAga2luZDogUm91dGVLaW5kLkFQUF9ST1VURSxcbiAgICAgICAgcGFnZTogXCIvYXBpL2FkbWluL3VzZXJzL1tpZF0vcm91dGVcIixcbiAgICAgICAgcGF0aG5hbWU6IFwiL2FwaS9hZG1pbi91c2Vycy9baWRdXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcInJvdXRlXCIsXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiYXBwL2FwaS9hZG1pbi91c2Vycy9baWRdL3JvdXRlXCJcbiAgICB9LFxuICAgIHJlc29sdmVkUGFnZVBhdGg6IFwiQzpcXFxcVXNlcnNcXFxcdG9tXFxcXFZTIENvZGVcXFxcTWFtYWRBcHBcXFxcbWFtYWQtYXBwXFxcXGFwcFxcXFxhcGlcXFxcYWRtaW5cXFxcdXNlcnNcXFxcW2lkXVxcXFxyb3V0ZS50c1wiLFxuICAgIG5leHRDb25maWdPdXRwdXQsXG4gICAgdXNlcmxhbmRcbn0pO1xuLy8gUHVsbCBvdXQgdGhlIGV4cG9ydHMgdGhhdCB3ZSBuZWVkIHRvIGV4cG9zZSBmcm9tIHRoZSBtb2R1bGUuIFRoaXMgc2hvdWxkXG4vLyBiZSBlbGltaW5hdGVkIHdoZW4gd2UndmUgbW92ZWQgdGhlIG90aGVyIHJvdXRlcyB0byB0aGUgbmV3IGZvcm1hdC4gVGhlc2Vcbi8vIGFyZSB1c2VkIHRvIGhvb2sgaW50byB0aGUgcm91dGUuXG5jb25zdCB7IHJlcXVlc3RBc3luY1N0b3JhZ2UsIHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UsIHNlcnZlckhvb2tzIH0gPSByb3V0ZU1vZHVsZTtcbmNvbnN0IG9yaWdpbmFsUGF0aG5hbWUgPSBcIi9hcGkvYWRtaW4vdXNlcnMvW2lkXS9yb3V0ZVwiO1xuZnVuY3Rpb24gcGF0Y2hGZXRjaCgpIHtcbiAgICByZXR1cm4gX3BhdGNoRmV0Y2goe1xuICAgICAgICBzZXJ2ZXJIb29rcyxcbiAgICAgICAgc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZVxuICAgIH0pO1xufVxuZXhwb3J0IHsgcm91dGVNb2R1bGUsIHJlcXVlc3RBc3luY1N0b3JhZ2UsIHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UsIHNlcnZlckhvb2tzLCBvcmlnaW5hbFBhdGhuYW1lLCBwYXRjaEZldGNoLCAgfTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLXJvdXRlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute&page=%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute.ts&appDir=C%3A%5CUsers%5Ctom%5CVS%20Code%5CMamadApp%5Cmamad-app%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=C%3A%5CUsers%5Ctom%5CVS%20Code%5CMamadApp%5Cmamad-app&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n");
/***/ }),
/***/ "(rsc)/./app/api/admin/users/[id]/route.ts":
/*!*******************************************!*\
!*** ./app/api/admin/users/[id]/route.ts ***!
\*******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DELETE: () => (/* binding */ DELETE)\n/* harmony export */ });\n/* harmony import */ var next_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/server */ \"(rsc)/./node_modules/next/dist/api/server.js\");\n/* harmony import */ var _lib_database__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/database */ \"(rsc)/./lib/database.ts\");\n\n\nasync function DELETE(request, { params }) {\n try {\n const nationalId = params.id;\n // Check if user exists\n const users = await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.executeQuery)(\"SELECT national_id FROM users WHERE national_id = ?\", [\n nationalId\n ]);\n if (users.length === 0) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"משתמש לא נמצא\"\n }, {\n status: 404\n });\n }\n // Delete user\n await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.executeQuery)(\"DELETE FROM admin_actions WHERE admin_id = ? OR target_user_id = ?\", [\n nationalId,\n nationalId\n ]);\n await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.executeQuery)(\"DELETE FROM users WHERE national_id = ?\", [\n nationalId\n ]);\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n success: true\n });\n } catch (error) {\n console.error(\"Delete user error:\", error);\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"שגיאה במחיקת משתמש\"\n }, {\n status: 500\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvYXBpL2FkbWluL3VzZXJzL1tpZF0vcm91dGUudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQTREO0FBQ2Y7QUFFdEMsZUFBZUUsT0FBT0MsT0FBb0IsRUFBRSxFQUFFQyxNQUFNLEVBQThCO0lBQ3ZGLElBQUk7UUFDRixNQUFNQyxhQUFhRCxPQUFPRSxFQUFFO1FBRTVCLHVCQUF1QjtRQUN2QixNQUFNQyxRQUFTLE1BQU1OLDJEQUFZQSxDQUFDLHVEQUF1RDtZQUFDSTtTQUFXO1FBRXJHLElBQUlFLE1BQU1DLE1BQU0sS0FBSyxHQUFHO1lBQ3RCLE9BQU9SLHFEQUFZQSxDQUFDUyxJQUFJLENBQUM7Z0JBQUVDLE9BQU87WUFBZ0IsR0FBRztnQkFBRUMsUUFBUTtZQUFJO1FBQ3JFO1FBRUEsY0FBYztRQUNkLE1BQU1WLDJEQUFZQSxDQUNoQixzRUFDQTtZQUFDSTtZQUFZQTtTQUFXO1FBRTFCLE1BQU1KLDJEQUFZQSxDQUFDLDJDQUEyQztZQUFDSTtTQUFXO1FBRTFFLE9BQU9MLHFEQUFZQSxDQUFDUyxJQUFJLENBQUM7WUFBRUcsU0FBUztRQUFLO0lBQzNDLEVBQUUsT0FBT0YsT0FBTztRQUNkRyxRQUFRSCxLQUFLLENBQUMsc0JBQXNCQTtRQUNwQyxPQUFPVixxREFBWUEsQ0FBQ1MsSUFBSSxDQUFDO1lBQUVDLE9BQU87UUFBcUIsR0FBRztZQUFFQyxRQUFRO1FBQUk7SUFDMUU7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL2FwcC9hcGkvYWRtaW4vdXNlcnMvW2lkXS9yb3V0ZS50cz9kMzE3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgTmV4dFJlcXVlc3QsIE5leHRSZXNwb25zZSB9IGZyb20gXCJuZXh0L3NlcnZlclwiXHJcbmltcG9ydCB7IGV4ZWN1dGVRdWVyeSB9IGZyb20gXCJAL2xpYi9kYXRhYmFzZVwiXHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gREVMRVRFKHJlcXVlc3Q6IE5leHRSZXF1ZXN0LCB7IHBhcmFtcyB9OiB7IHBhcmFtczogeyBpZDogc3RyaW5nIH0gfSkge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBuYXRpb25hbElkID0gcGFyYW1zLmlkXHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdXNlciBleGlzdHNcclxuICAgIGNvbnN0IHVzZXJzID0gKGF3YWl0IGV4ZWN1dGVRdWVyeShcIlNFTEVDVCBuYXRpb25hbF9pZCBGUk9NIHVzZXJzIFdIRVJFIG5hdGlvbmFsX2lkID0gP1wiLCBbbmF0aW9uYWxJZF0pKSBhcyBhbnlbXVxyXG5cclxuICAgIGlmICh1c2Vycy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwi157Xqdeq157XqSDXnNeQINeg157XpteQXCIgfSwgeyBzdGF0dXM6IDQwNCB9KVxyXG4gICAgfVxyXG5cclxuICAgIC8vIERlbGV0ZSB1c2VyXHJcbiAgICBhd2FpdCBleGVjdXRlUXVlcnkoXHJcbiAgICAgIFwiREVMRVRFIEZST00gYWRtaW5fYWN0aW9ucyBXSEVSRSBhZG1pbl9pZCA9ID8gT1IgdGFyZ2V0X3VzZXJfaWQgPSA/XCIsXHJcbiAgICAgIFtuYXRpb25hbElkLCBuYXRpb25hbElkXVxyXG4gICAgKTtcclxuICAgIGF3YWl0IGV4ZWN1dGVRdWVyeShcIkRFTEVURSBGUk9NIHVzZXJzIFdIRVJFIG5hdGlvbmFsX2lkID0gP1wiLCBbbmF0aW9uYWxJZF0pXHJcblxyXG4gICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgc3VjY2VzczogdHJ1ZSB9KVxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKFwiRGVsZXRlIHVzZXIgZXJyb3I6XCIsIGVycm9yKVxyXG4gICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwi16nXkteZ15DXlCDXkdee15fXmden16og157Xqdeq157XqVwiIH0sIHsgc3RhdHVzOiA1MDAgfSlcclxuICB9XHJcbn1cclxuIl0sIm5hbWVzIjpbIk5leHRSZXNwb25zZSIsImV4ZWN1dGVRdWVyeSIsIkRFTEVURSIsInJlcXVlc3QiLCJwYXJhbXMiLCJuYXRpb25hbElkIiwiaWQiLCJ1c2VycyIsImxlbmd0aCIsImpzb24iLCJlcnJvciIsInN0YXR1cyIsInN1Y2Nlc3MiLCJjb25zb2xlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./app/api/admin/users/[id]/route.ts\n");
/***/ }),
/***/ "(rsc)/./lib/database.ts":
/*!*************************!*\
!*** ./lib/database.ts ***!
\*************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ closePool: () => (/* binding */ closePool),\n/* harmony export */ createPool: () => (/* binding */ createPool),\n/* harmony export */ executeQuery: () => (/* binding */ executeQuery),\n/* harmony export */ executeTransaction: () => (/* binding */ executeTransaction),\n/* harmony export */ getConnection: () => (/* binding */ getConnection),\n/* harmony export */ getPoolStats: () => (/* binding */ getPoolStats),\n/* harmony export */ healthCheck: () => (/* binding */ healthCheck),\n/* harmony export */ safeQuery: () => (/* binding */ safeQuery),\n/* harmony export */ testConnection: () => (/* binding */ testConnection)\n/* harmony export */ });\n/* harmony import */ var mysql2_promise__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! mysql2/promise */ \"mysql2/promise\");\n/* harmony import */ var mysql2_promise__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(mysql2_promise__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _config_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config.json */ \"(rsc)/./config.json\");\n\n\n// Connection pool configuration\nconst poolConfig = {\n host: _config_json__WEBPACK_IMPORTED_MODULE_1__.database.host,\n user: _config_json__WEBPACK_IMPORTED_MODULE_1__.database.user,\n password: _config_json__WEBPACK_IMPORTED_MODULE_1__.database.password,\n database: _config_json__WEBPACK_IMPORTED_MODULE_1__.database.database,\n charset: \"utf8mb4\",\n connectionLimit: 5,\n acquireTimeout: 30000,\n timeout: 30000,\n reconnect: true,\n idleTimeout: 180000,\n maxIdle: 2,\n enableKeepAlive: true,\n keepAliveInitialDelay: 0,\n // Add these to prevent excessive connections\n queueLimit: 0,\n dateStrings: false,\n debug: false\n};\nlet pool = null;\n// Create connection pool\nfunction createPool() {\n if (!pool) {\n try {\n pool = mysql2_promise__WEBPACK_IMPORTED_MODULE_0___default().createPool(poolConfig);\n console.log(\"Database connection pool created successfully\");\n // Handle pool events\n pool.on(\"connection\", (connection)=>{\n console.log(`New database connection established as id ${connection.threadId}`);\n });\n pool.on(\"error\", (err)=>{\n console.error(\"Database pool error:\", err);\n // Don't recreate pool automatically - let it handle reconnections\n if (err.code === \"PROTOCOL_CONNECTION_LOST\") {\n console.log(\"Connection lost, pool will handle reconnection automatically\");\n }\n });\n pool.on(\"acquire\", (connection)=>{\n console.log(`Connection ${connection.threadId} acquired from pool`);\n });\n pool.on(\"release\", (connection)=>{\n console.log(`Connection ${connection.threadId} released back to pool`);\n });\n } catch (error) {\n console.error(\"Failed to create database pool:\", error);\n throw error;\n }\n }\n return pool;\n}\n// Get connection from pool\nasync function getConnection() {\n try {\n const connectionPool = createPool();\n const connection = await connectionPool.getConnection();\n // Don't set session timeouts - let pool handle this\n return connection;\n } catch (error) {\n console.error(\"Failed to get database connection:\", error);\n throw new Error(\"Database connection failed\");\n }\n}\n// Execute query with automatic connection management\nasync function executeQuery(query, params = []) {\n let connection = null;\n try {\n connection = await getConnection();\n const [results] = await connection.execute(query, params);\n return results;\n } catch (error) {\n console.error(\"Query execution failed:\", error);\n console.error(\"Query:\", query);\n console.error(\"Params:\", params);\n throw error;\n } finally{\n // Always release connection back to pool\n if (connection) {\n connection.release();\n }\n }\n}\n// Safe query execution with automatic parameter binding and connection management\nasync function safeQuery(query, params = []) {\n try {\n return await executeQuery(query, params);\n } catch (error) {\n console.error(\"Database query error:\", error);\n throw new Error(\"Database operation failed\");\n }\n}\n// Execute transaction with automatic connection management\nasync function executeTransaction(queries) {\n let connection = null;\n try {\n connection = await getConnection();\n // Start transaction\n await connection.beginTransaction();\n const results = [];\n // Execute all queries in transaction\n for (const { query, params = [] } of queries){\n const [result] = await connection.execute(query, params);\n results.push(result);\n }\n // Commit transaction\n await connection.commit();\n return results;\n } catch (error) {\n // Rollback transaction on error\n if (connection) {\n try {\n await connection.rollback();\n } catch (rollbackError) {\n console.error(\"Transaction rollback failed:\", rollbackError);\n }\n }\n console.error(\"Transaction failed:\", error);\n throw error;\n } finally{\n // Always release connection back to pool\n if (connection) {\n connection.release();\n }\n }\n}\n// Test database connection and pool health\nasync function testConnection() {\n let connection = null;\n try {\n connection = await getConnection();\n await connection.ping();\n console.log(\"Database connection test successful\");\n return true;\n } catch (error) {\n console.error(\"Database connection test failed:\", error);\n return false;\n } finally{\n if (connection) {\n connection.release();\n }\n }\n}\n// Get pool statistics\nfunction getPoolStats() {\n if (!pool) {\n return null;\n }\n return {\n totalConnections: pool.pool._allConnections.length,\n freeConnections: pool.pool._freeConnections.length,\n acquiringConnections: pool.pool._acquiringConnections.length,\n connectionLimit: poolConfig.connectionLimit\n };\n}\n// Close all connections in pool (for graceful shutdown)\nasync function closePool() {\n if (pool) {\n try {\n await pool.end();\n pool = null;\n console.log(\"Database pool closed successfully\");\n } catch (error) {\n console.error(\"Error closing database pool:\", error);\n }\n }\n}\n// Health check for monitoring\nasync function healthCheck() {\n let connection = null;\n try {\n const startTime = Date.now();\n connection = await getConnection();\n // Test basic query\n const [result] = await connection.execute(\"SELECT 1 as health_check\");\n const responseTime = Date.now() - startTime;\n const stats = getPoolStats();\n return {\n status: \"healthy\",\n responseTime,\n poolStats: stats,\n timestamp: new Date().toISOString()\n };\n } catch (error) {\n return {\n status: \"unhealthy\",\n error: error instanceof Error ? error.message : \"Unknown error\",\n timestamp: new Date().toISOString()\n };\n } finally{\n if (connection) {\n connection.release();\n }\n }\n}\n// Initialize pool on module load\n// createPool()\n// Graceful shutdown handler\nprocess.on(\"SIGINT\", async ()=>{\n console.log(\"Received SIGINT, closing database pool...\");\n await closePool();\n process.exit(0);\n});\nprocess.on(\"SIGTERM\", async ()=>{\n console.log(\"Received SIGTERM, closing database pool...\");\n await closePool();\n process.exit(0);\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDNUJpQyxRQUFRL0MsRUFBRSxDQUFDLFVBQVU7SUFDbkJGLFFBQVFDLEdBQUcsQ0FBQztJQUNaLE1BQU1tQztJQUNOYSxRQUFRQyxJQUFJLENBQUM7QUFDZjtBQUVBRCxRQUFRL0MsRUFBRSxDQUFDLFdBQVc7SUFDcEJGLFFBQVFDLEdBQUcsQ0FBQztJQUNaLE1BQU1tQztJQUNOYSxRQUFRQyxJQUFJLENBQUM7QUFDZiIsInNvdXJjZXMiOlsid2VicGFjazovL21hbWFkLWFwcC8uL2xpYi9kYXRhYmFzZS50cz80ZDQ5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBteXNxbCBmcm9tIFwibXlzcWwyL3Byb21pc2VcIlxyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi9jb25maWcuanNvblwiXHJcblxyXG4vLyBDb25uZWN0aW9uIHBvb2wgY29uZmlndXJhdGlvblxyXG5jb25zdCBwb29sQ29uZmlnID0ge1xyXG4gIGhvc3Q6IGNvbmZpZy5kYXRhYmFzZS5ob3N0LFxyXG4gIHVzZXI6IGNvbmZpZy5kYXRhYmFzZS51c2VyLFxyXG4gIHBhc3N3b3JkOiBjb25maWcuZGF0YWJhc2UucGFzc3dvcmQsXHJcbiAgZGF0YWJhc2U6IGNvbmZpZy5kYXRhYmFzZS5kYXRhYmFzZSxcclxuICBjaGFyc2V0OiBcInV0ZjhtYjRcIixcclxuICBjb25uZWN0aW9uTGltaXQ6IDUsIC8vIFJlZHVjZWQgZnJvbSAxMFxyXG4gIGFjcXVpcmVUaW1lb3V0OiAzMDAwMCwgLy8gUmVkdWNlZCBmcm9tIDYwIHNlY29uZHNcclxuICB0aW1lb3V0OiAzMDAwMCwgLy8gUmVkdWNlZCBmcm9tIDYwIHNlY29uZHNcclxuICByZWNvbm5lY3Q6IHRydWUsXHJcbiAgaWRsZVRpbWVvdXQ6IDE4MDAwMCwgLy8gUmVkdWNlZCB0byAzIG1pbnV0ZXNcclxuICBtYXhJZGxlOiAyLCAvLyBSZWR1Y2VkIGZyb20gNVxyXG4gIGVuYWJsZUtlZXBBbGl2ZTogdHJ1ZSxcclxuICBrZWVwQWxpdmVJbml0aWFsRGVsYXk6IDAsXHJcbiAgLy8gQWRkIHRoZXNlIHRvIHByZXZlbnQgZXhjZXNzaXZlIGNvbm5lY3Rpb25zXHJcbiAgcXVldWVMaW1pdDogMCxcclxuICBkYXRlU3RyaW5nczogZmFsc2UsXHJcbiAgZGVidWc6IGZhbHNlLFxyXG59XHJcblxyXG5sZXQgcG9vbDogbXlzcWwuUG9vbCB8IG51bGwgPSBudWxsXHJcblxyXG4vLyBDcmVhdGUgY29ubmVjdGlvbiBwb29sXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQb29sKCkge1xyXG4gIGlmICghcG9vbCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcG9vbCA9IG15c3FsLmNyZWF0ZVBvb2wocG9vbENvbmZpZylcclxuICAgICAgY29uc29sZS5sb2coXCJEYXRhYmFzZSBjb25uZWN0aW9uIHBvb2wgY3JlYXRlZCBzdWNjZXNzZnVsbHlcIilcclxuXHJcbiAgICAgIC8vIEhhbmRsZSBwb29sIGV2ZW50c1xyXG4gICAgICBwb29sLm9uKFwiY29ubmVjdGlvblwiLCAoY29ubmVjdGlvbikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBOZXcgZGF0YWJhc2UgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCBhcyBpZCAke2Nvbm5lY3Rpb24udGhyZWFkSWR9YClcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHBvb2wub24oXCJlcnJvclwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkRhdGFiYXNlIHBvb2wgZXJyb3I6XCIsIGVycilcclxuICAgICAgICAvLyBEb24ndCByZWNyZWF0ZSBwb29sIGF1dG9tYXRpY2FsbHkgLSBsZXQgaXQgaGFuZGxlIHJlY29ubmVjdGlvbnNcclxuICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFwiUFJPVE9DT0xfQ09OTkVDVElPTl9MT1NUXCIpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ29ubmVjdGlvbiBsb3N0LCBwb29sIHdpbGwgaGFuZGxlIHJlY29ubmVjdGlvbiBhdXRvbWF0aWNhbGx5XCIpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG5cclxuICAgICAgcG9vbC5vbihcImFjcXVpcmVcIiwgKGNvbm5lY3Rpb24pID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhgQ29ubmVjdGlvbiAke2Nvbm5lY3Rpb24udGhyZWFkSWR9IGFjcXVpcmVkIGZyb20gcG9vbGApXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBwb29sLm9uKFwicmVsZWFzZVwiLCAoY29ubmVjdGlvbikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGBDb25uZWN0aW9uICR7Y29ubmVjdGlvbi50aHJlYWRJZH0gcmVsZWFzZWQgYmFjayB0byBwb29sYClcclxuICAgICAgfSlcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY3JlYXRlIGRhdGFiYXNlIHBvb2w6XCIsIGVycm9yKVxyXG4gICAgICB0aHJvdyBlcnJvclxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gcG9vbFxyXG59XHJcblxyXG4vLyBHZXQgY29ubmVjdGlvbiBmcm9tIHBvb2xcclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvbm5lY3Rpb24oKTogUHJvbWlzZTxteXNxbC5Qb29sQ29ubmVjdGlvbj4ge1xyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBjb25uZWN0aW9uUG9vbCA9IGNyZWF0ZVBvb2woKVxyXG4gICAgY29uc3QgY29ubmVjdGlvbiA9IGF3YWl0IGNvbm5lY3Rpb25Qb29sLmdldENvbm5lY3Rpb24oKVxyXG5cclxuICAgIC8vIERvbid0IHNldCBzZXNzaW9uIHRpbWVvdXRzIC0gbGV0IHBvb2wgaGFuZGxlIHRoaXNcclxuICAgIHJldHVybiBjb25uZWN0aW9uXHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZ2V0IGRhdGFiYXNlIGNvbm5lY3Rpb246XCIsIGVycm9yKVxyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRGF0YWJhc2UgY29ubmVjdGlvbiBmYWlsZWRcIilcclxuICB9XHJcbn1cclxuXHJcbi8vIEV4ZWN1dGUgcXVlcnkgd2l0aCBhdXRvbWF0aWMgY29ubmVjdGlvbiBtYW5hZ2VtZW50XHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjdXRlUXVlcnkocXVlcnk6IHN0cmluZywgcGFyYW1zOiBhbnlbXSA9IFtdKSB7XHJcbiAgbGV0IGNvbm5lY3Rpb246IG15c3FsLlBvb2xDb25uZWN0aW9uIHwgbnVsbCA9IG51bGxcclxuXHJcbiAgdHJ5IHtcclxuICAgIGNvbm5lY3Rpb24gPSBhd2FpdCBnZXRDb25uZWN0aW9uKClcclxuICAgIGNvbnN0IFtyZXN1bHRzXSA9IGF3YWl0IGNvbm5lY3Rpb24uZXhlY3V0ZShxdWVyeSwgcGFyYW1zKVxyXG4gICAgcmV0dXJuIHJlc3VsdHNcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcihcIlF1ZXJ5IGV4ZWN1dGlvbiBmYWlsZWQ6XCIsIGVycm9yKVxyXG4gICAgY29uc29sZS5lcnJvcihcIlF1ZXJ5OlwiLCBxdWVyeSlcclxuICAgIGNvbnNvbGUuZXJyb3IoXCJQYXJhbXM6XCIsIHBhcmFtcylcclxuICAgIHRocm93IGVycm9yXHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIC8vIEFsd2F5cyByZWxlYXNlIGNvbm5lY3Rpb24gYmFjayB0byBwb29sXHJcbiAgICBpZiAoY29ubmVjdGlvbikge1xyXG4gICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gU2FmZSBxdWVyeSBleGVjdXRpb24gd2l0aCBhdXRvbWF0aWMgcGFyYW1ldGVyIGJpbmRpbmcgYW5kIGNvbm5lY3Rpb24gbWFuYWdlbWVudFxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2FmZVF1ZXJ5KHF1ZXJ5OiBzdHJpbmcsIHBhcmFtczogYW55W10gPSBbXSkge1xyXG4gIHRyeSB7XHJcbiAgICByZXR1cm4gYXdhaXQgZXhlY3V0ZVF1ZXJ5KHF1ZXJ5LCBwYXJhbXMpXHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoXCJEYXRhYmFzZSBxdWVyeSBlcnJvcjpcIiwgZXJyb3IpXHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJEYXRhYmFzZSBvcGVyYXRpb24gZmFpbGVkXCIpXHJcbiAgfVxyXG59XHJcblxyXG4vLyBFeGVjdXRlIHRyYW5zYWN0aW9uIHdpdGggYXV0b21hdGljIGNvbm5lY3Rpb24gbWFuYWdlbWVudFxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZVRyYW5zYWN0aW9uKHF1ZXJpZXM6IEFycmF5PHsgcXVlcnk6IHN0cmluZzsgcGFyYW1zPzogYW55W10gfT4pIHtcclxuICBsZXQgY29ubmVjdGlvbjogbXlzcWwuUG9vbENvbm5lY3Rpb24gfCBudWxsID0gbnVsbFxyXG5cclxuICB0cnkge1xyXG4gICAgY29ubmVjdGlvbiA9IGF3YWl0IGdldENvbm5lY3Rpb24oKVxyXG5cclxuICAgIC8vIFN0YXJ0IHRyYW5zYWN0aW9uXHJcbiAgICBhd2FpdCBjb25uZWN0aW9uLmJlZ2luVHJhbnNhY3Rpb24oKVxyXG5cclxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXVxyXG5cclxuICAgIC8vIEV4ZWN1dGUgYWxsIHF1ZXJpZXMgaW4gdHJhbnNhY3Rpb25cclxuICAgIGZvciAoY29uc3QgeyBxdWVyeSwgcGFyYW1zID0gW10gfSBvZiBxdWVyaWVzKSB7XHJcbiAgICAgIGNvbnN0IFtyZXN1bHRdID0gYXdhaXQgY29ubmVjdGlvbi5leGVjdXRlKHF1ZXJ5LCBwYXJhbXMpXHJcbiAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpXHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ29tbWl0IHRyYW5zYWN0aW9uXHJcbiAgICBhd2FpdCBjb25uZWN0aW9uLmNvbW1pdCgpXHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdHNcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgLy8gUm9sbGJhY2sgdHJhbnNhY3Rpb24gb24gZXJyb3JcclxuICAgIGlmIChjb25uZWN0aW9uKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5yb2xsYmFjaygpXHJcbiAgICAgIH0gY2F0Y2ggKHJvbGxiYWNrRXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiVHJhbnNhY3Rpb24gcm9sbGJhY2sgZmFpbGVkOlwiLCByb2xsYmFja0Vycm9yKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc29sZS5lcnJvcihcIlRyYW5zYWN0aW9uIGZhaWxlZDpcIiwgZXJyb3IpXHJcbiAgICB0aHJvdyBlcnJvclxyXG4gIH0gZmluYWxseSB7XHJcbiAgICAvLyBBbHdheXMgcmVsZWFzZSBjb25uZWN0aW9uIGJhY2sgdG8gcG9vbFxyXG4gICAgaWYgKGNvbm5lY3Rpb24pIHtcclxuICAgICAgY29ubmVjdGlvbi5yZWxlYXNlKClcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIFRlc3QgZGF0YWJhc2UgY29ubmVjdGlvbiBhbmQgcG9vbCBoZWFsdGhcclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RDb25uZWN0aW9uKCkge1xyXG4gIGxldCBjb25uZWN0aW9uOiBteXNxbC5Qb29sQ29ubmVjdGlvbiB8IG51bGwgPSBudWxsXHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25uZWN0aW9uID0gYXdhaXQgZ2V0Q29ubmVjdGlvbigpXHJcbiAgICBhd2FpdCBjb25uZWN0aW9uLnBpbmcoKVxyXG4gICAgY29uc29sZS5sb2coXCJEYXRhYmFzZSBjb25uZWN0aW9uIHRlc3Qgc3VjY2Vzc2Z1bFwiKVxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcihcIkRhdGFiYXNlIGNvbm5lY3Rpb24gdGVzdCBmYWlsZWQ6XCIsIGVycm9yKVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGlmIChjb25uZWN0aW9uKSB7XHJcbiAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBHZXQgcG9vbCBzdGF0aXN0aWNzXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQb29sU3RhdHMoKSB7XHJcbiAgaWYgKCFwb29sKSB7XHJcbiAgICByZXR1cm4gbnVsbFxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIHRvdGFsQ29ubmVjdGlvbnM6IHBvb2wucG9vbC5fYWxsQ29ubmVjdGlvbnMubGVuZ3RoLFxyXG4gICAgZnJlZUNvbm5lY3Rpb25zOiBwb29sLnBvb2wuX2ZyZWVDb25uZWN0aW9ucy5sZW5ndGgsXHJcbiAgICBhY3F1aXJpbmdDb25uZWN0aW9uczogcG9vbC5wb29sLl9hY3F1aXJpbmdDb25uZWN0aW9ucy5sZW5ndGgsXHJcbiAgICBjb25uZWN0aW9uTGltaXQ6IHBvb2xDb25maWcuY29ubmVjdGlvbkxpbWl0LFxyXG4gIH1cclxufVxyXG5cclxuLy8gQ2xvc2UgYWxsIGNvbm5lY3Rpb25zIGluIHBvb2wgKGZvciBncmFjZWZ1bCBzaHV0ZG93bilcclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNsb3NlUG9vbCgpIHtcclxuICBpZiAocG9vbCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgcG9vbC5lbmQoKVxyXG4gICAgICBwb29sID0gbnVsbFxyXG4gICAgICBjb25zb2xlLmxvZyhcIkRhdGFiYXNlIHBvb2wgY2xvc2VkIHN1Y2Nlc3NmdWxseVwiKVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGNsb3NpbmcgZGF0YWJhc2UgcG9vbDpcIiwgZXJyb3IpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBIZWFsdGggY2hlY2sgZm9yIG1vbml0b3JpbmdcclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhlYWx0aENoZWNrKCkge1xyXG4gIGxldCBjb25uZWN0aW9uOiBteXNxbC5Qb29sQ29ubmVjdGlvbiB8IG51bGwgPSBudWxsXHJcblxyXG4gIHRyeSB7XHJcbiAgICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpXHJcbiAgICBjb25uZWN0aW9uID0gYXdhaXQgZ2V0Q29ubmVjdGlvbigpXHJcblxyXG4gICAgLy8gVGVzdCBiYXNpYyBxdWVyeVxyXG4gICAgY29uc3QgW3Jlc3VsdF0gPSBhd2FpdCBjb25uZWN0aW9uLmV4ZWN1dGUoXCJTRUxFQ1QgMSBhcyBoZWFsdGhfY2hlY2tcIilcclxuICAgIGNvbnN0IHJlc3BvbnNlVGltZSA9IERhdGUubm93KCkgLSBzdGFydFRpbWVcclxuXHJcbiAgICBjb25zdCBzdGF0cyA9IGdldFBvb2xTdGF0cygpXHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc3RhdHVzOiBcImhlYWx0aHlcIixcclxuICAgICAgcmVzcG9uc2VUaW1lLFxyXG4gICAgICBwb29sU3RhdHM6IHN0YXRzLFxyXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc3RhdHVzOiBcInVuaGVhbHRoeVwiLFxyXG4gICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBcIlVua25vd24gZXJyb3JcIixcclxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXHJcbiAgICB9XHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGlmIChjb25uZWN0aW9uKSB7XHJcbiAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBJbml0aWFsaXplIHBvb2wgb24gbW9kdWxlIGxvYWRcclxuLy8gY3JlYXRlUG9vbCgpXHJcblxyXG4vLyBHcmFjZWZ1bCBzaHV0ZG93biBoYW5kbGVyXHJcbnByb2Nlc3Mub24oXCJTSUdJTlRcIiwgYXN5bmMgKCkgPT4ge1xyXG4gIGNvbnNvbGUubG9nKFwiUmVjZWl2ZWQgU0lHSU5ULCBjbG9zaW5nIGRhdGFiYXNlIHBvb2wuLi5cIilcclxuICBhd2FpdCBjbG9zZVBvb2woKVxyXG4gIHByb2Nlc3MuZXhpdCgwKVxyXG59KVxyXG5cclxucHJvY2Vzcy5vbihcIlNJR1RFUk1cIiwgYXN5bmMgKCkgPT4ge1xyXG4gIGNvbnNvbGUubG9nKFwiUmVjZWl2ZWQgU0lHVEVSTSwgY2xvc2luZyBkYXRhYmFzZSBwb29sLi4uXCIpXHJcbiAgYXdhaXQgY2xvc2VQb29sKClcclxuICBwcm9jZXNzLmV4aXQoMClcclxufSlcclxuIl0sIm5hbWVzIjpbIm15c3FsIiwiY29uZmlnIiwicG9vbENvbmZpZyIsImhvc3QiLCJkYXRhYmFzZSIsInVzZXIiLCJwYXNzd29yZCIsImNoYXJzZXQiLCJjb25uZWN0aW9uTGltaXQiLCJhY3F1aXJlVGltZW91dCIsInRpbWVvdXQiLCJyZWNvbm5lY3QiLCJpZGxlVGltZW91dCIsIm1heElkbGUiLCJlbmFibGVLZWVwQWxpdmUiLCJrZWVwQWxpdmVJbml0aWFsRGVsYXkiLCJxdWV1ZUxpbWl0IiwiZGF0ZVN0cmluZ3MiLCJkZWJ1ZyIsInBvb2wiLCJjcmVhdGVQb29sIiwiY29uc29sZSIsImxvZyIsIm9uIiwiY29ubmVjdGlvbiIsInRocmVhZElkIiwiZXJyIiwiZXJyb3IiLCJjb2RlIiwiZ2V0Q29ubmVjdGlvbiIsImNvbm5lY3Rpb25Qb29sIiwiRXJyb3IiLCJleGVjdXRlUXVlcnkiLCJxdWVyeSIsInBhcmFtcyIsInJlc3VsdHMiLCJleGVjdXRlIiwicmVsZWFzZSIsInNhZmVRdWVyeSIsImV4ZWN1dGVUcmFuc2FjdGlvbiIsInF1ZXJpZXMiLCJiZWdpblRyYW5zYWN0aW9uIiwicmVzdWx0IiwicHVzaCIsImNvbW1pdCIsInJvbGxiYWNrIiwicm9sbGJhY2tFcnJvciIsInRlc3RDb25uZWN0aW9uIiwicGluZyIsImdldFBvb2xTdGF0cyIsInRvdGFsQ29ubmVjdGlvbnMiLCJfYWxsQ29ubmVjdGlvbnMiLCJsZW5ndGgiLCJmcmVlQ29ubmVjdGlvbnMiLCJfZnJlZUNvbm5lY3Rpb25zIiwiYWNxdWlyaW5nQ29ubmVjdGlvbnMiLCJfYWNxdWlyaW5nQ29ubmVjdGlvbnMiLCJjbG9zZVBvb2wiLCJlbmQiLCJoZWFsdGhDaGVjayIsInN0YXJ0VGltZSIsIkRhdGUiLCJub3ciLCJyZXNwb25zZVRpbWUiLCJzdGF0cyIsInN0YXR1cyIsInBvb2xTdGF0cyIsInRpbWVzdGFtcCIsInRvSVNPU3RyaW5nIiwibWVzc2FnZSIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./lib/database.ts\n");
/***/ }),
/***/ "(rsc)/./config.json":
/*!*********************!*\
!*** ./config.json ***!
\*********************/
/***/ ((module) => {
module.exports = /*#__PURE__*/JSON.parse('{"database":{"host":"10.0.5.1","user":"mamad-app","password":"K[7w1@N!Uvdu@ls!","database":"mamad-app"},"app":{"resetCooldownMinutes":1}}');
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../../../../../webpack-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__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute&page=%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fadmin%2Fusers%2F%5Bid%5D%2Froute.ts&appDir=C%3A%5CUsers%5Ctom%5CVS%20Code%5CMamadApp%5Cmamad-app%5Capp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=C%3A%5CUsers%5Ctom%5CVS%20Code%5CMamadApp%5Cmamad-app&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!")));
module.exports = __webpack_exports__;
})();