96 lines
58 KiB
JavaScript
96 lines
58 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/update-user-scope/route";
|
|
exports.ids = ["app/api/admin/update-user-scope/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%2Fupdate-user-scope%2Froute&page=%2Fapi%2Fadmin%2Fupdate-user-scope%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fadmin%2Fupdate-user-scope%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%2Fupdate-user-scope%2Froute&page=%2Fapi%2Fadmin%2Fupdate-user-scope%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fadmin%2Fupdate-user-scope%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_update_user_scope_route_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/api/admin/update-user-scope/route.ts */ \"(rsc)/./app/api/admin/update-user-scope/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/update-user-scope/route\",\n pathname: \"/api/admin/update-user-scope\",\n filename: \"route\",\n bundlePath: \"app/api/admin/update-user-scope/route\"\n },\n resolvedPagePath: \"C:\\\\Users\\\\tom\\\\VS Code\\\\MamadApp\\\\mamad-app\\\\app\\\\api\\\\admin\\\\update-user-scope\\\\route.ts\",\n nextConfigOutput,\n userland: C_Users_tom_VS_Code_MamadApp_mamad_app_app_api_admin_update_user_scope_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/update-user-scope/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/bmFtZT1hcHAlMkZhcGklMkZhZG1pbiUyRnVwZGF0ZS11c2VyLXNjb3BlJTJGcm91dGUmcGFnZT0lMkZhcGklMkZhZG1pbiUyRnVwZGF0ZS11c2VyLXNjb3BlJTJGcm91dGUmYXBwUGF0aHM9JnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGYXBpJTJGYWRtaW4lMkZ1cGRhdGUtdXNlci1zY29wZSUyRnJvdXRlLnRzJmFwcERpcj1DJTNBJTVDVXNlcnMlNUN0b20lNUNWUyUyMENvZGUlNUNNYW1hZEFwcCU1Q21hbWFkLWFwcCU1Q2FwcCZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJnJvb3REaXI9QyUzQSU1Q1VzZXJzJTVDdG9tJTVDVlMlMjBDb2RlJTVDTWFtYWRBcHAlNUNtYW1hZC1hcHAmaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0QhIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFzRztBQUN2QztBQUNjO0FBQzBDO0FBQ3ZIO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnSEFBbUI7QUFDM0M7QUFDQSxjQUFjLHlFQUFTO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxZQUFZO0FBQ1osQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLFFBQVEsaUVBQWlFO0FBQ3pFO0FBQ0E7QUFDQSxXQUFXLDRFQUFXO0FBQ3RCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDdUg7O0FBRXZIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWFtYWQtYXBwLz9lOWIwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcFJvdXRlUm91dGVNb2R1bGUgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUtbW9kdWxlcy9hcHAtcm91dGUvbW9kdWxlLmNvbXBpbGVkXCI7XG5pbXBvcnQgeyBSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUta2luZFwiO1xuaW1wb3J0IHsgcGF0Y2hGZXRjaCBhcyBfcGF0Y2hGZXRjaCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9wYXRjaC1mZXRjaFwiO1xuaW1wb3J0ICogYXMgdXNlcmxhbmQgZnJvbSBcIkM6XFxcXFVzZXJzXFxcXHRvbVxcXFxWUyBDb2RlXFxcXE1hbWFkQXBwXFxcXG1hbWFkLWFwcFxcXFxhcHBcXFxcYXBpXFxcXGFkbWluXFxcXHVwZGF0ZS11c2VyLXNjb3BlXFxcXHJvdXRlLnRzXCI7XG4vLyBXZSBpbmplY3QgdGhlIG5leHRDb25maWdPdXRwdXQgaGVyZSBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbSBpbiB0aGUgcm91dGVcbi8vIG1vZHVsZS5cbmNvbnN0IG5leHRDb25maWdPdXRwdXQgPSBcIlwiXG5jb25zdCByb3V0ZU1vZHVsZSA9IG5ldyBBcHBSb3V0ZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUk9VVEUsXG4gICAgICAgIHBhZ2U6IFwiL2FwaS9hZG1pbi91cGRhdGUtdXNlci1zY29wZS9yb3V0ZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvYXBpL2FkbWluL3VwZGF0ZS11c2VyLXNjb3BlXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcInJvdXRlXCIsXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiYXBwL2FwaS9hZG1pbi91cGRhdGUtdXNlci1zY29wZS9yb3V0ZVwiXG4gICAgfSxcbiAgICByZXNvbHZlZFBhZ2VQYXRoOiBcIkM6XFxcXFVzZXJzXFxcXHRvbVxcXFxWUyBDb2RlXFxcXE1hbWFkQXBwXFxcXG1hbWFkLWFwcFxcXFxhcHBcXFxcYXBpXFxcXGFkbWluXFxcXHVwZGF0ZS11c2VyLXNjb3BlXFxcXHJvdXRlLnRzXCIsXG4gICAgbmV4dENvbmZpZ091dHB1dCxcbiAgICB1c2VybGFuZFxufSk7XG4vLyBQdWxsIG91dCB0aGUgZXhwb3J0cyB0aGF0IHdlIG5lZWQgdG8gZXhwb3NlIGZyb20gdGhlIG1vZHVsZS4gVGhpcyBzaG91bGRcbi8vIGJlIGVsaW1pbmF0ZWQgd2hlbiB3ZSd2ZSBtb3ZlZCB0aGUgb3RoZXIgcm91dGVzIHRvIHRoZSBuZXcgZm9ybWF0LiBUaGVzZVxuLy8gYXJlIHVzZWQgdG8gaG9vayBpbnRvIHRoZSByb3V0ZS5cbmNvbnN0IHsgcmVxdWVzdEFzeW5jU3RvcmFnZSwgc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZSwgc2VydmVySG9va3MgfSA9IHJvdXRlTW9kdWxlO1xuY29uc3Qgb3JpZ2luYWxQYXRobmFtZSA9IFwiL2FwaS9hZG1pbi91cGRhdGUtdXNlci1zY29wZS9yb3V0ZVwiO1xuZnVuY3Rpb24gcGF0Y2hGZXRjaCgpIHtcbiAgICByZXR1cm4gX3BhdGNoRmV0Y2goe1xuICAgICAgICBzZXJ2ZXJIb29rcyxcbiAgICAgICAgc3RhdGljR2VuZXJhdGlvbkFzeW5jU3RvcmFnZVxuICAgIH0pO1xufVxuZXhwb3J0IHsgcm91dGVNb2R1bGUsIHJlcXVlc3RBc3luY1N0b3JhZ2UsIHN0YXRpY0dlbmVyYXRpb25Bc3luY1N0b3JhZ2UsIHNlcnZlckhvb2tzLCBvcmlnaW5hbFBhdGhuYW1lLCBwYXRjaEZldGNoLCAgfTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLXJvdXRlLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fapi%2Fadmin%2Fupdate-user-scope%2Froute&page=%2Fapi%2Fadmin%2Fupdate-user-scope%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fadmin%2Fupdate-user-scope%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/update-user-scope/route.ts":
|
|
/*!**************************************************!*\
|
|
!*** ./app/api/admin/update-user-scope/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 */ POST: () => (/* binding */ POST)\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\nconst hasManagedType = async (type, name)=>{\n const rows = await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.safeQuery)(\"SELECT 1 FROM managed_types WHERE type = ? AND name = ? LIMIT 1\", [\n type,\n name\n ]);\n if (rows.length > 0) {\n return true;\n }\n const legacyRows = await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.safeQuery)(`SELECT 1 FROM users WHERE ${type} = ? LIMIT 1`, [\n name\n ]);\n return legacyRows.length > 0;\n};\nasync function POST(request) {\n try {\n const { adminId, targetUserId, field, department, team } = await request.json();\n if (!adminId || !targetUserId || !field || !department || !team) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Missing required fields.\"\n }, {\n status: 400\n });\n }\n const adminRows = await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.safeQuery)(\"SELECT role, field, department, team FROM users WHERE national_id = ?\", [\n adminId\n ]);\n if (adminRows.length === 0) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Admin not found.\"\n }, {\n status: 404\n });\n }\n const admin = adminRows[0];\n const userRows = await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.safeQuery)(\"SELECT national_id, field, department, team FROM users WHERE national_id = ?\", [\n targetUserId\n ]);\n if (userRows.length === 0) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"User not found.\"\n }, {\n status: 404\n });\n }\n const targetUser = userRows[0];\n const [fieldOk, departmentOk, teamOk] = await Promise.all([\n hasManagedType(\"field\", field),\n hasManagedType(\"department\", department),\n hasManagedType(\"team\", team)\n ]);\n if (!fieldOk || !departmentOk || !teamOk) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Invalid field, department, or team.\"\n }, {\n status: 400\n });\n }\n const fieldRows = await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.safeQuery)(\"SELECT id FROM managed_types WHERE type = 'field' AND name = ?\", [\n field\n ]);\n const departmentRows = await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.safeQuery)(\"SELECT id, parent_id AS parentId FROM managed_types WHERE type = 'department' AND name = ?\", [\n department\n ]);\n const teamRows = await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.safeQuery)(\"SELECT id, parent_id AS parentId FROM managed_types WHERE type = 'team' AND name = ?\", [\n team\n ]);\n if (fieldRows.length === 0 || departmentRows.length === 0 || teamRows.length === 0) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Invalid field, department, or team.\"\n }, {\n status: 400\n });\n }\n if (departmentRows[0].parentId !== fieldRows[0].id) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Department does not belong to field.\"\n }, {\n status: 400\n });\n }\n if (teamRows[0].parentId !== departmentRows[0].id) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Team does not belong to department.\"\n }, {\n status: 400\n });\n }\n if (admin.role === \"field_admin\") {\n if (targetUser.field !== admin.field) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Target user is outside your field.\"\n }, {\n status: 403\n });\n }\n if (field !== admin.field) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Field admins can only assign within their field.\"\n }, {\n status: 403\n });\n }\n } else if (admin.role === \"department_admin\") {\n if (targetUser.department !== admin.department) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Target user is outside your department.\"\n }, {\n status: 403\n });\n }\n if (department !== admin.department) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Department admins can only assign within their department.\"\n }, {\n status: 403\n });\n }\n if (admin.field && field !== admin.field) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Department admins can only assign within their field.\"\n }, {\n status: 403\n });\n }\n } else if (admin.role === \"team_admin\") {\n if (targetUser.team !== admin.team) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Target user is outside your team.\"\n }, {\n status: 403\n });\n }\n if (team !== admin.team) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Team admins can only assign within their team.\"\n }, {\n status: 403\n });\n }\n if (admin.department && department !== admin.department) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Team admins can only assign within their department.\"\n }, {\n status: 403\n });\n }\n if (admin.field && field !== admin.field) {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Team admins can only assign within their field.\"\n }, {\n status: 403\n });\n }\n } else if (admin.role !== \"global_admin\") {\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Insufficient permissions.\"\n }, {\n status: 403\n });\n }\n await (0,_lib_database__WEBPACK_IMPORTED_MODULE_1__.safeQuery)(\"UPDATE users SET field = ?, department = ?, team = ? WHERE national_id = ?\", [\n field,\n department,\n team,\n targetUserId\n ]);\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n success: true,\n message: \"User assignment updated.\"\n });\n } catch (error) {\n console.error(\"Update user scope error:\", error);\n return next_server__WEBPACK_IMPORTED_MODULE_0__.NextResponse.json({\n error: \"Failed to update user.\"\n }, {\n status: 500\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvYXBpL2FkbWluL3VwZGF0ZS11c2VyLXNjb3BlL3JvdXRlLnRzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE0RDtBQUNsQjtBQUUxQyxNQUFNRSxpQkFBaUIsT0FBT0MsTUFBdUNDO0lBQ25FLE1BQU1DLE9BQVEsTUFBTUosd0RBQVNBLENBQUMsbUVBQW1FO1FBQy9GRTtRQUNBQztLQUNEO0lBQ0QsSUFBSUMsS0FBS0MsTUFBTSxHQUFHLEdBQUc7UUFDbkIsT0FBTztJQUNUO0lBRUEsTUFBTUMsYUFBYyxNQUFNTix3REFBU0EsQ0FBQyxDQUFDLDBCQUEwQixFQUFFRSxLQUFLLFlBQVksQ0FBQyxFQUFFO1FBQUNDO0tBQUs7SUFDM0YsT0FBT0csV0FBV0QsTUFBTSxHQUFHO0FBQzdCO0FBRU8sZUFBZUUsS0FBS0MsT0FBb0I7SUFDN0MsSUFBSTtRQUNGLE1BQU0sRUFBRUMsT0FBTyxFQUFFQyxZQUFZLEVBQUVDLEtBQUssRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUUsR0FBRyxNQUFNTCxRQUFRTSxJQUFJO1FBRTdFLElBQUksQ0FBQ0wsV0FBVyxDQUFDQyxnQkFBZ0IsQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLE1BQU07WUFDL0QsT0FBT2QscURBQVlBLENBQUNlLElBQUksQ0FBQztnQkFBRUMsT0FBTztZQUEyQixHQUFHO2dCQUFFQyxRQUFRO1lBQUk7UUFDaEY7UUFFQSxNQUFNQyxZQUFhLE1BQU1qQix3REFBU0EsQ0FBQyx5RUFBeUU7WUFDMUdTO1NBQ0Q7UUFDRCxJQUFJUSxVQUFVWixNQUFNLEtBQUssR0FBRztZQUMxQixPQUFPTixxREFBWUEsQ0FBQ2UsSUFBSSxDQUFDO2dCQUFFQyxPQUFPO1lBQW1CLEdBQUc7Z0JBQUVDLFFBQVE7WUFBSTtRQUN4RTtRQUVBLE1BQU1FLFFBQVFELFNBQVMsQ0FBQyxFQUFFO1FBRTFCLE1BQU1FLFdBQVksTUFBTW5CLHdEQUFTQSxDQUFDLGdGQUFnRjtZQUNoSFU7U0FDRDtRQUNELElBQUlTLFNB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L3VwZGF0ZS11c2VyLXNjb3BlL3JvdXRlLnRzPzg0MDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBOZXh0UmVxdWVzdCwgTmV4dFJlc3BvbnNlIH0gZnJvbSBcIm5leHQvc2VydmVyXCJcbmltcG9ydCB7IHNhZmVRdWVyeSB9IGZyb20gXCJAL2xpYi9kYXRhYmFzZVwiXG5cbmNvbnN0IGhhc01hbmFnZWRUeXBlID0gYXN5bmMgKHR5cGU6IFwiZmllbGRcIiB8IFwiZGVwYXJ0bWVudFwiIHwgXCJ0ZWFtXCIsIG5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCByb3dzID0gKGF3YWl0IHNhZmVRdWVyeShcIlNFTEVDVCAxIEZST00gbWFuYWdlZF90eXBlcyBXSEVSRSB0eXBlID0gPyBBTkQgbmFtZSA9ID8gTElNSVQgMVwiLCBbXG4gICAgdHlwZSxcbiAgICBuYW1lLFxuICBdKSkgYXMgYW55W11cbiAgaWYgKHJvd3MubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBjb25zdCBsZWdhY3lSb3dzID0gKGF3YWl0IHNhZmVRdWVyeShgU0VMRUNUIDEgRlJPTSB1c2VycyBXSEVSRSAke3R5cGV9ID0gPyBMSU1JVCAxYCwgW25hbWVdKSkgYXMgYW55W11cbiAgcmV0dXJuIGxlZ2FjeVJvd3MubGVuZ3RoID4gMFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gUE9TVChyZXF1ZXN0OiBOZXh0UmVxdWVzdCkge1xuICB0cnkge1xuICAgIGNvbnN0IHsgYWRtaW5JZCwgdGFyZ2V0VXNlcklkLCBmaWVsZCwgZGVwYXJ0bWVudCwgdGVhbSB9ID0gYXdhaXQgcmVxdWVzdC5qc29uKClcblxuICAgIGlmICghYWRtaW5JZCB8fCAhdGFyZ2V0VXNlcklkIHx8ICFmaWVsZCB8fCAhZGVwYXJ0bWVudCB8fCAhdGVhbSkge1xuICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwiTWlzc2luZyByZXF1aXJlZCBmaWVsZHMuXCIgfSwgeyBzdGF0dXM6IDQwMCB9KVxuICAgIH1cblxuICAgIGNvbnN0IGFkbWluUm93cyA9IChhd2FpdCBzYWZlUXVlcnkoXCJTRUxFQ1Qgcm9sZSwgZmllbGQsIGRlcGFydG1lbnQsIHRlYW0gRlJPTSB1c2VycyBXSEVSRSBuYXRpb25hbF9pZCA9ID9cIiwgW1xuICAgICAgYWRtaW5JZCxcbiAgICBdKSkgYXMgYW55W11cbiAgICBpZiAoYWRtaW5Sb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwiQWRtaW4gbm90IGZvdW5kLlwiIH0sIHsgc3RhdHVzOiA0MDQgfSlcbiAgICB9XG5cbiAgICBjb25zdCBhZG1pbiA9IGFkbWluUm93c1swXVxuXG4gICAgY29uc3QgdXNlclJvd3MgPSAoYXdhaXQgc2FmZVF1ZXJ5KFwiU0VMRUNUIG5hdGlvbmFsX2lkLCBmaWVsZCwgZGVwYXJ0bWVudCwgdGVhbSBGUk9NIHVzZXJzIFdIRVJFIG5hdGlvbmFsX2lkID0gP1wiLCBbXG4gICAgICB0YXJnZXRVc2VySWQsXG4gICAgXSkpIGFzIGFueVtdXG4gICAgaWYgKHVzZXJSb3dzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwiVXNlciBub3QgZm91bmQuXCIgfSwgeyBzdGF0dXM6IDQwNCB9KVxuICAgIH1cbiAgICBjb25zdCB0YXJnZXRVc2VyID0gdXNlclJvd3NbMF1cblxuICAgIGNvbnN0IFtmaWVsZE9rLCBkZXBhcnRtZW50T2ssIHRlYW1Pa10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBoYXNNYW5hZ2VkVHlwZShcImZpZWxkXCIsIGZpZWxkKSxcbiAgICAgIGhhc01hbmFnZWRUeXBlKFwiZGVwYXJ0bWVudFwiLCBkZXBhcnRtZW50KSxcbiAgICAgIGhhc01hbmFnZWRUeXBlKFwidGVhbVwiLCB0ZWFtKSxcbiAgICBdKVxuXG4gICAgaWYgKCFmaWVsZE9rIHx8ICFkZXBhcnRtZW50T2sgfHwgIXRlYW1Paykge1xuICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwiSW52YWxpZCBmaWVsZCwgZGVwYXJ0bWVudCwgb3IgdGVhbS5cIiB9LCB7IHN0YXR1czogNDAwIH0pXG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRSb3dzID0gKGF3YWl0IHNhZmVRdWVyeShcIlNFTEVDVCBpZCBGUk9NIG1hbmFnZWRfdHlwZXMgV0hFUkUgdHlwZSA9ICdmaWVsZCcgQU5EIG5hbWUgPSA/XCIsIFtcbiAgICAgIGZpZWxkLFxuICAgIF0pKSBhcyBBcnJheTx7IGlkOiBudW1iZXIgfT5cbiAgICBjb25zdCBkZXBhcnRtZW50Um93cyA9IChhd2FpdCBzYWZlUXVlcnkoXG4gICAgICBcIlNFTEVDVCBpZCwgcGFyZW50X2lkIEFTIHBhcmVudElkIEZST00gbWFuYWdlZF90eXBlcyBXSEVSRSB0eXBlID0gJ2RlcGFydG1lbnQnIEFORCBuYW1lID0gP1wiLFxuICAgICAgW2RlcGFydG1lbnRdLFxuICAgICkpIGFzIEFycmF5PHsgaWQ6IG51bWJlcjsgcGFyZW50SWQ6IG51bWJlciB8IG51bGwgfT5cbiAgICBjb25zdCB0ZWFtUm93cyA9IChhd2FpdCBzYWZlUXVlcnkoXG4gICAgICBcIlNFTEVDVCBpZCwgcGFyZW50X2lkIEFTIHBhcmVudElkIEZST00gbWFuYWdlZF90eXBlcyBXSEVSRSB0eXBlID0gJ3RlYW0nIEFORCBuYW1lID0gP1wiLFxuICAgICAgW3RlYW1dLFxuICAgICkpIGFzIEFycmF5PHsgaWQ6IG51bWJlcjsgcGFyZW50SWQ6IG51bWJlciB8IG51bGwgfT5cblxuICAgIGlmIChmaWVsZFJvd3MubGVuZ3RoID09PSAwIHx8IGRlcGFydG1lbnRSb3dzLmxlbmd0aCA9PT0gMCB8fCB0ZWFtUm93cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbih7IGVycm9yOiBcIkludmFsaWQgZmllbGQsIGRlcGFydG1lbnQsIG9yIHRlYW0uXCIgfSwgeyBzdGF0dXM6IDQwMCB9KVxuICAgIH1cblxuICAgIGlmIChkZXBhcnRtZW50Um93c1swXS5wYXJlbnRJZCAhPT0gZmllbGRSb3dzWzBdLmlkKSB7XG4gICAgICByZXR1cm4gTmV4dFJlc3BvbnNlLmpzb24oeyBlcnJvcjogXCJEZXBhcnRtZW50IGRvZXMgbm90IGJlbG9uZyB0byBmaWVsZC5cIiB9LCB7IHN0YXR1czogNDAwIH0pXG4gICAgfVxuXG4gICAgaWYgKHRlYW1Sb3dzWzBdLnBhcmVudElkICE9PSBkZXBhcnRtZW50Um93c1swXS5pZCkge1xuICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwiVGVhbSBkb2VzIG5vdCBiZWxvbmcgdG8gZGVwYXJ0bWVudC5cIiB9LCB7IHN0YXR1czogNDAwIH0pXG4gICAgfVxuXG4gICAgaWYgKGFkbWluLnJvbGUgPT09IFwiZmllbGRfYWRtaW5cIikge1xuICAgICAgaWYgKHRhcmdldFVzZXIuZmllbGQgIT09IGFkbWluLmZpZWxkKSB7XG4gICAgICAgIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbih7IGVycm9yOiBcIlRhcmdldCB1c2VyIGlzIG91dHNpZGUgeW91ciBmaWVsZC5cIiB9LCB7IHN0YXR1czogNDAzIH0pXG4gICAgICB9XG4gICAgICBpZiAoZmllbGQgIT09IGFkbWluLmZpZWxkKSB7XG4gICAgICAgIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbih7IGVycm9yOiBcIkZpZWxkIGFkbWlucyBjYW4gb25seSBhc3NpZ24gd2l0aGluIHRoZWlyIGZpZWxkLlwiIH0sIHsgc3RhdHVzOiA0MDMgfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFkbWluLnJvbGUgPT09IFwiZGVwYXJ0bWVudF9hZG1pblwiKSB7XG4gICAgICBpZiAodGFyZ2V0VXNlci5kZXBhcnRtZW50ICE9PSBhZG1pbi5kZXBhcnRtZW50KSB7XG4gICAgICAgIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbih7IGVycm9yOiBcIlRhcmdldCB1c2VyIGlzIG91dHNpZGUgeW91ciBkZXBhcnRtZW50LlwiIH0sIHsgc3RhdHVzOiA0MDMgfSlcbiAgICAgIH1cbiAgICAgIGlmIChkZXBhcnRtZW50ICE9PSBhZG1pbi5kZXBhcnRtZW50KSB7XG4gICAgICAgIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbih7IGVycm9yOiBcIkRlcGFydG1lbnQgYWRtaW5zIGNhbiBvbmx5IGFzc2lnbiB3aXRoaW4gdGhlaXIgZGVwYXJ0bWVudC5cIiB9LCB7IHN0YXR1czogNDAzIH0pXG4gICAgICB9XG4gICAgICBpZiAoYWRtaW4uZmllbGQgJiYgZmllbGQgIT09IGFkbWluLmZpZWxkKSB7XG4gICAgICAgIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbih7IGVycm9yOiBcIkRlcGFydG1lbnQgYWRtaW5zIGNhbiBvbmx5IGFzc2lnbiB3aXRoaW4gdGhlaXIgZmllbGQuXCIgfSwgeyBzdGF0dXM6IDQwMyB9KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYWRtaW4ucm9sZSA9PT0gXCJ0ZWFtX2FkbWluXCIpIHtcbiAgICAgIGlmICh0YXJnZXRVc2VyLnRlYW0gIT09IGFkbWluLnRlYW0pIHtcbiAgICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwiVGFyZ2V0IHVzZXIgaXMgb3V0c2lkZSB5b3VyIHRlYW0uXCIgfSwgeyBzdGF0dXM6IDQwMyB9KVxuICAgICAgfVxuICAgICAgaWYgKHRlYW0gIT09IGFkbWluLnRlYW0pIHtcbiAgICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwiVGVhbSBhZG1pbnMgY2FuIG9ubHkgYXNzaWduIHdpdGhpbiB0aGVpciB0ZWFtLlwiIH0sIHsgc3RhdHVzOiA0MDMgfSlcbiAgICAgIH1cbiAgICAgIGlmIChhZG1pbi5kZXBhcnRtZW50ICYmIGRlcGFydG1lbnQgIT09IGFkbWluLmRlcGFydG1lbnQpIHtcbiAgICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwiVGVhbSBhZG1pbnMgY2FuIG9ubHkgYXNzaWduIHdpdGhpbiB0aGVpciBkZXBhcnRtZW50LlwiIH0sIHsgc3RhdHVzOiA0MDMgfSlcbiAgICAgIH1cbiAgICAgIGlmIChhZG1pbi5maWVsZCAmJiBmaWVsZCAhPT0gYWRtaW4uZmllbGQpIHtcbiAgICAgICAgcmV0dXJuIE5leHRSZXNwb25zZS5qc29uKHsgZXJyb3I6IFwiVGVhbSBhZG1pbnMgY2FuIG9ubHkgYXNzaWduIHdpdGhpbiB0aGVpciBmaWVsZC5cIiB9LCB7IHN0YXR1czogNDAzIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhZG1pbi5yb2xlICE9PSBcImdsb2JhbF9hZG1pblwiKSB7XG4gICAgICByZXR1cm4gTmV4dFJlc3BvbnNlLmpzb24oeyBlcnJvcjogXCJJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMuXCIgfSwgeyBzdGF0dXM6IDQwMyB9KVxuICAgIH1cblxuICAgIGF3YWl0IHNhZmVRdWVyeShcIlVQREFURSB1c2VycyBTRVQgZmllbGQgPSA/LCBkZXBhcnRtZW50ID0gPywgdGVhbSA9ID8gV0hFUkUgbmF0aW9uYWxfaWQgPSA/XCIsIFtcbiAgICAgIGZpZWxkLFxuICAgICAgZGVwYXJ0bWVudCxcbiAgICAgIHRlYW0sXG4gICAgICB0YXJnZXRVc2VySWQsXG4gICAgXSlcblxuICAgIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6IFwiVXNlciBhc3NpZ25tZW50IHVwZGF0ZWQuXCIgfSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiVXBkYXRlIHVzZXIgc2NvcGUgZXJyb3I6XCIsIGVycm9yKVxuICAgIHJldHVybiBOZXh0UmVzcG9uc2UuanNvbih7IGVycm9yOiBcIkZhaWxlZCB0byB1cGRhdGUgdXNlci5cIiB9LCB7IHN0YXR1czogNTAwIH0pXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJOZXh0UmVzcG9uc2UiLCJzYWZlUXVlcnkiLCJoYXNNYW5hZ2VkVHlwZSIsInR5cGUiLCJuYW1lIiwicm93cyIsImxlbmd0aCIsImxlZ2FjeVJvd3MiLCJQT1NUIiwicmVxdWVzdCIsImFkbWluSWQiLCJ0YXJnZXRVc2VySWQiLCJmaWVsZCIsImRlcGFydG1lbnQiLCJ0ZWFtIiwianNvbiIsImVycm9yIiwic3RhdHVzIiwiYWRtaW5Sb3dzIiwiYWRtaW4iLCJ1c2VyUm93cyIsInRhcmdldFVzZXIiLCJmaWVsZE9rIiwiZGVwYXJ0bWVudE9rIiwidGVhbU9rIiwiUHJvbWlzZSIsImFsbCIsImZpZWxkUm93cyIsImRlcGFydG1lbnRSb3dzIiwidGVhbVJvd3MiLCJwYXJlbnRJZCIsImlkIiwicm9sZSIsInN1Y2Nlc3MiLCJtZXNzYWdlIiwiY29uc29sZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./app/api/admin/update-user-scope/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%2Fupdate-user-scope%2Froute&page=%2Fapi%2Fadmin%2Fupdate-user-scope%2Froute&appPaths=&pagePath=private-next-app-dir%2Fapi%2Fadmin%2Fupdate-user-scope%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__;
|
|
|
|
})(); |