diff --git a/dist/package-shared/actions/get.d.ts b/dist/package-shared/actions/get.d.ts index ed688e4..17a3cba 100644 --- a/dist/package-shared/actions/get.d.ts +++ b/dist/package-shared/actions/get.d.ts @@ -1,17 +1,16 @@ -import { ApiGetQueryObject, GetReturn } from "../types"; +import { APIResponseObject, DsqlCrudQueryObject } from "../types"; type Param = { key?: string; - db?: string; - query: string | ApiGetQueryObject; - queryValues?: string[]; - tableName?: string; - user_id?: string | number; + database: string; + query: DsqlCrudQueryObject; + table?: string; debug?: boolean; - forceLocal?: boolean; + useLocal?: boolean; + apiVersion?: string; }; export type ApiGetParams = Param; /** @@ -21,5 +20,5 @@ export default function get({ key, db, query, queryValues, tableName, user_id, debug, forceLocal, }: Param): Promise>; +}, R extends any = any>({ key, database, query, table, debug, useLocal, apiVersion, }: Param): Promise>; export {}; diff --git a/dist/package-shared/actions/get.js b/dist/package-shared/actions/get.js index 4677481..1020b53 100644 --- a/dist/package-shared/actions/get.js +++ b/dist/package-shared/actions/get.js @@ -13,18 +13,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = get; -const path_1 = __importDefault(require("path")); -const fs_1 = __importDefault(require("fs")); const grab_host_names_1 = __importDefault(require("../utils/grab-host-names")); -const get_1 = __importDefault(require("../functions/api/query/get")); const serialize_query_1 = __importDefault(require("../utils/serialize-query")); -const grab_query_and_values_1 = __importDefault(require("../utils/grab-query-and-values")); const debug_log_1 = __importDefault(require("../utils/logging/debug-log")); +const crud_1 = __importDefault(require("../utils/data-fetching/crud")); +const grab_api_key_1 = __importDefault(require("../utils/grab-api-key")); /** * # Make a get request to Datasquirel API */ function get(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, db, query, queryValues, tableName, user_id, debug, forceLocal, }) { + return __awaiter(this, arguments, void 0, function* ({ key, database, query, table, debug, useLocal, apiVersion = "v1", }) { const grabedHostNames = (0, grab_host_names_1.default)(); const { host, port, scheme } = grabedHostNames; function debugFn(log, label) { @@ -36,25 +34,14 @@ function get(_a) { * @description Look for local db settings in `.env` file and by pass the http request if available */ const { DSQL_DB_NAME } = process.env; - if ((DSQL_DB_NAME === null || DSQL_DB_NAME === void 0 ? void 0 : DSQL_DB_NAME.match(/./)) && global.DSQL_USE_LOCAL) { - let dbSchema; - try { - const localDbSchemaPath = path_1.default.resolve(process.cwd(), "dsql.schema.json"); - dbSchema = JSON.parse(fs_1.default.readFileSync(localDbSchemaPath, "utf8")); - } - catch (error) { } - if (debug) { - debugFn("Running Locally ..."); - } - return yield (0, get_1.default)({ - dbFullName: DSQL_DB_NAME, + if (useLocal) { + const result = yield (0, crud_1.default)({ + action: "get", + table: table || "", + dbFullName: database, query, - queryValues, - tableName, - dbSchema, - debug, - forceLocal, }); + return result; } /** * Make https request @@ -62,25 +49,11 @@ function get(_a) { * @description make a request to datasquirel.com */ const httpResponse = yield new Promise((resolve, reject) => { - const queryAndValues = (0, grab_query_and_values_1.default)({ - query, - values: queryValues, - }); - const queryObject = { - db: process.env.DSQL_API_DB_NAME || String(db), - query: queryAndValues.query, - queryValues: queryAndValues.valuesString, - tableName, - debug, - }; - if (debug) { - debugFn(queryObject, "queryObject"); - } - const queryString = (0, serialize_query_1.default)(Object.assign({}, queryObject)); + const queryString = (0, serialize_query_1.default)(query); if (debug) { debugFn(queryString, "queryString"); } - let path = `/api/query/${user_id || grabedHostNames.user_id}/get${queryString}`; + let path = `/api/${apiVersion}/crud/${database}/${table}`; if (debug) { debugFn(path, "path"); } @@ -88,10 +61,7 @@ function get(_a) { method: "GET", headers: { "Content-Type": "application/json", - Authorization: key || - process.env.DSQL_READ_ONLY_API_KEY || - process.env.DSQL_FULL_ACCESS_API_KEY || - process.env.DSQL_API_KEY, + Authorization: (0, grab_api_key_1.default)(key), }, port, hostname: host, @@ -113,7 +83,7 @@ function get(_a) { try { resolve(JSON.parse(str)); } - catch ( /** @type {any} */error) { + catch (error) { reject({ error: error.message, result: str, diff --git a/dist/package-shared/actions/post.d.ts b/dist/package-shared/actions/post.d.ts index 50fb6d5..93586e7 100644 --- a/dist/package-shared/actions/post.d.ts +++ b/dist/package-shared/actions/post.d.ts @@ -6,11 +6,11 @@ type Param = { queryValues?: any[]; tableName?: string; user_id?: boolean; - forceLocal?: boolean; + useLocal?: boolean; debug?: boolean; }; /** * # Make a post request to Datasquirel API */ -export default function post({ key, query, queryValues, database, tableName, user_id, forceLocal, debug, }: Param): Promise; +export default function post({ key, query, queryValues, database, tableName, user_id, useLocal, debug, }: Param): Promise; export {}; diff --git a/dist/package-shared/actions/post.js b/dist/package-shared/actions/post.js index cab88c6..4fcc271 100644 --- a/dist/package-shared/actions/post.js +++ b/dist/package-shared/actions/post.js @@ -14,8 +14,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = post; -const path_1 = __importDefault(require("path")); -const fs_1 = __importDefault(require("fs")); const grab_host_names_1 = __importDefault(require("../utils/grab-host-names")); const post_1 = __importDefault(require("../functions/api/query/post")); const debug_log_1 = __importDefault(require("../utils/logging/debug-log")); @@ -23,7 +21,7 @@ const debug_log_1 = __importDefault(require("../utils/logging/debug-log")); * # Make a post request to Datasquirel API */ function post(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, query, queryValues, database, tableName, user_id, forceLocal, debug, }) { + return __awaiter(this, arguments, void 0, function* ({ key, query, queryValues, database, tableName, user_id, useLocal, debug, }) { const grabedHostNames = (0, grab_host_names_1.default)(); const { host, port, scheme } = grabedHostNames; if (debug) { @@ -39,18 +37,7 @@ function post(_a) { * @description Look for local db settings in `.env` file and by pass the http request if available */ const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env; - if ((DSQL_DB_HOST === null || DSQL_DB_HOST === void 0 ? void 0 : DSQL_DB_HOST.match(/./)) && - (DSQL_DB_USERNAME === null || DSQL_DB_USERNAME === void 0 ? void 0 : DSQL_DB_USERNAME.match(/./)) && - (DSQL_DB_PASSWORD === null || DSQL_DB_PASSWORD === void 0 ? void 0 : DSQL_DB_PASSWORD.match(/./)) && - (DSQL_DB_NAME === null || DSQL_DB_NAME === void 0 ? void 0 : DSQL_DB_NAME.match(/./)) && - global.DSQL_USE_LOCAL) { - /** @type {import("../types").DSQL_DatabaseSchemaType | undefined} */ - let dbSchema; - try { - const localDbSchemaPath = path_1.default.resolve(process.cwd(), "dsql.schema.json"); - dbSchema = JSON.parse(fs_1.default.readFileSync(localDbSchemaPath, "utf8")); - } - catch (error) { } + if (useLocal) { if (debug) { (0, debug_log_1.default)({ log: "Using Local DB ...", @@ -58,12 +45,10 @@ function post(_a) { }); } return yield (0, post_1.default)({ - dbFullName: database || DSQL_DB_NAME, + dbFullName: database || "", query, - dbSchema, queryValues, tableName, - forceLocal, debug, }); } @@ -73,7 +58,6 @@ function post(_a) { * @description make a request to datasquirel.com */ const httpResponse = yield new Promise((resolve, reject) => { - var _a; const reqPayloadString = JSON.stringify({ query, queryValues, @@ -84,7 +68,7 @@ function post(_a) { JSON.parse(reqPayloadString); } catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Parsing HTTP response for post action`, error); + console.log("Error Parsing HTTP response for post action: ", error.message); return { success: false, payload: null, diff --git a/dist/package-shared/actions/upload-file.js b/dist/package-shared/actions/upload-file.js index df4d8d1..79966c4 100644 --- a/dist/package-shared/actions/upload-file.js +++ b/dist/package-shared/actions/upload-file.js @@ -19,7 +19,6 @@ const grab_host_names_1 = __importDefault(require("../utils/grab-host-names")); */ function uploadImage(_a) { return __awaiter(this, arguments, void 0, function* ({ key, payload, user_id, useDefault, }) { - var _b; const grabedHostNames = (0, grab_host_names_1.default)({ useDefault }); const { host, port, scheme } = grabedHostNames; try { @@ -67,7 +66,6 @@ function uploadImage(_a) { } catch (error) { console.log("Error in uploading file: ", error.message); - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Error Uploading File`, error); return { success: false, payload: null, diff --git a/dist/package-shared/actions/upload-image.js b/dist/package-shared/actions/upload-image.js index 5bd9326..ef6f6a3 100644 --- a/dist/package-shared/actions/upload-image.js +++ b/dist/package-shared/actions/upload-image.js @@ -19,7 +19,6 @@ const grab_host_names_1 = __importDefault(require("../utils/grab-host-names")); */ function uploadImage(_a) { return __awaiter(this, arguments, void 0, function* ({ key, payload, user_id, useDefault, }) { - var _b; const grabedHostNames = (0, grab_host_names_1.default)({ useDefault }); const { host, port, scheme } = grabedHostNames; try { @@ -67,7 +66,6 @@ function uploadImage(_a) { } catch (error) { console.log("Error in uploading image: ", error.message); - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Error Uploading Image`, error); return { success: false, payload: null, diff --git a/dist/package-shared/actions/users/add-user.d.ts b/dist/package-shared/actions/users/add-user.d.ts index 0ef96b6..330de50 100644 --- a/dist/package-shared/actions/users/add-user.d.ts +++ b/dist/package-shared/actions/users/add-user.d.ts @@ -1,15 +1,14 @@ import { AddUserFunctionReturn, UserDataPayload } from "../../types"; type Param = { key?: string; - database?: string; + database: string; payload: UserDataPayload; encryptionKey?: string; - encryptionSalt?: string; - user_id?: string | number; - apiUserId?: string | number; + useLocal?: boolean; + verify?: boolean; }; /** * # Add User to Database */ -export default function addUser({ key, payload, database, encryptionKey, user_id, apiUserId, }: Param): Promise; +export default function addUser({ key, payload, database, encryptionKey, useLocal, verify, }: Param): Promise; export {}; diff --git a/dist/package-shared/actions/users/add-user.js b/dist/package-shared/actions/users/add-user.js index 96df201..bab5be2 100644 --- a/dist/package-shared/actions/users/add-user.js +++ b/dist/package-shared/actions/users/add-user.js @@ -13,40 +13,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = addUser; -const path_1 = __importDefault(require("path")); -const fs_1 = __importDefault(require("fs")); const grab_host_names_1 = __importDefault(require("../../utils/grab-host-names")); const api_create_user_1 = __importDefault(require("../../functions/api/users/api-create-user")); /** * # Add User to Database */ function addUser(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, payload, database, encryptionKey, user_id, apiUserId, }) { - /** - * Check for local DB settings - * - * @description Look for local db settings in `.env` file and by pass the http request if available - */ - const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME, DSQL_API_USER_ID, } = process.env; + return __awaiter(this, arguments, void 0, function* ({ key, payload, database, encryptionKey, useLocal, verify, }) { const grabedHostNames = (0, grab_host_names_1.default)(); const { host, port, scheme } = grabedHostNames; - if ((DSQL_DB_HOST === null || DSQL_DB_HOST === void 0 ? void 0 : DSQL_DB_HOST.match(/./)) && - (DSQL_DB_USERNAME === null || DSQL_DB_USERNAME === void 0 ? void 0 : DSQL_DB_USERNAME.match(/./)) && - (DSQL_DB_PASSWORD === null || DSQL_DB_PASSWORD === void 0 ? void 0 : DSQL_DB_PASSWORD.match(/./)) && - (DSQL_DB_NAME === null || DSQL_DB_NAME === void 0 ? void 0 : DSQL_DB_NAME.match(/./)) && - global.DSQL_USE_LOCAL) { - /** @type {import("../../types").DSQL_DatabaseSchemaType | undefined} */ - let dbSchema; - try { - const localDbSchemaPath = path_1.default.resolve(process.cwd(), "dsql.schema.json"); - dbSchema = JSON.parse(fs_1.default.readFileSync(localDbSchemaPath, "utf8")); - } - catch (error) { } + if (useLocal) { return yield (0, api_create_user_1.default)({ - database: DSQL_DB_NAME, + database, encryptionKey, payload, - userId: apiUserId, + verify, }); } /** @@ -71,7 +52,7 @@ function addUser(_a) { }, port, hostname: host, - path: `/api/user/${user_id || grabedHostNames.user_id}/add-user`, + path: ``, }, /** * Callback Function diff --git a/dist/package-shared/actions/users/delete-user.d.ts b/dist/package-shared/actions/users/delete-user.d.ts index 25b8fb7..13df7de 100644 --- a/dist/package-shared/actions/users/delete-user.d.ts +++ b/dist/package-shared/actions/users/delete-user.d.ts @@ -1,12 +1,13 @@ import { UpdateUserFunctionReturn } from "../../types"; type Param = { key?: string; - database?: string; + database: string; deletedUserId: string | number; - user_id?: boolean; + useLocal?: boolean; + apiVersion?: string; }; /** * # Update User */ -export default function deleteUser({ key, database, user_id, deletedUserId, }: Param): Promise; +export default function deleteUser({ key, database, deletedUserId, useLocal, apiVersion, }: Param): Promise; export {}; diff --git a/dist/package-shared/actions/users/delete-user.js b/dist/package-shared/actions/users/delete-user.js index e0b0dda..f56dd78 100644 --- a/dist/package-shared/actions/users/delete-user.js +++ b/dist/package-shared/actions/users/delete-user.js @@ -13,37 +13,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = deleteUser; -const path_1 = __importDefault(require("path")); -const fs_1 = __importDefault(require("fs")); const grab_host_names_1 = __importDefault(require("../../utils/grab-host-names")); const api_delete_user_1 = __importDefault(require("../../functions/api/users/api-delete-user")); /** * # Update User */ function deleteUser(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, database, user_id, deletedUserId, }) { - /** - * Check for local DB settings - * - * @description Look for local db settings in `.env` file and by pass the http request if available - */ - const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env; + return __awaiter(this, arguments, void 0, function* ({ key, database, deletedUserId, useLocal, apiVersion = "v1", }) { const grabedHostNames = (0, grab_host_names_1.default)(); const { host, port, scheme } = grabedHostNames; - if ((DSQL_DB_HOST === null || DSQL_DB_HOST === void 0 ? void 0 : DSQL_DB_HOST.match(/./)) && - (DSQL_DB_USERNAME === null || DSQL_DB_USERNAME === void 0 ? void 0 : DSQL_DB_USERNAME.match(/./)) && - (DSQL_DB_PASSWORD === null || DSQL_DB_PASSWORD === void 0 ? void 0 : DSQL_DB_PASSWORD.match(/./)) && - (DSQL_DB_NAME === null || DSQL_DB_NAME === void 0 ? void 0 : DSQL_DB_NAME.match(/./)) && - global.DSQL_USE_LOCAL) { - /** @type {import("../../types").DSQL_DatabaseSchemaType | undefined} */ - let dbSchema; - try { - const localDbSchemaPath = path_1.default.resolve(process.cwd(), "dsql.schema.json"); - dbSchema = JSON.parse(fs_1.default.readFileSync(localDbSchemaPath, "utf8")); - } - catch (error) { } + if (useLocal) { return yield (0, api_delete_user_1.default)({ - dbFullName: DSQL_DB_NAME, + dbFullName: database, deletedUserId, }); } @@ -68,7 +49,7 @@ function deleteUser(_a) { }, port, hostname: host, - path: `/api/user/${user_id || grabedHostNames.user_id}/delete-user`, + path: `/api/${apiVersion}/users/${database}/${deletedUserId}`, }, /** * Callback Function diff --git a/dist/package-shared/actions/users/get-token.js b/dist/package-shared/actions/users/get-token.js index 49bf723..61d6d1f 100644 --- a/dist/package-shared/actions/users/get-token.js +++ b/dist/package-shared/actions/users/get-token.js @@ -14,7 +14,6 @@ const parseCookies_1 = __importDefault(require("../../utils/backend/parseCookies * string and csrf token string */ function getToken({ request, encryptionKey, encryptionSalt, cookieString, }) { - var _a; try { /** * Grab the payload @@ -62,7 +61,7 @@ function getToken({ request, encryptionKey, encryptionSalt, cookieString, }) { return { key, csrf }; } catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Getting Token`, error); + console.log("Error Getting Token:", error.message); /** * Return User Object * diff --git a/dist/package-shared/actions/users/get-user.d.ts b/dist/package-shared/actions/users/get-user.d.ts index b2c9476..3ec6b21 100644 --- a/dist/package-shared/actions/users/get-user.d.ts +++ b/dist/package-shared/actions/users/get-user.d.ts @@ -4,10 +4,11 @@ type Param = { database: string; userId: number; fields?: string[]; - apiUserId?: boolean; + useLocal?: boolean; + apiVersion?: string; }; /** * # Get User */ -export default function getUser({ key, userId, database, fields, apiUserId, }: Param): Promise; +export default function getUser({ key, userId, database, fields, useLocal, apiVersion, }: Param): Promise; export {}; diff --git a/dist/package-shared/actions/users/get-user.js b/dist/package-shared/actions/users/get-user.js index e0f8b11..9d43159 100644 --- a/dist/package-shared/actions/users/get-user.js +++ b/dist/package-shared/actions/users/get-user.js @@ -13,15 +13,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getUser; -const path_1 = __importDefault(require("path")); -const fs_1 = __importDefault(require("fs")); const grab_host_names_1 = __importDefault(require("../../utils/grab-host-names")); const api_get_user_1 = __importDefault(require("../../functions/api/users/api-get-user")); /** * # Get User */ function getUser(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, userId, database, fields, apiUserId, }) { + return __awaiter(this, arguments, void 0, function* ({ key, userId, database, fields, useLocal, apiVersion = "v1", }) { /** * Initialize */ @@ -49,28 +47,11 @@ function getUser(_a) { }); const grabedHostNames = (0, grab_host_names_1.default)(); const { host, port, scheme } = grabedHostNames; - /** - * Check for local DB settings - * - * @description Look for local db settings in `.env` file and by pass the http request if available - */ - const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env; - if ((DSQL_DB_HOST === null || DSQL_DB_HOST === void 0 ? void 0 : DSQL_DB_HOST.match(/./)) && - (DSQL_DB_USERNAME === null || DSQL_DB_USERNAME === void 0 ? void 0 : DSQL_DB_USERNAME.match(/./)) && - (DSQL_DB_PASSWORD === null || DSQL_DB_PASSWORD === void 0 ? void 0 : DSQL_DB_PASSWORD.match(/./)) && - (DSQL_DB_NAME === null || DSQL_DB_NAME === void 0 ? void 0 : DSQL_DB_NAME.match(/./)) && - global.DSQL_USE_LOCAL) { - /** @type {import("../../types").DSQL_DatabaseSchemaType | undefined} */ - let dbSchema; - try { - const localDbSchemaPath = path_1.default.resolve(process.cwd(), "dsql.schema.json"); - dbSchema = JSON.parse(fs_1.default.readFileSync(localDbSchemaPath, "utf8")); - } - catch (error) { } + if (useLocal) { return yield (0, api_get_user_1.default)({ userId, fields: [...new Set(updatedFields)], - dbFullName: DSQL_DB_NAME, + dbFullName: database, }); } /** @@ -90,7 +71,7 @@ function getUser(_a) { }, port, hostname: host, - path: `/api/user/${apiUserId || grabedHostNames.user_id}/get-user`, + path: `/api/${apiVersion}/users/${database}/${userId}`, }, /** * Callback Function @@ -112,9 +93,6 @@ function getUser(_a) { httpsRequest.write(reqPayload); httpsRequest.end(); }); - /** ********************************************** */ - /** ********************************************** */ - /** ********************************************** */ return httpResponse; }); } diff --git a/dist/package-shared/actions/users/login-user.js b/dist/package-shared/actions/users/login-user.js index 915e872..5a7d69b 100644 --- a/dist/package-shared/actions/users/login-user.js +++ b/dist/package-shared/actions/users/login-user.js @@ -25,7 +25,7 @@ const grab_cookie_expirt_date_1 = __importDefault(require("../../utils/grab-cook */ function loginUser(_a) { return __awaiter(this, arguments, void 0, function* ({ key, payload, database, additionalFields, response, encryptionKey, encryptionSalt, email_login, email_login_code, temp_code_field, token, user_id, skipPassword, apiUserID, skipWriteAuthFile, dbUserId, debug, cleanupTokens, secureCookie, request, useLocal, }) { - var _b, _c, _d; + var _b, _c; const grabedHostNames = (0, grab_host_names_1.default)({ userId: user_id || apiUserID }); const { host, port, scheme } = grabedHostNames; const COOKIE_EXPIRY_DATE = (0, grab_cookie_expirt_date_1.default)(); @@ -82,7 +82,7 @@ function loginUser(_a) { */ if (useLocal) { httpResponse = yield (0, api_login_1.default)({ - database: database || process.env.DSQL_DB_NAME || "", + database, email: payload.email, username: payload.username, password: payload.password, @@ -154,14 +154,14 @@ function loginUser(_a) { httpResponse["token"] = encryptedPayload; } catch (error) { - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Login User HTTP Response Error`, error); + console.log("Login User HTTP Response Error:", error.message); } const cookieNames = (0, get_auth_cookie_names_1.default)({ database, userId: grabedHostNames.user_id, }); if (httpResponse.csrf && !skipWriteAuthFile) { - (0, write_auth_files_1.writeAuthFile)(httpResponse.csrf, JSON.stringify(httpResponse.payload), cleanupTokens && ((_c = httpResponse.payload) === null || _c === void 0 ? void 0 : _c.id) + (0, write_auth_files_1.writeAuthFile)(httpResponse.csrf, JSON.stringify(httpResponse.payload), cleanupTokens && ((_b = httpResponse.payload) === null || _b === void 0 ? void 0 : _b.id) ? { userId: httpResponse.payload.id } : undefined); } @@ -176,7 +176,7 @@ function loginUser(_a) { } response === null || response === void 0 ? void 0 : response.setHeader("Set-Cookie", [ `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Expires=${COOKIE_EXPIRY_DATE}${secureCookie ? ";Secure=true" : ""}`, - `${csrfName}=${(_d = httpResponse.payload) === null || _d === void 0 ? void 0 : _d.csrf_k};samesite=strict;path=/;HttpOnly=true;Expires=${COOKIE_EXPIRY_DATE}`, + `${csrfName}=${(_c = httpResponse.payload) === null || _c === void 0 ? void 0 : _c.csrf_k};samesite=strict;path=/;HttpOnly=true;Expires=${COOKIE_EXPIRY_DATE}`, ]); if (debug) { debugFn("Response Sent!"); diff --git a/dist/package-shared/actions/users/logout-user.js b/dist/package-shared/actions/users/logout-user.js index e895823..15ee1fc 100644 --- a/dist/package-shared/actions/users/logout-user.js +++ b/dist/package-shared/actions/users/logout-user.js @@ -15,7 +15,6 @@ const debug_log_1 = __importDefault(require("../../utils/logging/debug-log")); * # Logout user */ function logoutUser({ response, database, dsqlUserId, encryptedUserString, request, cookieString, debug, }) { - var _a; /** * Check Encryption Keys * @@ -84,7 +83,6 @@ function logoutUser({ response, database, dsqlUserId, encryptedUserString, reque } catch (error) { console.log("Logout Error:", error.message); - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Logout User Error`, error); return { success: false, msg: "Logout Failed", diff --git a/dist/package-shared/actions/users/social/github-auth.js b/dist/package-shared/actions/users/social/github-auth.js index 60945e0..1c2692b 100644 --- a/dist/package-shared/actions/users/social/github-auth.js +++ b/dist/package-shared/actions/users/social/github-auth.js @@ -125,12 +125,11 @@ function githubAuth(_a) { str += chunk; }); response.on("end", function () { - var _a; try { resolve(JSON.parse(str)); } catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Github Auth Error`, error); + console.log("Github Auth Error:", error.message); resolve({ success: false, user: null, diff --git a/dist/package-shared/actions/users/update-user.d.ts b/dist/package-shared/actions/users/update-user.d.ts index 0ad47da..38124a8 100644 --- a/dist/package-shared/actions/users/update-user.d.ts +++ b/dist/package-shared/actions/users/update-user.d.ts @@ -1,15 +1,16 @@ import { UpdateUserFunctionReturn } from "../../types"; type Param = { key?: string; - database?: string; + database: string; updatedUserId: string | number; payload: { [s: string]: any; }; user_id?: boolean; + useLocal?: boolean; }; /** * # Update User */ -export default function updateUser({ key, payload, database, user_id, updatedUserId, }: Param): Promise; +export default function updateUser({ key, payload, database, user_id, updatedUserId, useLocal, }: Param): Promise; export {}; diff --git a/dist/package-shared/actions/users/update-user.js b/dist/package-shared/actions/users/update-user.js index 9b15d92..998010e 100644 --- a/dist/package-shared/actions/users/update-user.js +++ b/dist/package-shared/actions/users/update-user.js @@ -13,40 +13,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = updateUser; -const path_1 = __importDefault(require("path")); -const fs_1 = __importDefault(require("fs")); const grab_host_names_1 = __importDefault(require("../../utils/grab-host-names")); const api_update_user_1 = __importDefault(require("../../functions/api/users/api-update-user")); /** * # Update User */ function updateUser(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, payload, database, user_id, updatedUserId, }) { - /** - * Check for local DB settings - * - * @description Look for local db settings in `.env` file and by pass the http request if available - */ - const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env; + return __awaiter(this, arguments, void 0, function* ({ key, payload, database, user_id, updatedUserId, useLocal, }) { const grabedHostNames = (0, grab_host_names_1.default)(); const { host, port, scheme } = grabedHostNames; - if ((DSQL_DB_HOST === null || DSQL_DB_HOST === void 0 ? void 0 : DSQL_DB_HOST.match(/./)) && - (DSQL_DB_USERNAME === null || DSQL_DB_USERNAME === void 0 ? void 0 : DSQL_DB_USERNAME.match(/./)) && - (DSQL_DB_PASSWORD === null || DSQL_DB_PASSWORD === void 0 ? void 0 : DSQL_DB_PASSWORD.match(/./)) && - (DSQL_DB_NAME === null || DSQL_DB_NAME === void 0 ? void 0 : DSQL_DB_NAME.match(/./)) && - global.DSQL_USE_LOCAL) { - /** @type {import("../../types").DSQL_DatabaseSchemaType | undefined} */ - let dbSchema; - try { - const localDbSchemaPath = path_1.default.resolve(process.cwd(), "dsql.schema.json"); - dbSchema = JSON.parse(fs_1.default.readFileSync(localDbSchemaPath, "utf8")); - } - catch (error) { } + if (useLocal) { return yield (0, api_update_user_1.default)({ payload: payload, - dbFullName: DSQL_DB_NAME, + dbFullName: database, updatedUserId, - dbSchema, }); } /** diff --git a/dist/package-shared/actions/users/user-auth.js b/dist/package-shared/actions/users/user-auth.js index 4710960..09121b6 100644 --- a/dist/package-shared/actions/users/user-auth.js +++ b/dist/package-shared/actions/users/user-auth.js @@ -24,7 +24,6 @@ const yearInMilliseconds = dayInMilliseconds * 365; * with the user's data */ function userAuth({ request, req, encryptionKey, encryptionSalt, level, database, dsqlUserId, encryptedUserString, expiry = weekInMilliseconds, cookieString, csrfHeaderName, debug, skipFileCheck, }) { - var _a; try { const finalRequest = req || request; const { user_id } = (0, grab_host_names_1.default)({ userId: dsqlUserId }); @@ -163,7 +162,6 @@ function userAuth({ request, req, encryptionKey, encryptionSalt, level, database }; } catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `User Auth Error`, error); /** * Return User Object * diff --git a/dist/package-shared/actions/users/validate-temp-email-code.js b/dist/package-shared/actions/users/validate-temp-email-code.js index a801451..534d2f6 100644 --- a/dist/package-shared/actions/users/validate-temp-email-code.js +++ b/dist/package-shared/actions/users/validate-temp-email-code.js @@ -22,7 +22,6 @@ const ejson_1 = __importDefault(require("../../utils/ejson")); */ function validateTempEmailCode(_a) { return __awaiter(this, arguments, void 0, function* ({ request, email, cookieString, }) { - var _b; try { const keyNames = (0, get_auth_cookie_names_1.default)(); const oneTimeCodeCookieName = keyNames.oneTimeCodeName; @@ -41,7 +40,6 @@ function validateTempEmailCode(_a) { return null; } catch (error) { - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Validate Temp Email Code Error`, error); console.log("validateTempEmailCode error:", error.message); return null; } diff --git a/dist/package-shared/actions/users/validate-token.js b/dist/package-shared/actions/users/validate-token.js index ec18a3d..edc9a6b 100644 --- a/dist/package-shared/actions/users/validate-token.js +++ b/dist/package-shared/actions/users/validate-token.js @@ -11,7 +11,6 @@ const decrypt_1 = __importDefault(require("../../functions/dsql/decrypt")); * @description This Function takes in a encrypted token and returns a user object */ function validateToken({ token, encryptionKey, encryptionSalt, }) { - var _a; try { /** * Grab the payload @@ -54,7 +53,6 @@ function validateToken({ token, encryptionKey, encryptionSalt, }) { return userObject; } catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Validate Token Error`, error); /** * Return User Object * diff --git a/dist/package-shared/dict/app-names.d.ts b/dist/package-shared/dict/app-names.d.ts index 10a48bd..0edcb3d 100644 --- a/dist/package-shared/dict/app-names.d.ts +++ b/dist/package-shared/dict/app-names.d.ts @@ -5,4 +5,5 @@ export declare const AppNames: { readonly PrivateMediaProceedureName: "dsql_UpdateUserMedia"; readonly PrivateMediaInsertTriggerName: "dsql_trg_user_private_folders_insert"; readonly PrivateMediaDeleteTriggerName: "dsql_trg_user_private_folders_delete"; + readonly WebsocketPathname: "dsql-websocket"; }; diff --git a/dist/package-shared/dict/app-names.js b/dist/package-shared/dict/app-names.js index 2ce9501..c836da2 100644 --- a/dist/package-shared/dict/app-names.js +++ b/dist/package-shared/dict/app-names.js @@ -8,4 +8,5 @@ exports.AppNames = { PrivateMediaProceedureName: "dsql_UpdateUserMedia", PrivateMediaInsertTriggerName: "dsql_trg_user_private_folders_insert", PrivateMediaDeleteTriggerName: "dsql_trg_user_private_folders_delete", + WebsocketPathname: "dsql-websocket", }; diff --git a/dist/package-shared/functions/api/query-dsql-api.js b/dist/package-shared/functions/api/query-dsql-api.js index ee1161b..f402767 100644 --- a/dist/package-shared/functions/api/query-dsql-api.js +++ b/dist/package-shared/functions/api/query-dsql-api.js @@ -68,7 +68,19 @@ function queryDSQLAPI(_a) { }); response.on("end", function () { try { - resolve(JSON.parse(str)); + const responseObj = JSON.parse(str); + if (!responseObj.success) { + // console.log("responseObj", responseObj); + // console.log( + // "response.headers", + // response.headers + // ); + // console.log( + // "httpsRequest.headers", + // httpsRequest.getHeaders() + // ); + } + resolve(responseObj); } catch (error) { resolve({ diff --git a/dist/package-shared/functions/api/query/get.d.ts b/dist/package-shared/functions/api/query/get.d.ts index 6ccae7a..a40e91a 100644 --- a/dist/package-shared/functions/api/query/get.d.ts +++ b/dist/package-shared/functions/api/query/get.d.ts @@ -1,18 +1,16 @@ import { DbContextsArray } from "../../backend/db/runQuery"; -import { ApiGetQueryObject } from "../../../types"; +import { DSQL_DatabaseSchemaType, DsqlCrudQueryObject, GetReturn } from "../../../types"; type Param = { - query: string | ApiGetQueryObject; - queryValues?: (string | number)[]; + query: DsqlCrudQueryObject; dbFullName: string; - tableName?: string; - dbSchema?: import("../../../types").DSQL_DatabaseSchemaType; + tableName: string; + dbSchema?: DSQL_DatabaseSchemaType; debug?: boolean; dbContext?: (typeof DbContextsArray)[number]; - forceLocal?: boolean; }; /** * # Get Function FOr API @@ -21,5 +19,5 @@ export default function apiGet({ query, dbFullName, queryValues, tableName, dbSchema, debug, dbContext, forceLocal, }: Param): Promise; +}>({ query, dbFullName, tableName, dbSchema, debug, }: Param): Promise; export {}; diff --git a/dist/package-shared/functions/api/query/get.js b/dist/package-shared/functions/api/query/get.js index 2dec4f5..a96aea2 100644 --- a/dist/package-shared/functions/api/query/get.js +++ b/dist/package-shared/functions/api/query/get.js @@ -13,79 +13,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = apiGet; -const lodash_1 = __importDefault(require("lodash")); -const serverError_1 = __importDefault(require("../../backend/serverError")); -const runQuery_1 = __importDefault(require("../../backend/db/runQuery")); -const grab_query_and_values_1 = __importDefault(require("../../../utils/grab-query-and-values")); +const sql_generator_1 = __importDefault(require("../../dsql/sql/sql-generator")); +const crud_1 = __importDefault(require("../../../utils/data-fetching/crud")); /** * # Get Function FOr API */ function apiGet(_a) { - return __awaiter(this, arguments, void 0, function* ({ query, dbFullName, queryValues, tableName, dbSchema, debug, dbContext, forceLocal, }) { - var _b, _c; - const queryAndValues = (0, grab_query_and_values_1.default)({ - query, - values: queryValues, + return __awaiter(this, arguments, void 0, function* ({ query, dbFullName, tableName, dbSchema, debug, }) { + const queryAndValues = (0, sql_generator_1.default)({ + tableName, + genObject: query, + dbFullName, }); - if (typeof query == "string" && query.match(/^alter|^delete|^create/i)) { - return { success: false, msg: "Wrong Input." }; - } - let results; - try { - let { result, error } = yield (0, runQuery_1.default)({ - dbFullName: dbFullName, - query: queryAndValues.query, - queryValuesArray: queryAndValues.values, - readOnly: true, - dbSchema, - tableName, - dbContext, - debug, - forceLocal, - }); - if (debug && global.DSQL_USE_LOCAL) { - console.log("apiGet:result", result); - console.log("apiGet:error", error); - } - let tableSchema; - if (dbSchema) { - const targetTable = (_b = dbSchema.tables) === null || _b === void 0 ? void 0 : _b.find((table) => table.tableName === tableName); - if (targetTable) { - const clonedTargetTable = lodash_1.default.cloneDeep(targetTable); - delete clonedTargetTable.childTable; - delete clonedTargetTable.childrenTables; - delete clonedTargetTable.updateData; - delete clonedTargetTable.indexes; - tableSchema = clonedTargetTable; - } - } - if (error) - throw error; - if (result.error) - throw new Error(result.error); - results = result; - const resObject = { - success: true, - payload: results, - schema: tableName && tableSchema ? tableSchema : undefined, - }; - return resObject; - } - catch (error) { - (0, serverError_1.default)({ - component: "/api/query/get/lines-85-94", - message: error.message, - }); - (_c = global.ERROR_CALLBACK) === null || _c === void 0 ? void 0 : _c.call(global, `API Get Error`, error); - if (debug && global.DSQL_USE_LOCAL) { - console.log("apiGet:error", error.message); - console.log("queryAndValues", queryAndValues); - } - return { - success: false, - payload: null, - error: error.message, - }; - } + const result = yield (0, crud_1.default)({ + action: "get", + table: tableName, + dbFullName, + query, + }); + return result; }); } diff --git a/dist/package-shared/functions/api/query/post.d.ts b/dist/package-shared/functions/api/query/post.d.ts index 55b1515..416f6f5 100644 --- a/dist/package-shared/functions/api/query/post.d.ts +++ b/dist/package-shared/functions/api/query/post.d.ts @@ -7,11 +7,10 @@ type Param = { tableName?: string; dbSchema?: DSQL_DatabaseSchemaType; dbContext?: (typeof DbContextsArray)[number]; - forceLocal?: boolean; debug?: boolean; }; /** * # Post Function For API */ -export default function apiPost({ query, dbFullName, queryValues, tableName, dbSchema, dbContext, forceLocal, debug, }: Param): Promise; +export default function apiPost({ query, dbFullName, queryValues, tableName, dbSchema, dbContext, debug, }: Param): Promise; export {}; diff --git a/dist/package-shared/functions/api/query/post.js b/dist/package-shared/functions/api/query/post.js index 40b6d57..43decfe 100644 --- a/dist/package-shared/functions/api/query/post.js +++ b/dist/package-shared/functions/api/query/post.js @@ -21,8 +21,8 @@ const debug_log_1 = __importDefault(require("../../../utils/logging/debug-log")) * # Post Function For API */ function apiPost(_a) { - return __awaiter(this, arguments, void 0, function* ({ query, dbFullName, queryValues, tableName, dbSchema, dbContext, forceLocal, debug, }) { - var _b, _c; + return __awaiter(this, arguments, void 0, function* ({ query, dbFullName, queryValues, tableName, dbSchema, dbContext, debug, }) { + var _b; if (typeof query === "string" && (query === null || query === void 0 ? void 0 : query.match(/^create |^alter |^drop /i))) { return { success: false, msg: "Wrong Input" }; } @@ -44,7 +44,6 @@ function apiPost(_a) { queryValuesArray: queryValues, tableName, dbContext, - forceLocal, debug, }); if (debug) { @@ -86,7 +85,6 @@ function apiPost(_a) { component: "/api/query/post/lines-132-142", message: error.message, }); - (_c = global.ERROR_CALLBACK) === null || _c === void 0 ? void 0 : _c.call(global, `API Post Error`, error); return { success: false, payload: results, diff --git a/dist/package-shared/functions/api/social-login/facebookLogin.js b/dist/package-shared/functions/api/social-login/facebookLogin.js index 32b5e94..e5e5763 100644 --- a/dist/package-shared/functions/api/social-login/facebookLogin.js +++ b/dist/package-shared/functions/api/social-login/facebookLogin.js @@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = facebookLogin; -const DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/DB_HANDLER")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); const serverError_1 = __importDefault(require("../../backend/serverError")); const hashPassword_1 = __importDefault(require("../../dsql/hashPassword")); /** @@ -22,14 +22,18 @@ const hashPassword_1 = __importDefault(require("../../dsql/hashPassword")); function facebookLogin(_a) { return __awaiter(this, arguments, void 0, function* ({ usertype, body, }) { try { - const foundUser = yield (0, DB_HANDLER_1.default)(`SELECT * FROM users WHERE email='${body.facebookUserEmail}' AND social_login='1'`); + const foundUser = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM users WHERE email='${body.facebookUserEmail}' AND social_login='1'`, + values: [body.facebookUserEmail], + })); if (foundUser && foundUser[0]) { return foundUser[0]; } let socialHashedPassword = (0, hashPassword_1.default)({ password: body.facebookUserId, }); - let newUser = yield (0, DB_HANDLER_1.default)(`INSERT INTO ${usertype} ( + let newUser = (yield (0, dbHandler_1.default)({ + query: `INSERT INTO ${usertype} ( first_name, last_name, social_platform, @@ -49,8 +53,8 @@ function facebookLogin(_a) { '${body.facebookUserLastName}', 'facebook', 'facebook_${body.facebookUserEmail - ? body.facebookUserEmail.replace(/@.*/, "") - : body.facebookUserFirstName.toLowerCase()}', + ? body.facebookUserEmail.replace(/@.*/, "") + : body.facebookUserFirstName.toLowerCase()}', '${body.facebookUserEmail}', '${body.facebookUserImage}', '${body.facebookUserImage}', @@ -61,8 +65,20 @@ function facebookLogin(_a) { '1', '${Date()}', '${Date.now()}' - )`); - const newFoundUser = yield (0, DB_HANDLER_1.default)(`SELECT * FROM ${usertype} WHERE id='${newUser.insertId}'`); + )`, + values: [ + body.facebookUserFirstName, + body.facebookUserLastName, + body.facebookUserEmail, + body.facebookUserImage, + socialHashedPassword, + body.facebookUserId, + ], + })); + const newFoundUser = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM ${usertype} WHERE id=?`, + values: (newUser === null || newUser === void 0 ? void 0 : newUser.insertId) ? [newUser === null || newUser === void 0 ? void 0 : newUser.insertId] : [], + })); } catch ( /** @type {any} */error) { (0, serverError_1.default)({ diff --git a/dist/package-shared/functions/api/social-login/githubLogin.js b/dist/package-shared/functions/api/social-login/githubLogin.js index ef5a828..8567396 100644 --- a/dist/package-shared/functions/api/social-login/githubLogin.js +++ b/dist/package-shared/functions/api/social-login/githubLogin.js @@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = githubLogin; -const DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/DB_HANDLER")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); const httpsRequest_1 = __importDefault(require("../../backend/httpsRequest")); /** * # Login/signup a github user @@ -48,7 +48,10 @@ function githubLogin(_a) { }); gitHubUser = JSON.parse(userDataResponse); if (!(gitHubUser === null || gitHubUser === void 0 ? void 0 : gitHubUser.email) && gitHubUser) { - const existingGithubUser = yield (0, DB_HANDLER_1.default)(`SELECT email FROM users WHERE social_login='1' AND social_platform='github' AND social_id='${gitHubUser.id}'`); + const existingGithubUser = (yield (0, dbHandler_1.default)({ + query: `SELECT email FROM users WHERE social_login='1' AND social_platform='github' AND social_id='${gitHubUser.id}'`, + values: [gitHubUser.id], + })); if (existingGithubUser && existingGithubUser[0]) { gitHubUser.email = existingGithubUser[0].email; } diff --git a/dist/package-shared/functions/api/social-login/googleLogin.js b/dist/package-shared/functions/api/social-login/googleLogin.js index 6f53154..636abc4 100644 --- a/dist/package-shared/functions/api/social-login/googleLogin.js +++ b/dist/package-shared/functions/api/social-login/googleLogin.js @@ -15,14 +15,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.default = googleLogin; const google_auth_library_1 = require("google-auth-library"); const serverError_1 = __importDefault(require("../../backend/serverError")); -const DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/DB_HANDLER")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); const hashPassword_1 = __importDefault(require("../../dsql/hashPassword")); /** * # Google Login */ function googleLogin(_a) { return __awaiter(this, arguments, void 0, function* ({ usertype, foundUser, isSocialValidated, isUserValid, reqBody, serverRes, loginFailureReason, }) { - var _b, _c; + var _b; const client = new google_auth_library_1.OAuth2Client(process.env.DSQL_GOOGLE_CLIENT_ID); let isGoogleAuthValid = false; let newFoundUser = null; @@ -54,8 +54,11 @@ function googleLogin(_a) { //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// - let existinEmail = yield (0, DB_HANDLER_1.default)(`SELECT * FROM ${usertype} WHERE email='${payload.email}' AND social_login!='1' AND social_platform!='google'`); - if (existinEmail && existinEmail[0]) { + let existinEmail = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM ${usertype} WHERE email='${payload.email}' AND social_login!='1' AND social_platform!='google'`, + values: [payload.email], + })); + if (existinEmail === null || existinEmail === void 0 ? void 0 : existinEmail[0]) { loginFailureReason = "Email Exists Already"; isGoogleAuthValid = false; return { @@ -65,8 +68,11 @@ function googleLogin(_a) { }; } //////////////////////////////////////// - foundUser = yield (0, DB_HANDLER_1.default)(`SELECT * FROM ${usertype} WHERE email='${payload.email}' AND social_login='1' AND social_platform='google'`); - if (foundUser && foundUser[0]) { + foundUser = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM ${usertype} WHERE email=? AND social_login='1' AND social_platform='google'`, + values: [payload.email], + })); + if (foundUser === null || foundUser === void 0 ? void 0 : foundUser[0]) { newFoundUser = foundUser; return { isGoogleAuthValid: isGoogleAuthValid, @@ -76,9 +82,10 @@ function googleLogin(_a) { //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// - let newUser = yield (0, DB_HANDLER_1.default)(`INSERT INTO ${usertype} ( + let newUser = (yield (0, dbHandler_1.default)({ + query: `INSERT INTO ${usertype} ( first_name, - last_name, + last_name, social_platform, social_name, social_id, @@ -106,15 +113,18 @@ function googleLogin(_a) { '1', '${Date()}', '${Date.now()}' - )`); - newFoundUser = yield (0, DB_HANDLER_1.default)(`SELECT * FROM ${usertype} WHERE id='${newUser.insertId}'`); + )`, + })); + newFoundUser = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM ${usertype} WHERE id=?`, + values: [newUser.insertId], + })); } catch (error) { (0, serverError_1.default)({ component: "googleLogin", message: error.message, }); - (_c = global.ERROR_CALLBACK) === null || _c === void 0 ? void 0 : _c.call(global, `Google Login Error`, error); loginFailureReason = error; isUserValid = false; isSocialValidated = false; diff --git a/dist/package-shared/functions/api/social-login/handleSocialDb.js b/dist/package-shared/functions/api/social-login/handleSocialDb.js index a396da4..76c92fd 100644 --- a/dist/package-shared/functions/api/social-login/handleSocialDb.js +++ b/dist/package-shared/functions/api/social-login/handleSocialDb.js @@ -17,7 +17,7 @@ const fs_1 = __importDefault(require("fs")); const handleNodemailer_1 = __importDefault(require("../../backend/handleNodemailer")); const path_1 = __importDefault(require("path")); const addMariadbUser_1 = __importDefault(require("../../backend/addMariadbUser")); -const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); const encrypt_1 = __importDefault(require("../../dsql/encrypt")); const addDbEntry_1 = __importDefault(require("../../backend/db/addDbEntry")); const loginSocialUser_1 = __importDefault(require("./loginSocialUser")); @@ -27,26 +27,20 @@ const grab_dir_names_1 = __importDefault(require("../../../utils/backend/names/g */ function handleSocialDb(_a) { return __awaiter(this, arguments, void 0, function* ({ database, email, social_platform, payload, invitation, supEmail, additionalFields, debug, loginOnly, }) { - var _b, _c; + var _b; try { - const finalDbName = global.DSQL_USE_LOCAL - ? undefined - : database - ? database - : "datasquirel"; - const dbAppend = global.DSQL_USE_LOCAL ? "" : `${finalDbName}.`; - const existingSocialUserQUery = `SELECT * FROM ${dbAppend}users WHERE email = ? AND social_login='1' AND social_platform = ? `; + const finalDbName = database ? database : "datasquirel"; + const existingSocialUserQUery = `SELECT * FROM users WHERE email = ? AND social_login='1' AND social_platform = ? `; const existingSocialUserValues = [email, social_platform]; if (debug) { console.log("handleSocialDb:existingSocialUserQUery", existingSocialUserQUery); console.log("handleSocialDb:existingSocialUserValues", existingSocialUserValues); } - let existingSocialUser = yield (0, varDatabaseDbHandler_1.default)({ + let existingSocialUser = (yield (0, dbHandler_1.default)({ database: finalDbName, - queryString: existingSocialUserQUery, - queryValuesArray: existingSocialUserValues, - debug, - }); + query: existingSocialUserQUery, + values: existingSocialUserValues, + })); if (debug) { console.log("handleSocialDb:existingSocialUser", existingSocialUser); } @@ -75,15 +69,14 @@ function handleSocialDb(_a) { msg: "No Email Present", }; } - const existingEmailOnlyQuery = `SELECT * FROM ${dbAppend}users WHERE email='${finalEmail}'`; + const existingEmailOnlyQuery = `SELECT * FROM users WHERE email='${finalEmail}'`; if (debug) { console.log("handleSocialDb:existingEmailOnlyQuery", existingEmailOnlyQuery); } - let existingEmailOnly = yield (0, varDatabaseDbHandler_1.default)({ + let existingEmailOnly = (yield (0, dbHandler_1.default)({ database: finalDbName, - queryString: existingEmailOnlyQuery, - debug, - }); + query: existingEmailOnlyQuery, + })); if (debug) { console.log("handleSocialDb:existingEmailOnly", existingEmailOnly); } @@ -131,12 +124,11 @@ function handleSocialDb(_a) { */ yield (0, addMariadbUser_1.default)({ userId: newUser.payload.insertId }); } - const newUserQueriedQuery = `SELECT * FROM ${dbAppend}users WHERE id='${newUser.payload.insertId}'`; - const newUserQueried = yield (0, varDatabaseDbHandler_1.default)({ + const newUserQueriedQuery = `SELECT * FROM users WHERE id='${newUser.payload.insertId}'`; + const newUserQueried = (yield (0, dbHandler_1.default)({ database: finalDbName, - queryString: newUserQueriedQuery, - debug, - }); + query: newUserQueriedQuery, + })); if (!newUserQueried || !newUserQueried[0]) return { success: false, @@ -207,7 +199,6 @@ function handleSocialDb(_a) { } catch (error) { console.log("ERROR in 'handleSocialDb.ts' backend function =>", error.message); - (_c = global.ERROR_CALLBACK) === null || _c === void 0 ? void 0 : _c.call(global, `Handle Social DB Error`, error); return { success: false, payload: null, diff --git a/dist/package-shared/functions/api/social-login/loginSocialUser.js b/dist/package-shared/functions/api/social-login/loginSocialUser.js index e68f7cf..b640eb1 100644 --- a/dist/package-shared/functions/api/social-login/loginSocialUser.js +++ b/dist/package-shared/functions/api/social-login/loginSocialUser.js @@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = loginSocialUser; const addAdminUserOnLogin_1 = __importDefault(require("../../backend/addAdminUserOnLogin")); -const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); /** * Function to login social user * ============================================================================== @@ -27,12 +27,11 @@ function loginSocialUser(_a) { const dbAppend = database ? `\`${finalDbName}\`.` : ""; const foundUserQuery = `SELECT * FROM ${dbAppend}\`users\` WHERE email=?`; const foundUserValues = [user.email]; - const foundUser = yield (0, varDatabaseDbHandler_1.default)({ + const foundUser = (yield (0, dbHandler_1.default)({ + query: foundUserQuery, + values: foundUserValues, database: finalDbName, - queryString: foundUserQuery, - queryValuesArray: foundUserValues, - debug, - }); + })); if (!(foundUser === null || foundUser === void 0 ? void 0 : foundUser[0])) return { success: false, diff --git a/dist/package-shared/functions/api/users/api-create-user.d.ts b/dist/package-shared/functions/api/users/api-create-user.d.ts index cead025..09ba000 100644 --- a/dist/package-shared/functions/api/users/api-create-user.d.ts +++ b/dist/package-shared/functions/api/users/api-create-user.d.ts @@ -2,7 +2,7 @@ import { APICreateUserFunctionParams } from "../../../types"; /** * # API Create User */ -export default function apiCreateUser({ encryptionKey, payload, database, userId, }: APICreateUserFunctionParams): Promise<{ +export default function apiCreateUser({ encryptionKey, payload, database, userId, verify, }: APICreateUserFunctionParams): Promise<{ success: boolean; msg: string; payload?: undefined; diff --git a/dist/package-shared/functions/api/users/api-create-user.js b/dist/package-shared/functions/api/users/api-create-user.js index bab5611..608d8fd 100644 --- a/dist/package-shared/functions/api/users/api-create-user.js +++ b/dist/package-shared/functions/api/users/api-create-user.js @@ -17,17 +17,15 @@ const grab_required_database_schemas_1 = require("../../../shell/createDbFromSch const addUsersTableToDb_1 = __importDefault(require("../../backend/addUsersTableToDb")); const addDbEntry_1 = __importDefault(require("../../backend/db/addDbEntry")); const updateUsersTableSchema_1 = __importDefault(require("../../backend/updateUsersTableSchema")); -const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); const hashPassword_1 = __importDefault(require("../../dsql/hashPassword")); const validate_email_1 = __importDefault(require("../../email/fns/validate-email")); /** * # API Create User */ function apiCreateUser(_a) { - return __awaiter(this, arguments, void 0, function* ({ encryptionKey, payload, database, userId, }) { + return __awaiter(this, arguments, void 0, function* ({ encryptionKey, payload, database, userId, verify, }) { var _b; - const dbFullName = database; - const API_USER_ID = userId || process.env.DSQL_API_USER_ID; const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD; if (!finalEncryptionKey) { return { @@ -43,9 +41,10 @@ function apiCreateUser(_a) { payload: null, }; } - const targetDbSchema = (0, grab_required_database_schemas_1.findDbNameInSchemaDir)({ - dbName: dbFullName, + const targetDbSchema = (0, grab_required_database_schemas_1.grabPrimaryRequiredDbSchema)({ + dbSlug: database, userId, + dbId: userId ? undefined : 1, }); if (!(targetDbSchema === null || targetDbSchema === void 0 ? void 0 : targetDbSchema.id)) { return { @@ -54,27 +53,35 @@ function apiCreateUser(_a) { payload: null, }; } + const dbFullName = targetDbSchema.dbFullName; + if (!dbFullName) { + return { + success: false, + msg: "dbFullName not found", + payload: null, + }; + } const hashedPassword = (0, hashPassword_1.default)({ encryptionKey: finalEncryptionKey, password: String(payload.password), }); payload.password = hashedPassword; const fieldsQuery = `SHOW COLUMNS FROM ${dbFullName}.users`; - let fields = yield (0, varDatabaseDbHandler_1.default)({ - queryString: fieldsQuery, + let fields = (yield (0, dbHandler_1.default)({ + query: fieldsQuery, database: dbFullName, - }); + })); if (!(fields === null || fields === void 0 ? void 0 : fields[0])) { const newTable = yield (0, addUsersTableToDb_1.default)({ - userId: Number(API_USER_ID), + userId, database: dbFullName, payload: payload, dbId: targetDbSchema.id, }); - fields = yield (0, varDatabaseDbHandler_1.default)({ - queryString: fieldsQuery, + fields = (yield (0, dbHandler_1.default)({ + query: fieldsQuery, database: dbFullName, - }); + })); } if (!(fields === null || fields === void 0 ? void 0 : fields[0])) { return { @@ -88,7 +95,7 @@ function apiCreateUser(_a) { const key = Object.keys(payload)[i]; if (!fieldsTitles.includes(key)) { yield (0, updateUsersTableSchema_1.default)({ - userId: Number(API_USER_ID), + userId, database: dbFullName, newPayload: { [key]: payload[key], @@ -107,11 +114,11 @@ function apiCreateUser(_a) { const existingUserValues = payload.username ? [payload.email, payload.username] : [payload.email]; - const existingUser = yield (0, varDatabaseDbHandler_1.default)({ - queryString: existingUserQuery, - queryValuesArray: existingUserValues, + const existingUser = (yield (0, dbHandler_1.default)({ + query: existingUserQuery, + values: existingUserValues, database: dbFullName, - }); + })); if (existingUser === null || existingUser === void 0 ? void 0 : existingUser[0]) { return { success: false, @@ -132,14 +139,15 @@ function apiCreateUser(_a) { tableName: "users", data: Object.assign(Object.assign({}, payload), { image: process.env.DSQL_DEFAULT_USER_IMAGE || "/images/user-preset.png", image_thumbnail: process.env.DSQL_DEFAULT_USER_IMAGE || - "/images/user-preset-thumbnail.png" }), + "/images/user-preset-thumbnail.png", verification_status: verify ? 1 : 0 }), }); if ((_b = addUser === null || addUser === void 0 ? void 0 : addUser.payload) === null || _b === void 0 ? void 0 : _b.insertId) { const newlyAddedUserQuery = `SELECT id,uuid,first_name,last_name,email,username,image,image_thumbnail,verification_status FROM ${dbFullName}.users WHERE id='${addUser.payload.insertId}'`; - const newlyAddedUser = yield (0, varDatabaseDbHandler_1.default)({ - queryString: newlyAddedUserQuery, + const newlyAddedUser = (yield (0, dbHandler_1.default)({ + query: newlyAddedUserQuery, + values: [], database: dbFullName, - }); + })); return { success: true, payload: newlyAddedUser[0], diff --git a/dist/package-shared/functions/api/users/api-delete-user.js b/dist/package-shared/functions/api/users/api-delete-user.js index 5dd5095..16c8cb7 100644 --- a/dist/package-shared/functions/api/users/api-delete-user.js +++ b/dist/package-shared/functions/api/users/api-delete-user.js @@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = apiDeleteUser; const deleteDbEntry_1 = __importDefault(require("../../backend/db/deleteDbEntry")); -const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); /** * # Update API User Function */ @@ -22,11 +22,11 @@ function apiDeleteUser(_a) { return __awaiter(this, arguments, void 0, function* ({ dbFullName, deletedUserId, }) { const existingUserQuery = `SELECT * FROM ${dbFullName}.users WHERE id = ?`; const existingUserValues = [deletedUserId]; - const existingUser = yield (0, varDatabaseDbHandler_1.default)({ - queryString: existingUserQuery, - queryValuesArray: existingUserValues, + const existingUser = (yield (0, dbHandler_1.default)({ + query: existingUserQuery, + values: existingUserValues, database: dbFullName, - }); + })); if (!(existingUser === null || existingUser === void 0 ? void 0 : existingUser[0])) { return { success: false, diff --git a/dist/package-shared/functions/api/users/api-get-user.js b/dist/package-shared/functions/api/users/api-get-user.js index ab21b65..af33c32 100644 --- a/dist/package-shared/functions/api/users/api-get-user.js +++ b/dist/package-shared/functions/api/users/api-get-user.js @@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = apiGetUser; -const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); /** * # API Get User */ @@ -22,11 +22,11 @@ function apiGetUser(_a) { const finalDbName = dbFullName.replace(/[^a-z0-9_]/g, ""); const query = `SELECT ${fields.join(",")} FROM ${finalDbName}.users WHERE id=?`; const API_USER_ID = userId || process.env.DSQL_API_USER_ID; - let foundUser = yield (0, varDatabaseDbHandler_1.default)({ - queryString: query, - queryValuesArray: [API_USER_ID], + let foundUser = (yield (0, dbHandler_1.default)({ + query, + values: [API_USER_ID], database: finalDbName, - }); + })); if (!foundUser || !foundUser[0]) { return { success: false, diff --git a/dist/package-shared/functions/api/users/api-login.js b/dist/package-shared/functions/api/users/api-login.js index 9f3b9ed..a95abcb 100644 --- a/dist/package-shared/functions/api/users/api-login.js +++ b/dist/package-shared/functions/api/users/api-login.js @@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = apiLoginUser; const grab_db_full_name_1 = __importDefault(require("../../../utils/grab-db-full-name")); -const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); const hashPassword_1 = __importDefault(require("../../dsql/hashPassword")); /** * # API Login @@ -29,7 +29,6 @@ function apiLoginUser(_a) { msg: `Database Full Name couldn't be grabbed`, }; } - const dbAppend = global.DSQL_USE_LOCAL ? "" : `${dbFullName}.`; /** * Check input validity * @@ -58,12 +57,11 @@ function apiLoginUser(_a) { console.log("apiLoginUser:database:", dbFullName); console.log("apiLoginUser:Finding User ..."); } - let foundUser = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT * FROM ${dbAppend}users WHERE email = ? OR username = ?`, - queryValuesArray: [email, username], + let foundUser = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM users WHERE email = ? OR username = ?`, + values: [email, username], database: dbFullName, - debug, - }); + })); if (debug) { console.log("apiLoginUser:foundUser:", foundUser); } @@ -119,9 +117,9 @@ function apiLoginUser(_a) { console.log("apiLoginUser:email_login:", email_login); } if (isPasswordCorrect && email_login) { - const resetTempCode = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `UPDATE ${dbAppend}users SET ${email_login_field} = '' WHERE email = ? OR username = ?`, - queryValuesArray: [email, username], + yield (0, dbHandler_1.default)({ + query: `UPDATE users SET ${email_login_field} = '' WHERE email = ? OR username = ?`, + values: [email, username], database: dbFullName, }); } diff --git a/dist/package-shared/functions/api/users/api-reauth-user.js b/dist/package-shared/functions/api/users/api-reauth-user.js index e26d31e..0eb91a4 100644 --- a/dist/package-shared/functions/api/users/api-reauth-user.js +++ b/dist/package-shared/functions/api/users/api-reauth-user.js @@ -13,23 +13,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = apiReauthUser; -const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); /** * # Re-authenticate API user */ function apiReauthUser(_a) { return __awaiter(this, arguments, void 0, function* ({ existingUser, database, additionalFields, }) { - const dbAppend = global.DSQL_USE_LOCAL - ? "" - : database - ? `${database}.` - : ""; let foundUser = (existingUser === null || existingUser === void 0 ? void 0 : existingUser.id) && existingUser.id.toString().match(/./) - ? yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT * FROM ${dbAppend}users WHERE id=?`, - queryValuesArray: [existingUser.id.toString()], + ? (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM users WHERE id=?`, + values: [existingUser.id.toString()], database, - }) + })) : null; if (!foundUser || !foundUser[0]) return { diff --git a/dist/package-shared/functions/api/users/api-send-email-code.d.ts b/dist/package-shared/functions/api/users/api-send-email-code.d.ts index 2b21878..e0cdc98 100644 --- a/dist/package-shared/functions/api/users/api-send-email-code.d.ts +++ b/dist/package-shared/functions/api/users/api-send-email-code.d.ts @@ -1,5 +1,5 @@ import http from "http"; -import { SendOneTimeCodeEmailResponse } from "../../../types"; +import { CookieObject, SendOneTimeCodeEmailResponse } from "../../../types"; type Param = { email: string; database: string; @@ -13,7 +13,7 @@ type Param = { response?: http.ServerResponse & { [s: string]: any; }; - extraCookies?: import("../../../../package-shared/types").CookieObject[]; + extraCookies?: CookieObject[]; }; /** * # Send Email Login Code diff --git a/dist/package-shared/functions/api/users/api-send-email-code.js b/dist/package-shared/functions/api/users/api-send-email-code.js index 9de591f..d0961d3 100644 --- a/dist/package-shared/functions/api/users/api-send-email-code.js +++ b/dist/package-shared/functions/api/users/api-send-email-code.js @@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = apiSendEmailCode; -const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); const nodemailer_1 = __importDefault(require("nodemailer")); const get_auth_cookie_names_1 = __importDefault(require("../../backend/cookies/get-auth-cookie-names")); const encrypt_1 = __importDefault(require("../../dsql/encrypt")); @@ -32,14 +32,11 @@ function apiSendEmailCode(_a) { const createdAt = Date.now(); const foundUserQuery = `SELECT * FROM ${database}.users WHERE email = ?`; const foundUserValues = [email]; - let foundUser = yield (0, varDatabaseDbHandler_1.default)({ - queryString: foundUserQuery, - queryValuesArray: foundUserValues, + let foundUser = (yield (0, dbHandler_1.default)({ + query: foundUserQuery, + values: foundUserValues, database, - }); - //////////////////////////////////////// - //////////////////////////////////////// - //////////////////////////////////////// + })); if (!foundUser || !foundUser[0]) { return { success: false, @@ -80,12 +77,11 @@ function apiSendEmailCode(_a) { throw new Error("Mail not Sent!"); const setTempCodeQuery = `UPDATE ${database}.users SET ${email_login_field} = ? WHERE email = ?`; const setTempCodeValues = [tempCode + `-${createdAt}`, email]; - let setTempCode = yield (0, varDatabaseDbHandler_1.default)({ - queryString: setTempCodeQuery, - queryValuesArray: setTempCodeValues, + yield (0, dbHandler_1.default)({ + query: setTempCodeQuery, + values: setTempCodeValues, database, }); - /** @type {import("../../../types").SendOneTimeCodeEmailResponse} */ const resObject = { success: true, code: tempCode, @@ -102,7 +98,6 @@ function apiSendEmailCode(_a) { if (!encryptedPayload) { throw new Error("apiSendEmailCode Error: Failed to encrypt payload"); } - /** @type {import("../../../../package-shared/types").CookieObject} */ const oneTimeCookieObject = { name: oneTimeCodeCookieName, value: encryptedPayload, @@ -111,7 +106,6 @@ function apiSendEmailCode(_a) { httpOnly: true, secure: true, }; - /** @type {import("../../../../package-shared/types").CookieObject[]} */ const cookiesObjectArray = extraCookies ? [...extraCookies, oneTimeCookieObject] : [oneTimeCookieObject]; diff --git a/dist/package-shared/functions/api/users/api-update-user.js b/dist/package-shared/functions/api/users/api-update-user.js index 1960a57..2546d44 100644 --- a/dist/package-shared/functions/api/users/api-update-user.js +++ b/dist/package-shared/functions/api/users/api-update-user.js @@ -17,7 +17,7 @@ exports.default = apiUpdateUser; const updateDbEntry_1 = __importDefault(require("../../backend/db/updateDbEntry")); const encrypt_1 = __importDefault(require("../../dsql/encrypt")); const hashPassword_1 = __importDefault(require("../../dsql/hashPassword")); -const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../backend/dbHandler")); /** * # Update API User Function */ @@ -25,11 +25,11 @@ function apiUpdateUser(_a) { return __awaiter(this, arguments, void 0, function* ({ payload, dbFullName, updatedUserId, dbSchema, }) { const existingUserQuery = `SELECT * FROM ${dbFullName}.users WHERE id = ?`; const existingUserValues = [updatedUserId]; - const existingUser = yield (0, varDatabaseDbHandler_1.default)({ - queryString: existingUserQuery, - queryValuesArray: existingUserValues, + const existingUser = (yield (0, dbHandler_1.default)({ + query: existingUserQuery, + values: existingUserValues, database: dbFullName, - }); + })); if (!(existingUser === null || existingUser === void 0 ? void 0 : existingUser[0])) { return { success: false, diff --git a/dist/package-shared/functions/api/users/reset-password/api-send-reset-password-link.js b/dist/package-shared/functions/api/users/reset-password/api-send-reset-password-link.js index 4ed7655..95edabf 100644 --- a/dist/package-shared/functions/api/users/reset-password/api-send-reset-password-link.js +++ b/dist/package-shared/functions/api/users/reset-password/api-send-reset-password-link.js @@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = apiSendResetPasswordLink; const grab_db_full_name_1 = __importDefault(require("../../../../utils/grab-db-full-name")); -const varDatabaseDbHandler_1 = __importDefault(require("../../../backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../../backend/dbHandler")); /** * # API Login */ @@ -33,12 +33,11 @@ function apiSendResetPasswordLink(_a) { msg: "Invalid Email/Password format", }; } - let foundUser = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT * FROM ${dbFullName}.users WHERE email = ? OR username = ?`, - queryValuesArray: [email, email], + let foundUser = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM ${dbFullName}.users WHERE email = ? OR username = ?`, + values: [email, email], database: dbFullName, - debug, - }); + })); if (debug) { console.log("apiSendResetPassword:foundUser:", foundUser); } diff --git a/dist/package-shared/functions/backend/addAdminUserOnLogin.js b/dist/package-shared/functions/backend/addAdminUserOnLogin.js index fa68467..a005f09 100644 --- a/dist/package-shared/functions/backend/addAdminUserOnLogin.js +++ b/dist/package-shared/functions/backend/addAdminUserOnLogin.js @@ -14,9 +14,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = addAdminUserOnLogin; const serverError_1 = __importDefault(require("./serverError")); -const DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/DB_HANDLER")); const addDbEntry_1 = __importDefault(require("./db/addDbEntry")); -const LOCAL_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/LOCAL_DB_HANDLER")); +const dbHandler_1 = __importDefault(require("./dbHandler")); /** * Add Admin User on Login * ============================================================================== @@ -27,15 +26,14 @@ const LOCAL_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-d */ function addAdminUserOnLogin(_a) { return __awaiter(this, arguments, void 0, function* ({ query, user, }) { - var _b; try { - const finalDbHandler = global.DSQL_USE_LOCAL - ? LOCAL_DB_HANDLER_1.default - : DB_HANDLER_1.default; const { invite, database_access, priviledge, email } = query; const lastInviteTimeQuery = `SELECT date_created_code FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`; const lastInviteTimeValues = [invite, email]; - const lastInviteTimeArray = yield finalDbHandler(lastInviteTimeQuery, lastInviteTimeValues); + const lastInviteTimeArray = (yield (0, dbHandler_1.default)({ + query: lastInviteTimeQuery, + values: lastInviteTimeValues, + })); if (!lastInviteTimeArray || !lastInviteTimeArray[0]) { throw new Error("No Invitation Found"); } @@ -44,9 +42,15 @@ function addAdminUserOnLogin(_a) { //////////////////////////////////////////////// const invitingUserDbQuery = `SELECT first_name,last_name,email FROM users WHERE id=?`; const invitingUserDbValues = [invite]; - const invitingUserDb = yield finalDbHandler(invitingUserDbQuery, invitingUserDbValues); + const invitingUserDb = (yield (0, dbHandler_1.default)({ + query: invitingUserDbQuery, + values: invitingUserDbValues, + })); if (invitingUserDb === null || invitingUserDb === void 0 ? void 0 : invitingUserDb[0]) { - const existingUserUser = yield finalDbHandler(`SELECT email FROM user_users WHERE user_id=? AND invited_user_id=? AND user_type='admin' AND email=?`, [invite, user.id, email]); + const existingUserUser = (yield (0, dbHandler_1.default)({ + query: `SELECT email FROM user_users WHERE user_id=? AND invited_user_id=? AND user_type='admin' AND email=?`, + values: [invite, user.id, email], + })); if (existingUserUser === null || existingUserUser === void 0 ? void 0 : existingUserUser[0]) { console.log("User already added"); } @@ -72,8 +76,14 @@ function addAdminUserOnLogin(_a) { //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// - const dbTableData = yield finalDbHandler(`SELECT db_tables_data FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`, [invite, email]); - const clearEntries = yield finalDbHandler(`DELETE FROM delegated_user_tables WHERE root_user_id=? AND delegated_user_id=?`, [invite, user.id]); + const dbTableData = (yield (0, dbHandler_1.default)({ + query: `SELECT db_tables_data FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`, + values: [invite, email], + })); + const clearEntries = (yield (0, dbHandler_1.default)({ + query: `DELETE FROM delegated_user_tables WHERE root_user_id=? AND delegated_user_id=?`, + values: [invite, user.id], + })); //////////////////////////////////////////////// //////////////////////////////////////////////// //////////////////////////////////////////////// @@ -97,11 +107,13 @@ function addAdminUserOnLogin(_a) { } } } - const inviteAccepted = yield finalDbHandler(`UPDATE invitations SET invitation_status='Accepted' WHERE inviting_user_id=? AND invited_user_email=?`, [invite, email]); + const inviteAccepted = (yield (0, dbHandler_1.default)({ + query: `UPDATE invitations SET invitation_status='Accepted' WHERE inviting_user_id=? AND invited_user_email=?`, + values: [invite, email], + })); } } catch (error) { - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Add Admin User On Login Error`, error); (0, serverError_1.default)({ component: "addAdminUserOnLogin", message: error.message, diff --git a/dist/package-shared/functions/backend/addMariadbUser.js b/dist/package-shared/functions/backend/addMariadbUser.js index 55e8605..4abfac3 100644 --- a/dist/package-shared/functions/backend/addMariadbUser.js +++ b/dist/package-shared/functions/backend/addMariadbUser.js @@ -14,12 +14,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = addMariadbUser; const generate_password_1 = __importDefault(require("generate-password")); -const DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/DB_HANDLER")); -const NO_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/NO_DB_HANDLER")); const addDbEntry_1 = __importDefault(require("./db/addDbEntry")); const encrypt_1 = __importDefault(require("../dsql/encrypt")); -const LOCAL_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/LOCAL_DB_HANDLER")); const grab_sql_key_name_1 = __importDefault(require("../../utils/grab-sql-key-name")); +const dbHandler_1 = __importDefault(require("./dbHandler")); /** * # Add Mariadb User */ @@ -37,17 +35,15 @@ function addMariadbUser(_a) { }); const encryptedPassword = (0, encrypt_1.default)({ data: password }); const createMariadbUsersQuery = `CREATE USER IF NOT EXISTS '${username}'@'127.0.0.1' IDENTIFIED BY '${password}'`; - if (global.DSQL_USE_LOCAL) { - yield (0, LOCAL_DB_HANDLER_1.default)(createMariadbUsersQuery); - } - else { - yield (0, NO_DB_HANDLER_1.default)(createMariadbUsersQuery); - } + yield (0, dbHandler_1.default)({ + query: createMariadbUsersQuery, + }); const updateUserQuery = `UPDATE users SET mariadb_user = ?, mariadb_host = '127.0.0.1', mariadb_pass = ? WHERE id = ?`; const updateUserValues = [username, encryptedPassword, userId]; - const updateUser = global.DSQL_USE_LOCAL - ? yield (0, LOCAL_DB_HANDLER_1.default)(updateUserQuery, updateUserValues) - : yield (0, DB_HANDLER_1.default)(updateUserQuery, updateUserValues); + yield (0, dbHandler_1.default)({ + query: updateUserQuery, + values: updateUserValues, + }); const addMariadbUser = yield (0, addDbEntry_1.default)({ tableName: "mariadb_users", data: { diff --git a/dist/package-shared/functions/backend/addUsersTableToDb.d.ts b/dist/package-shared/functions/backend/addUsersTableToDb.d.ts index 922ae55..f94e03c 100644 --- a/dist/package-shared/functions/backend/addUsersTableToDb.d.ts +++ b/dist/package-shared/functions/backend/addUsersTableToDb.d.ts @@ -1,5 +1,5 @@ type Param = { - userId: number; + userId?: number | string; database: string; payload?: { [s: string]: any; diff --git a/dist/package-shared/functions/backend/addUsersTableToDb.js b/dist/package-shared/functions/backend/addUsersTableToDb.js index 3a4aa8b..723d8d9 100644 --- a/dist/package-shared/functions/backend/addUsersTableToDb.js +++ b/dist/package-shared/functions/backend/addUsersTableToDb.js @@ -14,12 +14,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = addUsersTableToDb; const serverError_1 = __importDefault(require("./serverError")); -const DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/DB_HANDLER")); const addDbEntry_1 = __importDefault(require("./db/addDbEntry")); const createDbFromSchema_1 = __importDefault(require("../../shell/createDbFromSchema")); -const LOCAL_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/LOCAL_DB_HANDLER")); const grabNewUsersTableSchema_1 = __importDefault(require("./grabNewUsersTableSchema")); const grab_required_database_schemas_1 = require("../../shell/createDbFromSchema/grab-required-database-schemas"); +const dbHandler_1 = __importDefault(require("./dbHandler")); /** * # Add User Table to Database */ @@ -45,9 +44,10 @@ function addUsersTableToDb(_a) { targetDatabase.tables.push(userPreset); } (0, grab_required_database_schemas_1.writeUpdatedDbSchema)({ dbSchema: targetDatabase, userId }); - const targetDb = global.DSQL_USE_LOCAL - ? yield (0, LOCAL_DB_HANDLER_1.default)(`SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`, [userId, database]) - : yield (0, DB_HANDLER_1.default)(`SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`, [userId, database]); + const targetDb = (yield (0, dbHandler_1.default)({ + query: `SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`, + values: [userId, database], + })); if (targetDb === null || targetDb === void 0 ? void 0 : targetDb[0]) { const newTableEntry = yield (0, addDbEntry_1.default)({ dbFullName: "datasquirel", diff --git a/dist/package-shared/functions/backend/auth/write-auth-files.js b/dist/package-shared/functions/backend/auth/write-auth-files.js index 6a70118..87c4ca5 100644 --- a/dist/package-shared/functions/backend/auth/write-auth-files.js +++ b/dist/package-shared/functions/backend/auth/write-auth-files.js @@ -21,7 +21,6 @@ const grabAuthDirs = () => { }; exports.grabAuthDirs = grabAuthDirs; const initAuthFiles = () => { - var _a; try { const authDirs = (0, exports.grabAuthDirs)(); if (!fs_1.default.existsSync(authDirs.root)) @@ -32,7 +31,6 @@ const initAuthFiles = () => { } catch (error) { console.log(`Error initializing Auth Files: ${error.message}`); - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Initializing Auth Files`, error); return false; } }; diff --git a/dist/package-shared/functions/backend/createDbSchemaFromDb.js b/dist/package-shared/functions/backend/createDbSchemaFromDb.js index 8652dc3..45f810b 100644 --- a/dist/package-shared/functions/backend/createDbSchemaFromDb.js +++ b/dist/package-shared/functions/backend/createDbSchemaFromDb.js @@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createDbSchemaFromDb; -const varDatabaseDbHandler_1 = __importDefault(require("../../functions/backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); const addDbEntry_1 = __importDefault(require("../../functions/backend/db/addDbEntry")); const slugToCamelTitle_1 = __importDefault(require("../../shell/utils/slugToCamelTitle")); const grab_dsql_schema_index_comment_1 = __importDefault(require("../../shell/utils/grab-dsql-schema-index-comment")); @@ -35,10 +35,10 @@ function createDbSchemaFromDb(_a) { }); if (!targetDb) throw new Error(`Target Db not found!`); - const existingTables = yield (0, varDatabaseDbHandler_1.default)({ + const existingTables = (yield (0, dbHandler_1.default)({ database: database.db_full_name, - queryString: `SHOW TABLES FROM ${database.db_full_name}`, - }); + query: `SHOW TABLES FROM ${database.db_full_name}`, + })); if (!existingTables) throw new Error("No Existing Tables"); for (let i = 0; i < existingTables.length; i++) { @@ -60,10 +60,10 @@ function createDbSchemaFromDb(_a) { fields: [], indexes: [], }; - const tableColumns = yield (0, varDatabaseDbHandler_1.default)({ + const tableColumns = (yield (0, dbHandler_1.default)({ database: database.db_full_name, - queryString: `SHOW COLUMNS FROM ${database.db_full_name}.${tableName}`, - }); + query: `SHOW COLUMNS FROM ${database.db_full_name}.${tableName}`, + })); if (tableColumns) { for (let k = 0; k < tableColumns.length; k++) { const tableColumn = tableColumns[k]; @@ -88,10 +88,10 @@ function createDbSchemaFromDb(_a) { tableObject.fields.push(fieldObject); } } - const tableIndexes = yield (0, varDatabaseDbHandler_1.default)({ + const tableIndexes = (yield (0, dbHandler_1.default)({ database: database.db_full_name, - queryString: `SHOW INDEXES FROM ${database.db_full_name}.${tableName}`, - }); + query: `SHOW INDEXES FROM ${database.db_full_name}.${tableName}`, + })); if (tableIndexes) { for (let m = 0; m < tableIndexes.length; m++) { const indexObject = tableIndexes[m]; @@ -106,6 +106,8 @@ function createDbSchemaFromDb(_a) { indexTableFields: [], }; const targetTableFieldObject = tableColumns === null || tableColumns === void 0 ? void 0 : tableColumns.filter((col) => col.Field === Column_name)[0]; + if (!targetTableFieldObject) + continue; const existingIndexField = (_e = tableObject.indexes) === null || _e === void 0 ? void 0 : _e.filter((indx) => indx.indexName == Key_name); if (existingIndexField && existingIndexField[0]) { (_f = existingIndexField[0].indexTableFields) === null || _f === void 0 ? void 0 : _f.push({ diff --git a/dist/package-shared/functions/backend/db/addDbEntry.js b/dist/package-shared/functions/backend/db/addDbEntry.js index d65d0f4..c8eb7ac 100644 --- a/dist/package-shared/functions/backend/db/addDbEntry.js +++ b/dist/package-shared/functions/backend/db/addDbEntry.js @@ -37,12 +37,6 @@ function addDbEntry(_a) { label: "isMaster", }); } - const DB_CONN = isMaster - ? global.DSQL_DB_CONN - : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN; - const DB_RO_CONN = isMaster - ? global.DSQL_DB_CONN - : global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN; let newData = lodash_1.default.cloneDeep(data); if (newData) { newData = (0, purge_default_fields_1.default)(newData); @@ -55,7 +49,9 @@ function addDbEntry(_a) { typeof duplicateColumnName === "string" && newData) { const checkDuplicateQuery = `SELECT * FROM ${isMaster ? "" : `\`${dbFullName}\`.`}\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`; - const duplicateValue = yield (0, conn_db_handler_1.default)(DB_RO_CONN, checkDuplicateQuery, [duplicateColumnValue]); + const duplicateValue = yield (0, conn_db_handler_1.default)(null, checkDuplicateQuery, [ + duplicateColumnValue, + ]); if ((duplicateValue === null || duplicateValue === void 0 ? void 0 : duplicateValue[0]) && !update) { return { success: false, @@ -78,7 +74,7 @@ function addDbEntry(_a) { } } function generateQuery(data) { - var _a, _b, _c; + var _a, _b; const dataKeys = Object.keys(data); let insertKeysArray = []; let insertValuesArray = []; @@ -131,7 +127,6 @@ function addDbEntry(_a) { } catch (error) { console.log("DSQL: Error in parsing data keys =>", error.message); - (_c = global.ERROR_CALLBACK) === null || _c === void 0 ? void 0 : _c.call(global, `Error parsing Data Keys`, error); continue; } } @@ -149,7 +144,7 @@ function addDbEntry(_a) { if (newData) { const { insertKeysArray, insertValuesArray, queryValuesArray } = generateQuery(newData); const query = `INSERT INTO ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\` (${insertKeysArray.join(",")}) VALUES (${insertValuesArray.map(() => "?").join(",")})`; - const newInsert = yield (0, conn_db_handler_1.default)(DB_CONN, query, queryValuesArray, debug); + const newInsert = yield (0, conn_db_handler_1.default)(null, query, queryValuesArray, debug); return { success: Boolean(newInsert === null || newInsert === void 0 ? void 0 : newInsert.insertId), payload: newInsert, @@ -177,7 +172,7 @@ function addDbEntry(_a) { .join(",")}`; console.log("query", query); console.log("batchQueryValuesArray", batchQueryValuesArray); - const newInsert = yield (0, conn_db_handler_1.default)(DB_CONN, query, batchQueryValuesArray.flat(), debug); + const newInsert = yield (0, conn_db_handler_1.default)(null, query, batchQueryValuesArray.flat(), debug); if (debug) { (0, debug_log_1.default)({ log: newInsert, diff --git a/dist/package-shared/functions/backend/db/deleteDbEntry.js b/dist/package-shared/functions/backend/db/deleteDbEntry.js index 1e53bd0..a24ba35 100644 --- a/dist/package-shared/functions/backend/db/deleteDbEntry.js +++ b/dist/package-shared/functions/backend/db/deleteDbEntry.js @@ -21,21 +21,17 @@ const conn_db_handler_1 = __importDefault(require("../../../utils/db/conn-db-han */ function deleteDbEntry(_a) { return __awaiter(this, arguments, void 0, function* ({ dbContext, dbFullName, tableName, identifierColumnName, identifierValue, forceLocal, }) { - var _b; try { const isMaster = forceLocal ? true : (0, check_if_is_master_1.default)({ dbContext, dbFullName }); - const DB_CONN = isMaster - ? global.DSQL_DB_CONN - : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN; /** * Execution * * @description */ const query = `DELETE FROM ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\` WHERE \`${identifierColumnName.toString()}\`=?`; - const deletedEntry = yield (0, conn_db_handler_1.default)(DB_CONN, query, [ + const deletedEntry = yield (0, conn_db_handler_1.default)(null, query, [ identifierValue, ]); /** @@ -44,7 +40,7 @@ function deleteDbEntry(_a) { return deletedEntry; } catch (error) { - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Error Deleting Entry`, error); + console.log("Error Deleting Entry =>", error.message); return null; } }); diff --git a/dist/package-shared/functions/backend/db/runQuery.d.ts b/dist/package-shared/functions/backend/db/runQuery.d.ts index 50cab86..74ea02e 100644 --- a/dist/package-shared/functions/backend/db/runQuery.d.ts +++ b/dist/package-shared/functions/backend/db/runQuery.d.ts @@ -8,7 +8,6 @@ type Param = { dbSchema?: import("../../../types").DSQL_DatabaseSchemaType; queryValuesArray?: (string | number)[]; tableName?: string; - forceLocal?: boolean; }; type Return = { result: any; @@ -17,5 +16,5 @@ type Return = { /** * # Run DSQL users queries */ -export default function runQuery({ dbFullName, query, readOnly, dbSchema, queryValuesArray, tableName, debug, dbContext, forceLocal, }: Param): Promise; +export default function runQuery({ dbFullName, query, readOnly, dbSchema, queryValuesArray, tableName, debug, dbContext, }: Param): Promise; export {}; diff --git a/dist/package-shared/functions/backend/db/runQuery.js b/dist/package-shared/functions/backend/db/runQuery.js index fbf3af8..4add7cb 100644 --- a/dist/package-shared/functions/backend/db/runQuery.js +++ b/dist/package-shared/functions/backend/db/runQuery.js @@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.DbContextsArray = void 0; exports.default = runQuery; const fullAccessDbHandler_1 = __importDefault(require("../fullAccessDbHandler")); -const varReadOnlyDatabaseDbHandler_1 = __importDefault(require("../varReadOnlyDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../dbHandler")); const serverError_1 = __importDefault(require("../serverError")); const addDbEntry_1 = __importDefault(require("./addDbEntry")); const updateDbEntry_1 = __importDefault(require("./updateDbEntry")); @@ -26,7 +26,7 @@ exports.DbContextsArray = ["Master", "Dsql User"]; * # Run DSQL users queries */ function runQuery(_a) { - return __awaiter(this, arguments, void 0, function* ({ dbFullName, query, readOnly, dbSchema, queryValuesArray, tableName, debug, dbContext, forceLocal, }) { + return __awaiter(this, arguments, void 0, function* ({ dbFullName, query, readOnly, dbSchema, queryValuesArray, tableName, debug, dbContext, }) { /** * Declare variables * @@ -60,7 +60,7 @@ function runQuery(_a) { try { if (typeof query === "string") { const formattedQuery = (0, trim_sql_1.default)(query); - if (debug && global.DSQL_USE_LOCAL) { + if (debug) { console.log("runQuery:formattedQuery", formattedQuery); } /** @@ -72,11 +72,9 @@ function runQuery(_a) { throw new Error("Wrong Input!"); } if (readOnly) { - result = yield (0, varReadOnlyDatabaseDbHandler_1.default)({ - queryString: formattedQuery, - queryValuesArray: queryValuesArray === null || queryValuesArray === void 0 ? void 0 : queryValuesArray.map((vl) => String(vl)), - tableSchema, - forceLocal, + result = yield (0, dbHandler_1.default)({ + query: formattedQuery, + values: queryValuesArray === null || queryValuesArray === void 0 ? void 0 : queryValuesArray.map((vl) => String(vl)), }); } else { @@ -84,7 +82,6 @@ function runQuery(_a) { queryString: formattedQuery, queryValuesArray: queryValuesArray === null || queryValuesArray === void 0 ? void 0 : queryValuesArray.map((vl) => String(vl)), tableSchema, - forceLocal, }); } } @@ -144,7 +141,7 @@ function runQuery(_a) { component: "functions/backend/runQuery", message: err.message, }); - if (debug && global.DSQL_USE_LOCAL) { + if (debug) { console.log("runQuery:error", err.message); } result = null; diff --git a/dist/package-shared/functions/backend/db/updateDbEntry.js b/dist/package-shared/functions/backend/db/updateDbEntry.js index 1bf6f7a..c2a2474 100644 --- a/dist/package-shared/functions/backend/db/updateDbEntry.js +++ b/dist/package-shared/functions/backend/db/updateDbEntry.js @@ -40,9 +40,6 @@ function updateDbEntry(_a) { const isMaster = forceLocal ? true : (0, check_if_is_master_1.default)({ dbContext, dbFullName }); - const DB_CONN = isMaster - ? global.DSQL_DB_CONN - : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN; //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// @@ -128,7 +125,7 @@ function updateDbEntry(_a) { //////////////////////////////////////// const query = `UPDATE ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\` SET ${updateKeyValueArray.join(",")} WHERE \`${identifierColumnName}\`=?`; updateValues.push(identifierValue); - const updatedEntry = yield (0, conn_db_handler_1.default)(DB_CONN, query, updateValues); + const updatedEntry = yield (0, conn_db_handler_1.default)(null, query, updateValues); /** * Return statement */ diff --git a/dist/package-shared/functions/backend/dbHandler.d.ts b/dist/package-shared/functions/backend/dbHandler.d.ts index b11d4b9..6aee0b2 100644 --- a/dist/package-shared/functions/backend/dbHandler.d.ts +++ b/dist/package-shared/functions/backend/dbHandler.d.ts @@ -1,11 +1,24 @@ -type Param = { +import { DSQL_TableSchemaType } from "../../types"; +import { ConnectionConfig } from "mariadb"; +type Param = { query: string; values?: string[] | object; noErrorLogs?: boolean; + database?: string; + tableSchema?: DSQL_TableSchemaType; + config?: ConnectionConfig; }; /** * # Main DB Handler Function * @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database */ -export default function dbHandler({ query, values, noErrorLogs, }: Param): Promise; +export default function dbHandler({ query, values, noErrorLogs, database, config, }: Param): Promise; export {}; diff --git a/dist/package-shared/functions/backend/dbHandler.js b/dist/package-shared/functions/backend/dbHandler.js index a49bdfe..bbabe39 100644 --- a/dist/package-shared/functions/backend/dbHandler.js +++ b/dist/package-shared/functions/backend/dbHandler.js @@ -21,24 +21,26 @@ const grab_dsql_connection_1 = __importDefault(require("../../utils/grab-dsql-co * @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database */ function dbHandler(_a) { - return __awaiter(this, arguments, void 0, function* ({ query, values, noErrorLogs, }) { - var _b; - const CONNECTION = yield (0, grab_dsql_connection_1.default)(); + return __awaiter(this, arguments, void 0, function* ({ query, values, noErrorLogs, database, config, }) { + let CONNECTION; let results; try { + CONNECTION = yield (0, grab_dsql_connection_1.default)({ database, config }); if (query && values) { - results = yield CONNECTION.query(query, values); + const queryResults = yield CONNECTION.query(query, values); + results = queryResults[0]; } else { - results = yield CONNECTION.query(query); + const queryResults = yield CONNECTION.query(query); + results = queryResults[0]; } } catch (error) { - if (!noErrorLogs) { - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `DB Handler Error...`, error); - } - if (process.env.FIRST_RUN) { - return null; + console.log("Connection Info =>", CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.info); + if (error.message && + typeof error.message == "string" && + error.message.match(/Access denied for user.*password/i)) { + throw new Error("Authentication Failed!"); } if (!noErrorLogs) { console.log("ERROR in dbHandler =>", error.message); @@ -54,12 +56,7 @@ function dbHandler(_a) { yield (CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.end()); } if (results) { - if (Array.isArray(results)) { - return Array.from(results); - } - else { - return results; - } + return results; } else { return null; diff --git a/dist/package-shared/functions/backend/fullAccessDbHandler.d.ts b/dist/package-shared/functions/backend/fullAccessDbHandler.d.ts index 828f500..d2a92a2 100644 --- a/dist/package-shared/functions/backend/fullAccessDbHandler.d.ts +++ b/dist/package-shared/functions/backend/fullAccessDbHandler.d.ts @@ -2,10 +2,9 @@ type Param = { queryString: string; tableSchema?: import("../../types").DSQL_TableSchemaType | null; queryValuesArray?: string[]; - forceLocal?: boolean; }; /** * # Full Access Db Handler */ -export default function fullAccessDbHandler({ queryString, tableSchema, queryValuesArray, forceLocal, }: Param): Promise; +export default function fullAccessDbHandler({ queryString, tableSchema, queryValuesArray, }: Param): Promise; export {}; diff --git a/dist/package-shared/functions/backend/fullAccessDbHandler.js b/dist/package-shared/functions/backend/fullAccessDbHandler.js index cb26619..3338224 100644 --- a/dist/package-shared/functions/backend/fullAccessDbHandler.js +++ b/dist/package-shared/functions/backend/fullAccessDbHandler.js @@ -20,29 +20,25 @@ const serverError_1 = __importDefault(require("./serverError")); * # Full Access Db Handler */ function fullAccessDbHandler(_a) { - return __awaiter(this, arguments, void 0, function* ({ queryString, tableSchema, queryValuesArray, forceLocal, }) { - var _b; + return __awaiter(this, arguments, void 0, function* ({ queryString, tableSchema, queryValuesArray, }) { /** * Declare variables * * @description Declare "results" variable */ let results; - const DB_CONN = forceLocal - ? global.DSQL_DB_CONN - : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN; /** * Fetch from db * * @description Fetch data from db if no cache */ try { - results = yield (0, conn_db_handler_1.default)(DB_CONN, queryString, queryValuesArray); + results = yield (0, conn_db_handler_1.default)(null, queryString, queryValuesArray); //////////////////////////////////////// } catch (error) { //////////////////////////////////////// - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Full Access DB Handler Error`, error); + console.log("Full Access DB Handler Error =>", error.message); (0, serverError_1.default)({ component: "fullAccessDbHandler", message: error.message, diff --git a/dist/package-shared/functions/backend/handle-backup.d.ts b/dist/package-shared/functions/backend/handle-backup.d.ts new file mode 100644 index 0000000..9b3c26f --- /dev/null +++ b/dist/package-shared/functions/backend/handle-backup.d.ts @@ -0,0 +1,6 @@ +type HandleBackupParams = { + appBackup?: boolean; + userId?: string | number; +}; +export default function handleBackup({ appBackup, userId, }: HandleBackupParams): Promise; +export {}; diff --git a/dist/package-shared/functions/backend/handle-backup.js b/dist/package-shared/functions/backend/handle-backup.js new file mode 100644 index 0000000..61fc2f7 --- /dev/null +++ b/dist/package-shared/functions/backend/handle-backup.js @@ -0,0 +1,62 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = handleBackup; +const grab_user_resource_1 = __importDefault(require("@/src/functions/db/grab-user-resource")); +const add_backup_1 = __importDefault(require("@/src/functions/api/su/add-backup")); +const grab_config_1 = __importDefault(require("@/package-shared/utils/backend/config/grab-config")); +const delete_backup_1 = __importDefault(require("@/src/functions/api/su/add-backup/delete-backup")); +function handleBackup(_a) { + return __awaiter(this, arguments, void 0, function* ({ appBackup, userId, }) { + var _b; + const { appConfig } = (0, grab_config_1.default)(); + const maxBackups = ((_b = appConfig.main.max_backups) === null || _b === void 0 ? void 0 : _b.value) || 20; + const { count: existingAppBackupsCount } = yield (0, grab_user_resource_1.default)({ + tableName: "backups", + isSuperUser: true, + query: { + query: { + user_id: { + nullValue: appBackup ? true : undefined, + value: appBackup ? undefined : String(userId), + }, + }, + }, + countOnly: true, + }); + if (existingAppBackupsCount && existingAppBackupsCount >= maxBackups) { + const { single: oldestAppBackup } = yield (0, grab_user_resource_1.default)({ + tableName: "backups", + isSuperUser: true, + query: { + query: { + user_id: { + nullValue: appBackup ? true : undefined, + value: appBackup ? undefined : String(userId), + }, + }, + order: { + field: "id", + strategy: "ASC", + }, + limit: 1, + }, + }); + if (oldestAppBackup === null || oldestAppBackup === void 0 ? void 0 : oldestAppBackup.id) { + yield (0, delete_backup_1.default)({ backup: oldestAppBackup }); + } + } + yield (0, add_backup_1.default)({ targetUserId: userId }); + }); +} diff --git a/dist/package-shared/functions/backend/handleNodemailer.d.ts b/dist/package-shared/functions/backend/handleNodemailer.d.ts index a0a6f2e..6429f98 100644 --- a/dist/package-shared/functions/backend/handleNodemailer.d.ts +++ b/dist/package-shared/functions/backend/handleNodemailer.d.ts @@ -4,8 +4,9 @@ export type HandleNodemailerParam = Mail.Options & { senderName?: string; alias?: string | null; options?: SMTPTransport.Options; + verifyOnly?: boolean; }; /** * # Handle mails With Nodemailer */ -export default function handleNodemailer(params: HandleNodemailerParam): Promise; +export default function handleNodemailer(params: HandleNodemailerParam): Promise; diff --git a/dist/package-shared/functions/backend/handleNodemailer.js b/dist/package-shared/functions/backend/handleNodemailer.js index 9d067fe..7d23d5b 100644 --- a/dist/package-shared/functions/backend/handleNodemailer.js +++ b/dist/package-shared/functions/backend/handleNodemailer.js @@ -21,16 +21,20 @@ const nodemailer_1 = __importDefault(require("nodemailer")); */ function handleNodemailer(params) { return __awaiter(this, void 0, void 0, function* () { - var _a, _b; + var _a, _b, _c; if (!process.env.DSQL_MAIL_HOST || !process.env.DSQL_MAIL_EMAIL || !process.env.DSQL_MAIL_PASSWORD) { return undefined; } - let transporter = nodemailer_1.default.createTransport(Object.assign({ host: process.env.DSQL_MAIL_HOST, port: 465, secure: true, auth: { - user: process.env.DSQL_MAIL_EMAIL, - pass: process.env.DSQL_MAIL_PASSWORD, - } }, params.options)); + let transporter = nodemailer_1.default.createTransport(Object.assign(Object.assign({ host: process.env.DSQL_MAIL_HOST, port: 465, secure: true }, params.options), { auth: Object.assign({ user: process.env.DSQL_MAIL_EMAIL, pass: process.env.DSQL_MAIL_PASSWORD }, (_a = params.options) === null || _a === void 0 ? void 0 : _a.auth) })); + if (params.verifyOnly) { + const isMailServerValid = yield transporter.verify(); + if (!isMailServerValid) { + return false; + } + return true; + } const sender = (() => { var _a; if ((_a = params.alias) === null || _a === void 0 ? void 0 : _a.match(/support/i)) @@ -43,9 +47,9 @@ function handleNodemailer(params) { : undefined; let finalHtml = mailRoot ? mailRoot - .replace(/{{email_body}}/, ((_a = params.html) === null || _a === void 0 ? void 0 : _a.toString()) || "") + .replace(/{{email_body}}/, ((_b = params.html) === null || _b === void 0 ? void 0 : _b.toString()) || "") .replace(/{{issue_date}}/, Date().substring(0, 24)) - : (_b = params.html) === null || _b === void 0 ? void 0 : _b.toString(); + : (_c = params.html) === null || _c === void 0 ? void 0 : _c.toString(); try { let mailObject = {}; mailObject["from"] = `"${params.senderName || "Datasquirel"}" <${sender}>`; diff --git a/dist/package-shared/functions/backend/su-db-handler.js b/dist/package-shared/functions/backend/su-db-handler.js index fcbf79a..4d7b0ff 100644 --- a/dist/package-shared/functions/backend/su-db-handler.js +++ b/dist/package-shared/functions/backend/su-db-handler.js @@ -28,6 +28,8 @@ function suDbHandler(_a) { supportBigNumbers: true, bigNumberStrings: false, dateStrings: true, + bigIntAsNumber: true, + metaAsArray: true, }); // const connection = mariadb.createPool({ // host: process.env.DSQL_DB_HOST, diff --git a/dist/package-shared/functions/backend/updateUsersTableSchema.d.ts b/dist/package-shared/functions/backend/updateUsersTableSchema.d.ts index 594533d..8199100 100644 --- a/dist/package-shared/functions/backend/updateUsersTableSchema.d.ts +++ b/dist/package-shared/functions/backend/updateUsersTableSchema.d.ts @@ -1,5 +1,5 @@ type Param = { - userId: number | string; + userId?: number | string; database: string; newFields?: string[]; newPayload?: { diff --git a/dist/package-shared/functions/backend/updateUsersTableSchema.js b/dist/package-shared/functions/backend/updateUsersTableSchema.js index d879372..fa5cac5 100644 --- a/dist/package-shared/functions/backend/updateUsersTableSchema.js +++ b/dist/package-shared/functions/backend/updateUsersTableSchema.js @@ -22,7 +22,7 @@ const grab_required_database_schemas_1 = require("../../shell/createDbFromSchema */ function updateUsersTableSchema(_a) { return __awaiter(this, arguments, void 0, function* ({ userId, database, newFields, newPayload, dbId, }) { - var _b, _c; + var _b; try { const dbFullName = database; let targetDatabase = (0, grab_required_database_schemas_1.grabPrimaryRequiredDbSchema)({ @@ -51,7 +51,7 @@ function updateUsersTableSchema(_a) { return `Done!`; } catch (error) { - (_c = global.ERROR_CALLBACK) === null || _c === void 0 ? void 0 : _c.call(global, `Error Updating User Table Schema`, error); + console.log("Error Updating User Table Schema =>", error.message); (0, serverError_1.default)({ component: "addUsersTableToDb", message: error.message, diff --git a/dist/package-shared/functions/backend/user-db-handler.js b/dist/package-shared/functions/backend/user-db-handler.js index 5467954..4d7ae99 100644 --- a/dist/package-shared/functions/backend/user-db-handler.js +++ b/dist/package-shared/functions/backend/user-db-handler.js @@ -30,6 +30,8 @@ function userDbHandler(_a) { supportBigNumbers: true, bigNumberStrings: false, dateStrings: true, + bigIntAsNumber: true, + metaAsArray: true, }); const results = yield (0, conn_db_handler_1.default)(connection, query); return results; diff --git a/dist/package-shared/functions/backend/varDatabaseDbHandler.d.ts b/dist/package-shared/functions/backend/varDatabaseDbHandler.d.ts deleted file mode 100644 index 4c977ac..0000000 --- a/dist/package-shared/functions/backend/varDatabaseDbHandler.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { DSQL_TableSchemaType } from "../../types"; -type Param = { - queryString: string; - queryValuesArray?: any[]; - database?: string; - tableSchema?: DSQL_TableSchemaType; - debug?: boolean; -}; -/** - * # DB handler for specific database - */ -export default function varDatabaseDbHandler({ queryString, queryValuesArray, database, tableSchema, debug, }: Param): Promise; -export {}; diff --git a/dist/package-shared/functions/backend/varDatabaseDbHandler.js b/dist/package-shared/functions/backend/varDatabaseDbHandler.js deleted file mode 100644 index 7653c34..0000000 --- a/dist/package-shared/functions/backend/varDatabaseDbHandler.js +++ /dev/null @@ -1,65 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = varDatabaseDbHandler; -const parseDbResults_1 = __importDefault(require("./parseDbResults")); -const serverError_1 = __importDefault(require("./serverError")); -const grab_dsql_connection_1 = __importDefault(require("../../utils/grab-dsql-connection")); -const conn_db_handler_1 = __importDefault(require("../../utils/db/conn-db-handler")); -/** - * # DB handler for specific database - */ -function varDatabaseDbHandler(_a) { - return __awaiter(this, arguments, void 0, function* ({ queryString, queryValuesArray, database, tableSchema, debug, }) { - var _b; - let CONNECTION = yield (0, grab_dsql_connection_1.default)({ fa: true }); - if (global.DSQL_USE_LOCAL) - CONNECTION = yield (0, grab_dsql_connection_1.default)({ local: true }); - if (database === null || database === void 0 ? void 0 : database.match(/^datasquirel$/)) - CONNECTION = yield (0, grab_dsql_connection_1.default)(); - if (debug) { - console.log(`varDatabaseDbHandler:query:`, queryString); - console.log(`varDatabaseDbHandler:values:`, queryValuesArray); - } - let results = yield (0, conn_db_handler_1.default)(CONNECTION, queryString, queryValuesArray); - if (debug) { - console.log(`varDatabaseDbHandler:results:`, results); - } - if (results && tableSchema) { - try { - const unparsedResults = results; - const parsedResults = yield (0, parseDbResults_1.default)({ - unparsedResults: unparsedResults, - tableSchema: tableSchema, - }); - return parsedResults; - } - catch (error) { - console.log("\x1b[31mvarDatabaseDbHandler ERROR\x1b[0m =>", database, error); - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `VarDb Handler Error`, error); - (0, serverError_1.default)({ - component: "varDatabaseDbHandler/lines-52-53", - message: error.message, - }); - return null; - } - } - else if (results) { - return results; - } - else { - return null; - } - }); -} diff --git a/dist/package-shared/functions/backend/varReadOnlyDatabaseDbHandler.d.ts b/dist/package-shared/functions/backend/varReadOnlyDatabaseDbHandler.d.ts deleted file mode 100644 index e3c2272..0000000 --- a/dist/package-shared/functions/backend/varReadOnlyDatabaseDbHandler.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -type Param = { - queryString: string; - queryValuesArray?: string[]; - tableSchema?: import("../../types").DSQL_TableSchemaType; - forceLocal?: boolean; -}; -/** - * # Read Only Db Handler with Varaibles - * @returns - */ -export default function varReadOnlyDatabaseDbHandler({ queryString, queryValuesArray, tableSchema, forceLocal, }: Param): Promise; -export {}; diff --git a/dist/package-shared/functions/backend/varReadOnlyDatabaseDbHandler.js b/dist/package-shared/functions/backend/varReadOnlyDatabaseDbHandler.js deleted file mode 100644 index 19c09e0..0000000 --- a/dist/package-shared/functions/backend/varReadOnlyDatabaseDbHandler.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = varReadOnlyDatabaseDbHandler; -const serverError_1 = __importDefault(require("./serverError")); -const parseDbResults_1 = __importDefault(require("./parseDbResults")); -const conn_db_handler_1 = __importDefault(require("../../utils/db/conn-db-handler")); -/** - * # Read Only Db Handler with Varaibles - * @returns - */ -function varReadOnlyDatabaseDbHandler(_a) { - return __awaiter(this, arguments, void 0, function* ({ queryString, queryValuesArray, tableSchema, forceLocal, }) { - var _b; - let results; - const DB_CONN = forceLocal - ? global.DSQL_DB_CONN - : global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN; - try { - results = yield (0, conn_db_handler_1.default)(DB_CONN, queryString, queryValuesArray); - } - catch (error) { - (0, serverError_1.default)({ - component: "varReadOnlyDatabaseDbHandler", - message: error.message, - noMail: true, - }); - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `VarReadOnlyDB Handler Error`, error); - return error.message; - } - finally { - } - if (results) { - const unparsedResults = results; - const parsedResults = yield (0, parseDbResults_1.default)({ - unparsedResults: unparsedResults, - tableSchema: tableSchema, - }); - return parsedResults; - } - else { - return null; - } - }); -} diff --git a/dist/package-shared/functions/dsql/decrypt.d.ts b/dist/package-shared/functions/dsql/decrypt.d.ts index eb8b2f5..a403d05 100644 --- a/dist/package-shared/functions/dsql/decrypt.d.ts +++ b/dist/package-shared/functions/dsql/decrypt.d.ts @@ -2,9 +2,10 @@ type Param = { encryptedString: string; encryptionKey?: string; encryptionSalt?: string; + debug?: boolean; }; /** * # Decrypt Function */ -export default function decrypt({ encryptedString, encryptionKey, encryptionSalt, }: Param): string; +export default function decrypt({ encryptedString, encryptionKey, encryptionSalt, debug, }: Param): string; export {}; diff --git a/dist/package-shared/functions/dsql/decrypt.js b/dist/package-shared/functions/dsql/decrypt.js index f0fa97b..50f5249 100644 --- a/dist/package-shared/functions/dsql/decrypt.js +++ b/dist/package-shared/functions/dsql/decrypt.js @@ -11,19 +11,21 @@ const grab_keys_1 = __importDefault(require("../../utils/grab-keys")); /** * # Decrypt Function */ -function decrypt({ encryptedString, encryptionKey, encryptionSalt, }) { - var _a; +function decrypt({ encryptedString, encryptionKey, encryptionSalt, debug, }) { if (!(encryptedString === null || encryptedString === void 0 ? void 0 : encryptedString.match(/./))) { - console.log("Encrypted string is invalid"); + if (debug) + console.log("Encrypted string is invalid"); return encryptedString; } const { key: encrptKey, salt, keyLen, algorithm, bufferAllocSize, } = (0, grab_keys_1.default)({ encryptionKey }); if (!(encrptKey === null || encrptKey === void 0 ? void 0 : encrptKey.match(/.{8,}/))) { - console.log("Decrption key is invalid"); + if (debug) + console.log("Decrption key is invalid"); return encryptedString; } if (!(salt === null || salt === void 0 ? void 0 : salt.match(/.{8,}/))) { - console.log("Decrption salt is invalid"); + if (debug) + console.log("Decrption salt is invalid"); return encryptedString; } let key = (0, crypto_1.scryptSync)(encrptKey, salt, keyLen); @@ -35,9 +37,9 @@ function decrypt({ encryptedString, encryptionKey, encryptionSalt, }) { return decrypted; } catch (error) { - console.log("Error in decrypting =>", error.message); - console.log("encryptedString =>", encryptedString); - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Decrypting data`, error); + if (debug) { + console.log("Error Decrypting data", error); + } return encryptedString; } } diff --git a/dist/package-shared/functions/dsql/encrypt.js b/dist/package-shared/functions/dsql/encrypt.js index 55efc1a..3f07c5e 100644 --- a/dist/package-shared/functions/dsql/encrypt.js +++ b/dist/package-shared/functions/dsql/encrypt.js @@ -12,7 +12,6 @@ const grab_keys_1 = __importDefault(require("../../utils/grab-keys")); * # Encrypt String */ function encrypt({ data, encryptionKey, encryptionSalt, }) { - var _a; if (!(data === null || data === void 0 ? void 0 : data.match(/./))) { console.log("Encryption string is invalid"); return data; @@ -37,7 +36,6 @@ function encrypt({ data, encryptionKey, encryptionSalt, }) { } catch (error) { console.log("Error in encrypting =>", error.message); - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Encrypting Data`, error); return data; } } diff --git a/dist/package-shared/functions/email/fns/validate-email.js b/dist/package-shared/functions/email/fns/validate-email.js index a9ee328..d97e493 100644 --- a/dist/package-shared/functions/email/fns/validate-email.js +++ b/dist/package-shared/functions/email/fns/validate-email.js @@ -40,6 +40,12 @@ function validateEmail(_a) { } if (welcomeEmailOptions) { const welcomeEmail = yield (0, handleNodemailer_1.default)(welcomeEmailOptions); + if (typeof welcomeEmail == "boolean") { + return { + isValid: false, + message: "Email verification failed.", + }; + } if (!((_b = welcomeEmail === null || welcomeEmail === void 0 ? void 0 : welcomeEmail.accepted) === null || _b === void 0 ? void 0 : _b[0])) { return { isValid: false, diff --git a/dist/package-shared/functions/web-app/db/grab-user-resource/index.d.ts b/dist/package-shared/functions/web-app/db/grab-user-resource/index.d.ts index bfa377b..8417f1f 100644 --- a/dist/package-shared/functions/web-app/db/grab-user-resource/index.d.ts +++ b/dist/package-shared/functions/web-app/db/grab-user-resource/index.d.ts @@ -1,17 +1,4 @@ -import { DsqlCrudQueryObject } from "../../../../types"; -import { DsqlTables } from "../../../../types/dsql"; -export type GrabUserResourceParams = { - query?: DsqlCrudQueryObject; - userId?: string | number; - tableName: (typeof DsqlTables)[number]; - count?: boolean; - countOnly?: boolean; - noLimit?: boolean; - isSuperUser?: boolean; - targetID?: string | number; -}; +import { GrabUserResourceParams } from "../../../../types"; export default function dbGrabUserResource(params: GrabUserResourceParams): Promise<{ @@ -25,5 +12,5 @@ export default function dbGrabUserResource; diff --git a/dist/package-shared/functions/web-app/db/grab-user-resource/index.js b/dist/package-shared/functions/web-app/db/grab-user-resource/index.js index f719a7b..9d603b5 100644 --- a/dist/package-shared/functions/web-app/db/grab-user-resource/index.js +++ b/dist/package-shared/functions/web-app/db/grab-user-resource/index.js @@ -15,7 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.default = dbGrabUserResource; const crud_1 = __importDefault(require("../../../../utils/data-fetching/crud")); const query_1 = __importDefault(require("./query")); -const numberfy_1 = __importDefault(require("../../../../utils/numberfy")); function dbGrabUserResource(params) { return __awaiter(this, void 0, void 0, function* () { let queryObject = (0, query_1.default)(params); @@ -35,7 +34,7 @@ function dbGrabUserResource(params) { error: result === null || result === void 0 ? void 0 : result.error, msg: result === null || result === void 0 ? void 0 : result.msg, }, - count: (0, numberfy_1.default)(result === null || result === void 0 ? void 0 : result.count), + count: typeof (result === null || result === void 0 ? void 0 : result.count) == "number" ? result.count : undefined, }; }); } diff --git a/dist/package-shared/functions/web-app/db/grab-user-resource/query.d.ts b/dist/package-shared/functions/web-app/db/grab-user-resource/query.d.ts index 2d0396f..ca9de2e 100644 --- a/dist/package-shared/functions/web-app/db/grab-user-resource/query.d.ts +++ b/dist/package-shared/functions/web-app/db/grab-user-resource/query.d.ts @@ -1,4 +1,4 @@ -import { GrabUserResourceParams } from "."; +import { GrabUserResourceParams } from "../../../../types"; export default function (params?: GrabUserResourceParams): import("../../../../types").ServerQueryParam<{ [k: string]: any; }> & { diff --git a/dist/package-shared/functions/web-app/mariadb-user/handle-mariadb-user-creation.d.ts b/dist/package-shared/functions/web-app/mariadb-user/handle-mariadb-user-creation.d.ts index ffbd10d..4fd9e8f 100644 --- a/dist/package-shared/functions/web-app/mariadb-user/handle-mariadb-user-creation.d.ts +++ b/dist/package-shared/functions/web-app/mariadb-user/handle-mariadb-user-creation.d.ts @@ -15,5 +15,9 @@ type CreateNewUserParams = { host?: string; password?: string; }; -export declare function createNewSQLUser({ host, password, username, }: CreateNewUserParams): Promise; +export declare function createNewSQLUser({ host, password, username, }: CreateNewUserParams): Promise<{ + [k: string]: any; +} | { + [k: string]: any; +}[] | null>; export {}; diff --git a/dist/package-shared/shell/checkDb.js b/dist/package-shared/shell/checkDb.js index 8900f21..80105da 100644 --- a/dist/package-shared/shell/checkDb.js +++ b/dist/package-shared/shell/checkDb.js @@ -26,15 +26,13 @@ const grab_dsql_connection_1 = __importDefault(require("../utils/grab-dsql-conne * @returns {Promise} */ (() => __awaiter(void 0, void 0, void 0, function* () { - var _a; const CONNECTION = yield (0, grab_dsql_connection_1.default)(); try { - const result = yield CONNECTION.query("SELECT id,first_name,last_name FROM users LIMIT 3"); + const [result] = yield CONNECTION.query("SELECT id,first_name,last_name FROM users LIMIT 3"); console.log("Connection Query Success =>", result); } catch (error) { console.log("Connection query ERROR =>", error.message); - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Checking DB`, error); } finally { yield (CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.end()); diff --git a/dist/package-shared/shell/createDbFromSchema/check-db-record.js b/dist/package-shared/shell/createDbFromSchema/check-db-record.js index 007012b..1893045 100644 --- a/dist/package-shared/shell/createDbFromSchema/check-db-record.js +++ b/dist/package-shared/shell/createDbFromSchema/check-db-record.js @@ -13,26 +13,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = checkDbRecordCreateDbSchema; -const varDatabaseDbHandler_1 = __importDefault(require("../utils/varDatabaseDbHandler")); const numberfy_1 = __importDefault(require("../../utils/numberfy")); const addDbEntry_1 = __importDefault(require("../../functions/backend/db/addDbEntry")); const updateDbEntry_1 = __importDefault(require("../../functions/backend/db/updateDbEntry")); +const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); /** * # Create database from Schema Function * @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database */ function checkDbRecordCreateDbSchema(_a) { return __awaiter(this, arguments, void 0, function* ({ userId, dbSchema, isMain, }) { - var _b, _c; + var _b; if (isMain) return undefined; try { const { dbFullName, dbName, dbSlug, dbDescription, dbImage, childDatabase, childDatabaseDbId, id, } = dbSchema; let recordedDbEntryArray = userId - ? yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?`, - queryValuesArray: [dbFullName || "NULL"], - }) + ? (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?`, + values: [dbFullName || "NULL"], + })) : undefined; let recordedDbEntry = recordedDbEntryArray === null || recordedDbEntryArray === void 0 ? void 0 : recordedDbEntryArray[0]; const newDbEntryObj = { @@ -53,10 +53,10 @@ function checkDbRecordCreateDbSchema(_a) { forceLocal: true, }); if ((_b = newDbEntry.payload) === null || _b === void 0 ? void 0 : _b.insertId) { - recordedDbEntryArray = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?`, - queryValuesArray: [dbFullName || "NULL"], - }); + recordedDbEntryArray = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?`, + values: [dbFullName || "NULL"], + })); recordedDbEntry = recordedDbEntryArray === null || recordedDbEntryArray === void 0 ? void 0 : recordedDbEntryArray[0]; } } @@ -72,7 +72,7 @@ function checkDbRecordCreateDbSchema(_a) { return recordedDbEntry; } catch (error) { - (_c = global.ERROR_CALLBACK) === null || _c === void 0 ? void 0 : _c.call(global, `Error Checking DB Record on Creating Schema`, error); + console.log("Error =\u003e", error.message); return undefined; } }); diff --git a/dist/package-shared/shell/createDbFromSchema/check-table-record.js b/dist/package-shared/shell/createDbFromSchema/check-table-record.js index 624b863..89c5035 100644 --- a/dist/package-shared/shell/createDbFromSchema/check-table-record.js +++ b/dist/package-shared/shell/createDbFromSchema/check-table-record.js @@ -13,17 +13,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = checkTableRecordCreateDbSchema; -const varDatabaseDbHandler_1 = __importDefault(require("../utils/varDatabaseDbHandler")); const sql_generator_1 = __importDefault(require("../../functions/dsql/sql/sql-generator")); const numberfy_1 = __importDefault(require("../../utils/numberfy")); const addDbEntry_1 = __importDefault(require("../../functions/backend/db/addDbEntry")); +const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); /** * # Create database from Schema Function * @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database */ function checkTableRecordCreateDbSchema(_a) { return __awaiter(this, arguments, void 0, function* ({ userId, tableSchema, dbSchema, dbRecord, dbFullName, }) { - var _b, _c; + var _b; if (!tableSchema) return undefined; try { @@ -45,10 +45,10 @@ function checkTableRecordCreateDbSchema(_a) { dbFullName: "datasquirel", }); let recordedTableEntryArray = userId - ? yield (0, varDatabaseDbHandler_1.default)({ - queryString: (queryObj === null || queryObj === void 0 ? void 0 : queryObj.string) || "", - queryValuesArray: queryObj === null || queryObj === void 0 ? void 0 : queryObj.values, - }) + ? (yield (0, dbHandler_1.default)({ + query: (queryObj === null || queryObj === void 0 ? void 0 : queryObj.string) || "", + values: queryObj === null || queryObj === void 0 ? void 0 : queryObj.values, + })) : undefined; let recordedTableEntry = recordedTableEntryArray === null || recordedTableEntryArray === void 0 ? void 0 : recordedTableEntryArray[0]; if (!(recordedTableEntry === null || recordedTableEntry === void 0 ? void 0 : recordedTableEntry.id) && userId) { @@ -75,17 +75,17 @@ function checkTableRecordCreateDbSchema(_a) { forceLocal: true, }); if ((_b = newTableRecordEntry.payload) === null || _b === void 0 ? void 0 : _b.insertId) { - recordedTableEntryArray = yield (0, varDatabaseDbHandler_1.default)({ - queryString: (queryObj === null || queryObj === void 0 ? void 0 : queryObj.string) || "", - queryValuesArray: queryObj === null || queryObj === void 0 ? void 0 : queryObj.values, - }); + recordedTableEntryArray = (yield (0, dbHandler_1.default)({ + query: (queryObj === null || queryObj === void 0 ? void 0 : queryObj.string) || "", + values: queryObj === null || queryObj === void 0 ? void 0 : queryObj.values, + })); recordedTableEntry = recordedTableEntryArray === null || recordedTableEntryArray === void 0 ? void 0 : recordedTableEntryArray[0]; } } return recordedTableEntry; } catch (error) { - (_c = global.ERROR_CALLBACK) === null || _c === void 0 ? void 0 : _c.call(global, `Error Checking Table Record on Creating Schema`, error); + console.log("Error =\u003e", error.message); return undefined; } }); diff --git a/dist/package-shared/shell/createDbFromSchema/handle-indexes.js b/dist/package-shared/shell/createDbFromSchema/handle-indexes.js index dcd7ddb..d378274 100644 --- a/dist/package-shared/shell/createDbFromSchema/handle-indexes.js +++ b/dist/package-shared/shell/createDbFromSchema/handle-indexes.js @@ -13,8 +13,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = handleIndexescreateDbFromSchema; -const varDatabaseDbHandler_1 = __importDefault(require("../utils/varDatabaseDbHandler")); const grab_dsql_schema_index_comment_1 = __importDefault(require("../utils/grab-dsql-schema-index-comment")); +const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); /** * Handle DATASQUIREL Table Indexes * =================================================== @@ -23,9 +23,9 @@ const grab_dsql_schema_index_comment_1 = __importDefault(require("../utils/grab- */ function handleIndexescreateDbFromSchema(_a) { return __awaiter(this, arguments, void 0, function* ({ dbFullName, tableName, indexes, }) { - const allExistingIndexes = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``, - }); + const allExistingIndexes = (yield (0, dbHandler_1.default)({ + query: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``, + })); for (let g = 0; g < indexes.length; g++) { const { indexType, indexName, indexTableFields, alias } = indexes[g]; if (!(alias === null || alias === void 0 ? void 0 : alias.match(/./))) @@ -44,11 +44,11 @@ function handleIndexescreateDbFromSchema(_a) { * doesn't exist in MYSQL db */ const queryString = `CREATE${indexType == "full_text" ? " FULLTEXT" : ""} INDEX \`${alias}\` ON \`${dbFullName}\`.\`${tableName}\`(${indexTableFields === null || indexTableFields === void 0 ? void 0 : indexTableFields.map((nm) => nm.value).map((nm) => `\`${nm}\``).join(",")}) COMMENT '${(0, grab_dsql_schema_index_comment_1.default)()} ${indexName}'`; - const addIndex = yield (0, varDatabaseDbHandler_1.default)({ queryString }); + const addIndex = yield (0, dbHandler_1.default)({ query: queryString }); } } - const allExistingIndexesAfterUpdate = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``, - }); + const allExistingIndexesAfterUpdate = (yield (0, dbHandler_1.default)({ + query: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``, + })); }); } diff --git a/dist/package-shared/shell/createDbFromSchema/index.js b/dist/package-shared/shell/createDbFromSchema/index.js index ad78ead..1b0b695 100644 --- a/dist/package-shared/shell/createDbFromSchema/index.js +++ b/dist/package-shared/shell/createDbFromSchema/index.js @@ -46,8 +46,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createDbFromSchema; -const noDatabaseDbHandler_1 = __importDefault(require("../utils/noDatabaseDbHandler")); -const varDatabaseDbHandler_1 = __importDefault(require("../utils/varDatabaseDbHandler")); const createTable_1 = __importDefault(require("../utils/createTable")); const updateTable_1 = __importDefault(require("../utils/updateTable")); const grab_dir_names_1 = __importDefault(require("../../utils/backend/names/grab-dir-names")); @@ -88,59 +86,41 @@ function createDbFromSchema(_a) { continue; } console.log(`Handling database => ${dbFullName}`); - const dbCheck = yield (0, noDatabaseDbHandler_1.default)(`SELECT SCHEMA_NAME AS dbFullName FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${dbFullName}'`); + const dbCheck = yield (0, dbHandler_1.default)({ + query: `SELECT SCHEMA_NAME AS dbFullName FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${dbFullName}'`, + }); if (!((_b = dbCheck === null || dbCheck === void 0 ? void 0 : dbCheck[0]) === null || _b === void 0 ? void 0 : _b.dbFullName)) { - const newDatabase = yield (0, noDatabaseDbHandler_1.default)(`CREATE DATABASE IF NOT EXISTS \`${dbFullName}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`); + const newDatabase = yield (0, dbHandler_1.default)({ + query: `CREATE DATABASE IF NOT EXISTS \`${dbFullName}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`, + }); } - const allTables = yield (0, noDatabaseDbHandler_1.default)(`SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='${dbFullName}'`); + const allTables = (yield (0, dbHandler_1.default)({ + query: `SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='${dbFullName}'`, + })); let recordedDbEntry = yield (0, check_db_record_1.default)({ dbSchema: database, userId, isMain, }); - for (let tb = 0; tb < allTables.length; tb++) { - const { TABLE_NAME } = allTables[tb]; - const targetTableSchema = tables.find((_table) => _table.tableName === TABLE_NAME); - /** - * @description Check if TABLE_NAME is part of the tables contained - * in the user schema JSON. If it's not, the table is either deleted - * or the table name has been recently changed - */ - if (!targetTableSchema) { - console.log(`Dropping Table ${TABLE_NAME} from ${dbFullName}`); - yield (0, varDatabaseDbHandler_1.default)({ - queryString: `DROP TABLE \`${dbFullName}\`.\`${TABLE_NAME}\``, - }); - const deleteTableEntry = yield (0, dbHandler_1.default)({ - query: `DELETE FROM datasquirel.user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`, - values: [userId, dbSlug, TABLE_NAME], - }); - // const oldTable = tables.find( - // (_table) => - // _table.tableNameOld && - // _table.tableNameOld === TABLE_NAME - // ); - // /** - // * @description Check if this table has been recently renamed. Rename - // * table id true. Drop table if false - // */ - // if (oldTable) { - // console.log("Renaming Table"); - // await varDatabaseDbHandler({ - // queryString: `RENAME TABLE \`${dbFullName}\`.\`${oldTable.tableNameOld}\` TO \`${oldTable.tableName}\``, - // }); - // } else { - // console.log( - // `Dropping Table ${TABLE_NAME} from ${dbFullName}` - // ); - // await varDatabaseDbHandler({ - // queryString: `DROP TABLE \`${dbFullName}\`.\`${TABLE_NAME}\``, - // }); - // const deleteTableEntry = await dbHandler({ - // query: `DELETE FROM datasquirel.user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`, - // values: [userId, dbSlug, TABLE_NAME], - // }); - // } + if (allTables === null || allTables === void 0 ? void 0 : allTables.length) { + for (let tb = 0; tb < allTables.length; tb++) { + const { TABLE_NAME } = allTables[tb]; + const targetTableSchema = tables.find((_table) => _table.tableName === TABLE_NAME); + /** + * @description Check if TABLE_NAME is part of the tables contained + * in the user schema JSON. If it's not, the table is either deleted + * or the table name has been recently changed + */ + if (!targetTableSchema) { + console.log(`Dropping Table ${TABLE_NAME} from ${dbFullName}`); + yield (0, dbHandler_1.default)({ + query: `DROP TABLE \`${dbFullName}\`.\`${TABLE_NAME}\``, + }); + const deleteTableEntry = yield (0, dbHandler_1.default)({ + query: `DELETE FROM datasquirel.user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`, + values: [userId, dbSlug, TABLE_NAME], + }); + } } } /** @@ -156,8 +136,8 @@ function createDbFromSchema(_a) { * @description Check if table exists * @type {any} */ - const tableCheck = yield (0, varDatabaseDbHandler_1.default)({ - queryString: ` + const tableCheck = yield (0, dbHandler_1.default)({ + query: ` SELECT EXISTS ( SELECT TABLE_NAME @@ -167,7 +147,7 @@ function createDbFromSchema(_a) { TABLE_SCHEMA = ? AND TABLE_NAME = ? ) AS tableExists`, - queryValuesArray: [dbFullName, table.tableName], + values: [dbFullName, table.tableName], }); if (tableCheck && ((_c = tableCheck[0]) === null || _c === void 0 ? void 0 : _c.tableExists) > 0) { /** diff --git a/dist/package-shared/shell/encodingUpdate.js b/dist/package-shared/shell/encodingUpdate.js index c50ffb7..d32aff5 100644 --- a/dist/package-shared/shell/encodingUpdate.js +++ b/dist/package-shared/shell/encodingUpdate.js @@ -13,33 +13,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); require("dotenv").config({ path: "./../.env" }); -const varDatabaseDbHandler_1 = __importDefault(require("../functions/backend/varDatabaseDbHandler")); -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** - * Grab Schema - * - * @description Grab Schema - */ -(0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT user_database_tables.*,user_databases.db_full_name FROM user_database_tables JOIN user_databases ON user_database_tables.db_id=user_databases.id`, +const dbHandler_1 = __importDefault(require("../functions/backend/dbHandler")); +(0, dbHandler_1.default)({ + query: `SELECT user_database_tables.*,user_databases.db_full_name FROM user_database_tables JOIN user_databases ON user_database_tables.db_id=user_databases.id`, database: "datasquirel", }).then((tables) => __awaiter(void 0, void 0, void 0, function* () { for (let i = 0; i < tables.length; i++) { const table = tables[i]; const { id, user_id, db_id, db_full_name, table_name, table_slug, table_description, } = table; - const tableInfo = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`, + const tableInfo = yield (0, dbHandler_1.default)({ + query: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`, }); - const updateDbCharset = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `ALTER DATABASE ${db_full_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;`, + const updateDbCharset = yield (0, dbHandler_1.default)({ + query: `ALTER DATABASE ${db_full_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;`, }); - const updateEncoding = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`, + const updateEncoding = yield (0, dbHandler_1.default)({ + query: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`, }); } process.exit(); diff --git a/dist/package-shared/shell/grantFullPriviledges.d.ts b/dist/package-shared/shell/grantFullPriviledges.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/dist/package-shared/shell/grantFullPriviledges.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/dist/package-shared/shell/grantFullPriviledges.js b/dist/package-shared/shell/grantFullPriviledges.js deleted file mode 100644 index 7e8a282..0000000 --- a/dist/package-shared/shell/grantFullPriviledges.js +++ /dev/null @@ -1,51 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -require("dotenv").config({ path: "./../.env" }); -const app_names_1 = require("../dict/app-names"); -const serverError_1 = __importDefault(require("../functions/backend/serverError")); -const noDatabaseDbHandler_1 = __importDefault(require("./utils/noDatabaseDbHandler")); -/** - * # Create Database From Schema - */ -function grantFullPrivileges(_a) { - return __awaiter(this, arguments, void 0, function* ({ userId }) { - /** - * Grab Schema - * - * @description Grab Schema - */ - try { - const defaultMariadbUserHost = process.env.DSQL_DB_HOST || "127.0.0.1"; - const allDatabases = yield (0, noDatabaseDbHandler_1.default)(`SHOW DATABASES`); - const datasquirelUserDatabases = allDatabases.filter((database) => database.Database.match(new RegExp(`^${app_names_1.AppNames["DsqlDbPrefix"]}`))); - for (let i = 0; i < datasquirelUserDatabases.length; i++) { - const datasquirelUserDatabase = datasquirelUserDatabases[i]; - const { Database } = datasquirelUserDatabase; - } - const flushPriviledged = yield (0, noDatabaseDbHandler_1.default)(`FLUSH PRIVILEGES`); - } - catch (error) { - (0, serverError_1.default)({ - component: "shell/grantDbPriviledges/main-catch-error", - message: error.message, - user: { id: userId }, - }); - } - process.exit(); - }); -} -const userArg = process.argv[process.argv.indexOf("--user")]; -const externalUser = process.argv[process.argv.indexOf("--user") + 1]; -grantFullPrivileges({ userId: userArg ? externalUser : null }); diff --git a/dist/package-shared/shell/mariadb-users/handleGrants.d.ts b/dist/package-shared/shell/mariadb-users/handleGrants.d.ts deleted file mode 100644 index 050d8cb..0000000 --- a/dist/package-shared/shell/mariadb-users/handleGrants.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -export interface GrantType { - database: string; - table: string; - privileges: string[]; -} -type Param = { - username?: string; - host?: string; - grants?: GrantType[]; - userId: string; -}; -/** - * # Handle Grants for Users - */ -export default function handleGrants({ username, host, grants, userId, }: Param): Promise; -export {}; diff --git a/dist/package-shared/shell/mariadb-users/handleGrants.js b/dist/package-shared/shell/mariadb-users/handleGrants.js deleted file mode 100644 index 94de0e7..0000000 --- a/dist/package-shared/shell/mariadb-users/handleGrants.js +++ /dev/null @@ -1,74 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = handleGrants; -const noDatabaseDbHandler_1 = __importDefault(require("../utils/noDatabaseDbHandler")); -/** - * # Handle Grants for Users - */ -function handleGrants(_a) { - return __awaiter(this, arguments, void 0, function* ({ username, host, grants, userId, }) { - var _b; - let success = false; - console.log(`Handling Grants for User =>`, username, host); - if (!username) { - console.log(`No username provided.`); - return success; - } - if (!host) { - console.log(`No Host provided. \x1b[35m\`--host\`\x1b[0m flag is required`); - return success; - } - if (!grants) { - console.log(`No grants Array provided.`); - return success; - } - try { - const existingUser = yield (0, noDatabaseDbHandler_1.default)(`SELECT * FROM mysql.user WHERE User = '${username}' AND Host = '${host}'`); - const isUserExisting = Boolean((_b = existingUser === null || existingUser === void 0 ? void 0 : existingUser[0]) === null || _b === void 0 ? void 0 : _b.User); - if (isUserExisting) { - const userGrants = yield (0, noDatabaseDbHandler_1.default)(`SHOW GRANTS FOR '${username}'@'${host}'`); - for (let i = 0; i < userGrants.length; i++) { - const grantObject = userGrants[i]; - const grant = grantObject === null || grantObject === void 0 ? void 0 : grantObject[Object.keys(grantObject)[0]]; - if (grant === null || grant === void 0 ? void 0 : grant.match(/GRANT .* PRIVILEGES ON .* TO/)) { - const revokeGrantText = grant - .replace(/GRANT/, "REVOKE") - .replace(/ TO /, " FROM "); - const revokePrivilege = yield (0, noDatabaseDbHandler_1.default)(revokeGrantText); - } - } - const grantsArray = grants; - for (let i = 0; i < grantsArray.length; i++) { - const grantObject = grantsArray[i]; - const { database, table, privileges } = grantObject; - const tableText = table == "*" ? "*" : `\`${table}\``; - const databaseText = database == "*" - ? `\`${process.env.DSQL_USER_DB_PREFIX}${userId}_%\`` - : `\`${database}\``; - const privilegesText = privileges.includes("ALL") - ? "ALL PRIVILEGES" - : privileges.join(", "); - const grantText = `GRANT ${privilegesText} ON ${databaseText}.${tableText} TO '${username}'@'${host}'`; - const grantPriviledge = yield (0, noDatabaseDbHandler_1.default)(grantText); - } - } - success = true; - } - catch ( /** @type {any} */error) { - console.log(`Error in adding SQL user =>`, error.message); - } - return success; - }); -} diff --git a/dist/package-shared/shell/mariadb-users/resetSQLPasswords.d.ts b/dist/package-shared/shell/mariadb-users/resetSQLPasswords.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/dist/package-shared/shell/mariadb-users/resetSQLPasswords.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/dist/package-shared/shell/mariadb-users/resetSQLPasswords.js b/dist/package-shared/shell/mariadb-users/resetSQLPasswords.js deleted file mode 100644 index 07387d7..0000000 --- a/dist/package-shared/shell/mariadb-users/resetSQLPasswords.js +++ /dev/null @@ -1,72 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -require("dotenv").config({ path: "../../.env" }); -const generate_password_1 = __importDefault(require("generate-password")); -const noDatabaseDbHandler_1 = __importDefault(require("../utils/noDatabaseDbHandler")); -const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); -const encrypt_1 = __importDefault(require("../../functions/dsql/encrypt")); -const grab_sql_key_name_1 = __importDefault(require("../../utils/grab-sql-key-name")); -/** - * # Reset SQL Passwords - */ -function resetSQLCredentialsPasswords() { - return __awaiter(this, void 0, void 0, function* () { - var _a; - const users = (yield (0, dbHandler_1.default)({ - query: `SELECT * FROM users`, - })); - if (!users) { - process.exit(); - } - for (let i = 0; i < users.length; i++) { - const user = users[i]; - if (!user) - continue; - try { - const maridbUsers = (yield (0, dbHandler_1.default)({ - query: `SELECT * FROM mysql.user WHERE User = '${(0, grab_sql_key_name_1.default)({ type: "user", userId: user.id })}'`, - })); - for (let j = 0; j < maridbUsers.length; j++) { - const { User, Host } = maridbUsers[j]; - const password = generate_password_1.default.generate({ - length: 16, - numbers: true, - symbols: true, - uppercase: true, - exclude: "*#.'`\"", - }); - const encryptedPassword = (0, encrypt_1.default)({ - data: password, - encryptionKey: process.env.DSQL_ENCRYPTION_PASSWORD, - encryptionSalt: process.env.DSQL_ENCRYPTION_SALT, - }); - yield (0, noDatabaseDbHandler_1.default)(`SET PASSWORD FOR '${User}'@'${Host}' = PASSWORD('${password}')`); - if (user.mariadb_user == User && user.mariadb_host == Host) { - const updateUser = yield (0, dbHandler_1.default)({ - query: `UPDATE users SET mariadb_pass = ? WHERE id = ?`, - values: [encryptedPassword, user.id], - }); - } - console.log(`User ${user.id}: ${user.first_name} ${user.last_name} Password Updated successfully added.`); - } - } - catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Resetting MariaDB User Password`, error); - } - } - process.exit(); - }); -} -resetSQLCredentialsPasswords(); diff --git a/dist/package-shared/shell/mariadb-users/users/create-user.js b/dist/package-shared/shell/mariadb-users/users/create-user.js index e76e332..d14b561 100644 --- a/dist/package-shared/shell/mariadb-users/users/create-user.js +++ b/dist/package-shared/shell/mariadb-users/users/create-user.js @@ -17,7 +17,7 @@ require("dotenv").config({ path: "../../../.env" }); const fs_1 = __importDefault(require("fs")); const child_process_1 = require("child_process"); const ejson_1 = __importDefault(require("../../../utils/ejson")); -const DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/DB_HANDLER")); +const dbHandler_1 = __importDefault(require("../../../functions/backend/dbHandler")); const addDbEntry_1 = __importDefault(require("../../../functions/backend/db/addDbEntry")); const addMariadbUser_1 = __importDefault(require("../../../functions/backend/addMariadbUser")); const updateDbEntry_1 = __importDefault(require("../../../functions/backend/db/updateDbEntry")); @@ -29,7 +29,7 @@ const tmpDir = process.argv[process.argv.length - 1]; */ function createUser() { return __awaiter(this, void 0, void 0, function* () { - var _a, _b; + var _a; /** * Validate Form * @@ -67,7 +67,9 @@ function createUser() { encryptionKey: process.env.DSQL_ENCRYPTION_PASSWORD || "", password: password, }); - let existingUser = yield (0, DB_HANDLER_1.default)(`SELECT * FROM users WHERE email='${email}'`); + let existingUser = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM users WHERE email='${email}'`, + })); if (existingUser === null || existingUser === void 0 ? void 0 : existingUser[0]) { console.log("User Exists"); return false; @@ -128,7 +130,7 @@ function createUser() { return true; } catch (error) { - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Error Creating User`, error); + console.log("Error =\u003e", error.message); return false; } }); diff --git a/dist/package-shared/shell/mariadb-users/users/update-user.js b/dist/package-shared/shell/mariadb-users/users/update-user.js index 8996d0a..e41dc3f 100644 --- a/dist/package-shared/shell/mariadb-users/users/update-user.js +++ b/dist/package-shared/shell/mariadb-users/users/update-user.js @@ -24,7 +24,6 @@ const tmpDir = process.argv[process.argv.length - 1]; */ function createUser() { return __awaiter(this, void 0, void 0, function* () { - var _a; /** * Validate Form * @@ -66,7 +65,7 @@ function createUser() { return true; } catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Updating User`, error); + console.log("Error =\u003e", error.message); return false; } }); diff --git a/dist/package-shared/shell/recoverMainJsonFromDb.js b/dist/package-shared/shell/recoverMainJsonFromDb.js index a88da32..53cb5fc 100644 --- a/dist/package-shared/shell/recoverMainJsonFromDb.js +++ b/dist/package-shared/shell/recoverMainJsonFromDb.js @@ -14,8 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); require("dotenv").config({ path: "./../.env" }); -const varDatabaseDbHandler_1 = __importDefault(require("../functions/backend/varDatabaseDbHandler")); -const DB_HANDLER_1 = __importDefault(require("../utils/backend/global-db/DB_HANDLER")); +const dbHandler_1 = __importDefault(require("../functions/backend/dbHandler")); const userId = process.argv.indexOf("--userId") >= 0 ? process.argv[process.argv.indexOf("--userId") + 1] : null; @@ -30,7 +29,9 @@ function recoverMainJsonFromDb() { console.log("No user Id provided"); return; } - const databases = yield (0, DB_HANDLER_1.default)(`SELECT * FROM user_databases WHERE user_id='${userId}'`); + const databases = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM user_databases WHERE user_id='${userId}'`, + })); const dbWrite = []; for (let i = 0; i < databases.length; i++) { const { id, db_name, db_slug, db_full_name, db_image, db_description } = databases[i]; @@ -42,7 +43,9 @@ function recoverMainJsonFromDb() { dbImage: db_image, tables: [], }; - const tables = yield (0, DB_HANDLER_1.default)(`SELECT * FROM user_database_tables WHERE user_id='${userId}' AND db_id='${id}'`); + const tables = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM user_database_tables WHERE user_id='${userId}' AND db_id='${id}'`, + })); for (let j = 0; j < tables.length; j++) { const { table_name, table_slug, table_description } = tables[j]; const tableObject = { @@ -51,10 +54,14 @@ function recoverMainJsonFromDb() { fields: [], indexes: [], }; - const tableFields = yield (0, varDatabaseDbHandler_1.default)({ + const tableFields = (yield (0, dbHandler_1.default)({ database: db_full_name, - queryString: `SHOW COLUMNS FROM ${db_full_name}.${table_slug}`, - }); + query: `SHOW COLUMNS FROM ${db_full_name}.${table_slug}`, + })); + if (!tableFields) { + console.log("No table fields found"); + continue; + } for (let k = 0; k < tableFields.length; k++) { const { Field, Type, Null, Default, Key } = tableFields[k]; const fieldObject = { diff --git a/dist/package-shared/shell/resetSQLCredentialsPasswords.js b/dist/package-shared/shell/resetSQLCredentialsPasswords.js index 4c480fe..0fabf62 100644 --- a/dist/package-shared/shell/resetSQLCredentialsPasswords.js +++ b/dist/package-shared/shell/resetSQLCredentialsPasswords.js @@ -14,7 +14,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); require("dotenv").config({ path: "./../.env" }); const generate_password_1 = __importDefault(require("generate-password")); -const noDatabaseDbHandler_1 = __importDefault(require("./utils/noDatabaseDbHandler")); const dbHandler_1 = __importDefault(require("../functions/backend/dbHandler")); const encrypt_1 = __importDefault(require("../functions/dsql/encrypt")); const grab_sql_key_name_1 = __importDefault(require("../utils/grab-sql-key-name")); @@ -23,7 +22,6 @@ const grab_sql_key_name_1 = __importDefault(require("../utils/grab-sql-key-name" */ function resetSQLCredentialsPasswords() { return __awaiter(this, void 0, void 0, function* () { - var _a; const users = (yield (0, dbHandler_1.default)({ query: `SELECT * FROM users`, })); @@ -45,7 +43,9 @@ function resetSQLCredentialsPasswords() { exclude: "*#.'`\"", }); const encryptedPassword = (0, encrypt_1.default)({ data: password }); - yield (0, noDatabaseDbHandler_1.default)(`SET PASSWORD FOR '${username}'@'${defaultMariadbUserHost}' = PASSWORD('${password}')`); + yield (0, dbHandler_1.default)({ + query: `SET PASSWORD FOR '${username}'@'${defaultMariadbUserHost}' = PASSWORD('${password}')`, + }); const updateUser = yield (0, dbHandler_1.default)({ query: `UPDATE users SET mariadb_pass = ? WHERE id = ?`, values: [encryptedPassword, user.id], @@ -53,7 +53,7 @@ function resetSQLCredentialsPasswords() { console.log(`User ${user.id}: ${user.first_name} ${user.last_name} Password Updated successfully added.`); } catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Updating MariaDB User`, error); + console.log("Error =\u003e", error.message); } } process.exit(); diff --git a/dist/package-shared/shell/setSQLCredentials.d.ts b/dist/package-shared/shell/setSQLCredentials.d.ts deleted file mode 100644 index cb0ff5c..0000000 --- a/dist/package-shared/shell/setSQLCredentials.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/dist/package-shared/shell/setSQLCredentials.js b/dist/package-shared/shell/setSQLCredentials.js deleted file mode 100644 index 56bea42..0000000 --- a/dist/package-shared/shell/setSQLCredentials.js +++ /dev/null @@ -1,71 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -require("dotenv").config({ path: "./../.env" }); -const generate_password_1 = __importDefault(require("generate-password")); -const noDatabaseDbHandler_1 = __importDefault(require("./utils/noDatabaseDbHandler")); -const dbHandler_1 = __importDefault(require("../functions/backend/dbHandler")); -const encrypt_1 = __importDefault(require("../functions/dsql/encrypt")); -const grab_sql_key_name_1 = __importDefault(require("../utils/grab-sql-key-name")); -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** - * # Set SQL Credentials - */ -function setSQLCredentials() { - return __awaiter(this, void 0, void 0, function* () { - var _a; - const users = (yield (0, dbHandler_1.default)({ - query: `SELECT * FROM users`, - })); - if (!users) { - process.exit(); - } - for (let i = 0; i < users.length; i++) { - const user = users[i]; - if (!user) - continue; - if (user.mariadb_user && user.mariadb_pass) { - continue; - } - try { - const username = (0, grab_sql_key_name_1.default)({ type: "user", userId: user.id }); - const password = generate_password_1.default.generate({ - length: 16, - numbers: true, - symbols: true, - uppercase: true, - exclude: "*#.'`\"", - }); - const encryptedPassword = (0, encrypt_1.default)({ data: password }); - yield (0, noDatabaseDbHandler_1.default)(`CREATE USER IF NOT EXISTS '${username}'@'127.0.0.1' IDENTIFIED BY '${password}'`); - yield (0, noDatabaseDbHandler_1.default)(`GRANT ALL PRIVILEGES ON \`datasquirel\\_user\\_${user.id}\\_%\`.* TO '${username}'@'127.0.0.1'`); - yield (0, noDatabaseDbHandler_1.default)(`FLUSH PRIVILEGES`); - const updateUser = yield (0, dbHandler_1.default)({ - query: `UPDATE users SET mariadb_user = ?, mariadb_host = '127.0.0.1' mariadb_pass = ? WHERE id = ?`, - values: [username, encryptedPassword, user.id], - }); - console.log(`User ${user.id}: ${user.first_name} ${user.last_name} SQL credentials successfully added.`); - } - catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Setting SQL credentials`, error); - } - } - }); -} -setSQLCredentials(); diff --git a/dist/package-shared/shell/test-external-server.js b/dist/package-shared/shell/test-external-server.js index f5d6104..51e6183 100644 --- a/dist/package-shared/shell/test-external-server.js +++ b/dist/package-shared/shell/test-external-server.js @@ -26,7 +26,6 @@ const grab_dsql_connection_1 = __importDefault(require("../utils/grab-dsql-conne * @returns {Promise} */ (() => __awaiter(void 0, void 0, void 0, function* () { - var _a; const CONNECTION = yield (0, grab_dsql_connection_1.default)({ noDb: true }); /** * Switch Database @@ -34,12 +33,12 @@ const grab_dsql_connection_1 = __importDefault(require("../utils/grab-dsql-conne * @description If a database is provided, switch to it */ try { - const result = yield CONNECTION.query("SHOW DATABASES"); + const [result] = yield CONNECTION.query("SHOW DATABASES"); const parsedResults = JSON.parse(JSON.stringify(result)); console.log("parsedResults =>", parsedResults); } catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Testing External Server`, error); + console.log("Error =\u003e", error.message); } finally { yield (CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.end()); diff --git a/dist/package-shared/shell/testSQLEscape.d.ts b/dist/package-shared/shell/testSQLEscape.d.ts deleted file mode 100644 index ebef584..0000000 --- a/dist/package-shared/shell/testSQLEscape.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * # Test SQL Escape - */ -export default function testSQLEscape(): Promise; diff --git a/dist/package-shared/shell/testSQLEscape.js b/dist/package-shared/shell/testSQLEscape.js deleted file mode 100644 index 5f46f41..0000000 --- a/dist/package-shared/shell/testSQLEscape.js +++ /dev/null @@ -1,71 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = testSQLEscape; -require("dotenv").config({ path: "./../.env" }); -const generate_password_1 = __importDefault(require("generate-password")); -const noDatabaseDbHandler_1 = __importDefault(require("./utils/noDatabaseDbHandler")); -const dbHandler_1 = __importDefault(require("../functions/backend/dbHandler")); -const encrypt_1 = __importDefault(require("../functions/dsql/encrypt")); -const grab_sql_key_name_1 = __importDefault(require("../utils/grab-sql-key-name")); -/** - * # Test SQL Escape - */ -function testSQLEscape() { - return __awaiter(this, void 0, void 0, function* () { - var _a; - const users = (yield (0, dbHandler_1.default)({ - query: `SELECT * FROM users`, - })); - if (!users) { - process.exit(); - } - for (let i = 0; i < users.length; i++) { - const user = users[i]; - if (!user) - continue; - const defaultMariadbUserHost = process.env.DSQL_DB_HOST || "127.0.0.1"; - try { - const username = (0, grab_sql_key_name_1.default)({ type: "user", userId: user.id }); - const password = generate_password_1.default.generate({ - length: 16, - numbers: true, - symbols: true, - uppercase: true, - exclude: "*#.'`\"", - }); - const encryptedPassword = (0, encrypt_1.default)({ data: password }); - yield (0, noDatabaseDbHandler_1.default)(`DROP USER '${username}'@'${defaultMariadbUserHost}'`); - yield (0, noDatabaseDbHandler_1.default)(`CREATE USER IF NOT EXISTS '${username}'@'${defaultMariadbUserHost}' IDENTIFIED BY '${password}'`); - yield (0, noDatabaseDbHandler_1.default)(`GRANT ALL PRIVILEGES ON \`datasquirel\\_user\\_${user.id}\\_%\`.* TO '${username}'@'${defaultMariadbUserHost}'`); - yield (0, noDatabaseDbHandler_1.default)(`FLUSH PRIVILEGES`); - const updateUser = yield (0, dbHandler_1.default)({ - query: `UPDATE users SET mariadb_user = ?, mariadb_host = ? mariadb_pass = ? WHERE id = ?`, - values: [ - username, - defaultMariadbUserHost, - encryptedPassword, - user.id, - ], - }); - console.log(`User ${user.id}: ${user.first_name} ${user.last_name} SQL credentials successfully added.`); - } - catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Testing SQL Escape`, error); - } - } - process.exit(); - }); -} -testSQLEscape(); diff --git a/dist/package-shared/shell/updateChildrenTablesOnDb.js b/dist/package-shared/shell/updateChildrenTablesOnDb.js index 8d5512b..755c960 100644 --- a/dist/package-shared/shell/updateChildrenTablesOnDb.js +++ b/dist/package-shared/shell/updateChildrenTablesOnDb.js @@ -12,12 +12,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -const DB_HANDLER_1 = __importDefault(require("../utils/backend/global-db/DB_HANDLER")); +const dbHandler_1 = __importDefault(require("../functions/backend/dbHandler")); const fs_1 = __importDefault(require("fs")); require("dotenv").config({ path: "./../.env" }); function updateChildrenTablesOnDb() { return __awaiter(this, void 0, void 0, function* () { - var _a; /** * Grab Schema * @@ -39,18 +38,20 @@ function updateChildrenTablesOnDb() { const originTableName = table.childTableName; const originDbName = table.childTableDbFullName; const WHERE_CLAUSE = `WHERE user_id='${userId}' AND db_slug='${db.dbSlug}' AND table_slug='${table.tableName}'`; - const existingTableInDb = yield (0, DB_HANDLER_1.default)(`SELECT * FROM user_database_tables ${WHERE_CLAUSE}`); - if (existingTableInDb && existingTableInDb[0]) { - const updateChildrenTablesInfo = yield (0, DB_HANDLER_1.default)(`UPDATE user_database_tables SET child_table='1',child_table_parent_database='${originDbName}',child_table_parent_table='${originTableName}' WHERE id='${existingTableInDb[0].id}'`); + const existingTableInDb = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM user_database_tables ${WHERE_CLAUSE}`, + })); + if (existingTableInDb === null || existingTableInDb === void 0 ? void 0 : existingTableInDb[0]) { + const updateChildrenTablesInfo = yield (0, dbHandler_1.default)({ + query: `UPDATE user_database_tables SET child_table='1',child_table_parent_database='${originDbName}',child_table_parent_table='${originTableName}' WHERE id='${existingTableInDb[0].id}'`, + }); } } } } } } - catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Updating Children Tables on DB`, error); - } + catch (error) { } process.exit(); }); } diff --git a/dist/package-shared/shell/updateDateTimestamps.js b/dist/package-shared/shell/updateDateTimestamps.js index 3a1d1e7..2db09bc 100644 --- a/dist/package-shared/shell/updateDateTimestamps.js +++ b/dist/package-shared/shell/updateDateTimestamps.js @@ -13,27 +13,27 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); require("dotenv").config({ path: "./../.env" }); -const varDatabaseDbHandler_1 = __importDefault(require("../functions/backend/varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../functions/backend/dbHandler")); /** * Grab Schema * * @description Grab Schema */ -(0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT user_database_tables.*,user_databases.db_full_name FROM user_database_tables JOIN user_databases ON user_database_tables.db_id=user_databases.id`, +(0, dbHandler_1.default)({ + query: `SELECT user_database_tables.*,user_databases.db_full_name FROM user_database_tables JOIN user_databases ON user_database_tables.db_id=user_databases.id`, database: "datasquirel", }).then((tables) => __awaiter(void 0, void 0, void 0, function* () { for (let i = 0; i < tables.length; i++) { const table = tables[i]; const { id, user_id, db_id, db_full_name, table_name, table_slug, table_description, } = table; - const tableInfo = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`, + const tableInfo = yield (0, dbHandler_1.default)({ + query: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`, }); - const updateCreationDateTimestamp = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_created_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP`, + const updateCreationDateTimestamp = yield (0, dbHandler_1.default)({ + query: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_created_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP`, }); - const updateDateTimestamp = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_updated_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`, + const updateDateTimestamp = yield (0, dbHandler_1.default)({ + query: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_updated_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`, }); console.log("Date Updated Column updated"); } diff --git a/dist/package-shared/shell/updateDbSlugsForTableRecords.js b/dist/package-shared/shell/updateDbSlugsForTableRecords.js index 16778aa..79e88e0 100644 --- a/dist/package-shared/shell/updateDbSlugsForTableRecords.js +++ b/dist/package-shared/shell/updateDbSlugsForTableRecords.js @@ -14,8 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); require("dotenv").config({ path: "./../.env" }); const serverError_1 = __importDefault(require("../functions/backend/serverError")); -const varDatabaseDbHandler_1 = __importDefault(require("./utils/varDatabaseDbHandler")); -const DB_HANDLER_1 = __importDefault(require("../utils/backend/global-db/DB_HANDLER")); +const dbHandler_1 = __importDefault(require("../functions/backend/dbHandler")); /** ****************************************************************************** */ /** ****************************************************************************** */ /** ****************************************************************************** */ @@ -27,18 +26,19 @@ const DB_HANDLER_1 = __importDefault(require("../utils/backend/global-db/DB_HAND * * @description Grab Schema */ -(0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT DISTINCT db_id FROM datasquirel.user_database_tables`, +(0, dbHandler_1.default)({ + query: `SELECT DISTINCT db_id FROM datasquirel.user_database_tables`, }).then((tables) => __awaiter(void 0, void 0, void 0, function* () { - // console.log(tables); - // process.exit(); - var _a; for (let i = 0; i < tables.length; i++) { const table = tables[i]; try { const { db_id } = table; - const dbSlug = yield (0, DB_HANDLER_1.default)(`SELECT db_slug FROM user_databases WHERE id='${db_id}'`); - const updateTableSlug = yield (0, DB_HANDLER_1.default)(`UPDATE user_database_tables SET db_slug='${dbSlug[0].db_slug}' WHERE db_id='${db_id}'`); + const dbSlug = (yield (0, dbHandler_1.default)({ + query: `SELECT db_slug FROM user_databases WHERE id='${db_id}'`, + })); + const updateTableSlug = yield (0, dbHandler_1.default)({ + query: `UPDATE user_database_tables SET db_slug='${dbSlug[0].db_slug}' WHERE db_id='${db_id}'`, + }); } catch (error) { (0, serverError_1.default)({ @@ -46,7 +46,6 @@ const DB_HANDLER_1 = __importDefault(require("../utils/backend/global-db/DB_HAND message: error.message, user: {}, }); - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Error Updating DB Slugs For Table Records`, error); } } process.exit(); diff --git a/dist/package-shared/shell/updateSSLUsers.js b/dist/package-shared/shell/updateSSLUsers.js index 5b34318..fde4ac0 100644 --- a/dist/package-shared/shell/updateSSLUsers.js +++ b/dist/package-shared/shell/updateSSLUsers.js @@ -27,13 +27,12 @@ const grab_sql_key_name_1 = __importDefault(require("../utils/grab-sql-key-name" * @returns {Promise} */ (() => __awaiter(void 0, void 0, void 0, function* () { - var _a, _b; + var _a; const CONNECTION = yield (0, grab_dsql_connection_1.default)(); try { - const result = yield CONNECTION.query("SELECT user,host,ssl_type FROM mysql.user"); - const parsedResults = JSON.parse(JSON.stringify(result)); - for (let i = 0; i < parsedResults.length; i++) { - const user = parsedResults[i]; + const [result] = yield CONNECTION.query("SELECT user,host,ssl_type FROM mysql.user"); + for (let i = 0; i < result.length; i++) { + const user = result[i]; if (user.User !== process.env.DSQL_DB_READ_ONLY_USERNAME || user.User !== process.env.DSQL_DB_FULL_ACCESS_USERNAME || !((_a = user.User) === null || _a === void 0 ? void 0 : _a.match(new RegExp((0, grab_sql_key_name_1.default)({ type: "user" }))))) { @@ -43,12 +42,12 @@ const grab_sql_key_name_1 = __importDefault(require("../utils/grab-sql-key-name" if (ssl_type === "ANY") { continue; } - const addUserSSL = yield CONNECTION.query(`ALTER USER '${User}'@'${Host}'`); + const [addUserSSL] = yield CONNECTION.query(`ALTER USER '${User}'@'${Host}'`); console.log(`addUserSSL => ${User}@${Host}`, addUserSSL); } } catch (error) { - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Error Updating SSL Users`, error); + console.log("Error =\u003e", error.message); } finally { yield (CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.end()); diff --git a/dist/package-shared/shell/utils/create-table-handle-table-record.js b/dist/package-shared/shell/utils/create-table-handle-table-record.js index 3cf6dd9..531fc39 100644 --- a/dist/package-shared/shell/utils/create-table-handle-table-record.js +++ b/dist/package-shared/shell/utils/create-table-handle-table-record.js @@ -13,12 +13,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; -const varDatabaseDbHandler_1 = __importDefault(require("./varDatabaseDbHandler")); const numberfy_1 = __importDefault(require("../../utils/numberfy")); const updateDbEntry_1 = __importDefault(require("../../functions/backend/db/updateDbEntry")); const addDbEntry_1 = __importDefault(require("../../functions/backend/db/addDbEntry")); const slug_to_normal_text_1 = __importDefault(require("../../utils/slug-to-normal-text")); const lodash_1 = __importDefault(require("lodash")); +const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); /** * # Handle Table Record Update and Insert */ @@ -59,13 +59,13 @@ function default_1(_a) { : 0, active_data: newTableSchema.updateData ? 1 : 0, }; - const existingTable = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT * FROM ${targetDatabase}.${targetTableName} WHERE db_id = ? AND table_slug = ?`, - queryValuesArray: [ + const existingTable = (yield (0, dbHandler_1.default)({ + query: `SELECT * FROM ${targetDatabase}.${targetTableName} WHERE db_id = ? AND table_slug = ?`, + values: [ String(recordedDbEntry.id), String(newTableSchema.tableName), ], - }); + })); const table = existingTable === null || existingTable === void 0 ? void 0 : existingTable[0]; if (table === null || table === void 0 ? void 0 : table.id) { tableId = table.id; diff --git a/dist/package-shared/shell/utils/createTable.js b/dist/package-shared/shell/utils/createTable.js index f544d67..d12a978 100644 --- a/dist/package-shared/shell/utils/createTable.js +++ b/dist/package-shared/shell/utils/createTable.js @@ -13,11 +13,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createTable; -const varDatabaseDbHandler_1 = __importDefault(require("./varDatabaseDbHandler")); const generateColumnDescription_1 = __importDefault(require("./generateColumnDescription")); const supplementTable_1 = __importDefault(require("./supplementTable")); const handle_table_foreign_key_1 = __importDefault(require("./handle-table-foreign-key")); const create_table_handle_table_record_1 = __importDefault(require("./create-table-handle-table-record")); +const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); /** * # Create Table Functions */ @@ -50,8 +50,8 @@ function createTable(_a) { } createTableQueryArray.push(`) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;`); const createTableQuery = createTableQueryArray.join("\n"); - const newTable = yield (0, varDatabaseDbHandler_1.default)({ - queryString: createTableQuery, + const newTable = yield (0, dbHandler_1.default)({ + query: createTableQuery, }); for (let i = 0; i < finalTable.length; i++) { const column = finalTable[i]; diff --git a/dist/package-shared/shell/utils/drop-all-foreign-keys.js b/dist/package-shared/shell/utils/drop-all-foreign-keys.js index ce0efa2..b07eaae 100644 --- a/dist/package-shared/shell/utils/drop-all-foreign-keys.js +++ b/dist/package-shared/shell/utils/drop-all-foreign-keys.js @@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = dropAllForeignKeys; const grab_sql_key_name_1 = __importDefault(require("../../utils/grab-sql-key-name")); -const varDatabaseDbHandler_1 = __importDefault(require("./varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); /** * # Drop All Foreign Keys */ @@ -33,13 +33,13 @@ function dropAllForeignKeys(_a) { // `, // }); // } - const foreignKeys = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\` WHERE Key_name LIKE '${(0, grab_sql_key_name_1.default)({ type: "foreign_key" })}%'`, - }); + const foreignKeys = (yield (0, dbHandler_1.default)({ + query: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\` WHERE Key_name LIKE '${(0, grab_sql_key_name_1.default)({ type: "foreign_key" })}%'`, + })); for (const fk of foreignKeys) { if (fk.Key_name.match(new RegExp((0, grab_sql_key_name_1.default)({ type: "foreign_key" })))) { - yield (0, varDatabaseDbHandler_1.default)({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${fk.Key_name}\` + yield (0, dbHandler_1.default)({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${fk.Key_name}\` `, }); } diff --git a/dist/package-shared/shell/utils/handle-table-foreign-key.js b/dist/package-shared/shell/utils/handle-table-foreign-key.js index a7f5be1..3b8d16d 100644 --- a/dist/package-shared/shell/utils/handle-table-foreign-key.js +++ b/dist/package-shared/shell/utils/handle-table-foreign-key.js @@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = handleTableForeignKey; -const varDatabaseDbHandler_1 = __importDefault(require("./varDatabaseDbHandler")); +const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); /** * # Update table function */ @@ -31,9 +31,9 @@ function handleTableForeignKey(_a) { // cascadeDelete ? " ON DELETE CASCADE" : "" // }${cascadeUpdate ? " ON UPDATE CASCADE" : ""}`; // let finalQueryString = `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` ${foreinKeyText}`; - const addForeignKey = yield (0, varDatabaseDbHandler_1.default)({ - queryString: finalQueryString, - }); + const addForeignKey = (yield (0, dbHandler_1.default)({ + query: finalQueryString, + })); if (!(addForeignKey === null || addForeignKey === void 0 ? void 0 : addForeignKey.serverStatus)) { errorLogs === null || errorLogs === void 0 ? void 0 : errorLogs.push(addForeignKey); } diff --git a/dist/package-shared/shell/utils/noDatabaseDbHandler.d.ts b/dist/package-shared/shell/utils/noDatabaseDbHandler.d.ts deleted file mode 100644 index 975eb54..0000000 --- a/dist/package-shared/shell/utils/noDatabaseDbHandler.d.ts +++ /dev/null @@ -1 +0,0 @@ -export default function noDatabaseDbHandler(queryString: string): Promise; diff --git a/dist/package-shared/shell/utils/noDatabaseDbHandler.js b/dist/package-shared/shell/utils/noDatabaseDbHandler.js deleted file mode 100644 index e806608..0000000 --- a/dist/package-shared/shell/utils/noDatabaseDbHandler.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = noDatabaseDbHandler; -const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); -function noDatabaseDbHandler(queryString) { - return __awaiter(this, void 0, void 0, function* () { - var _a; - let results; - try { - results = yield (0, dbHandler_1.default)({ query: queryString }); - } - catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `No DB Handler Error`, error); - } - if (results) { - return results; - } - else { - return null; - } - }); -} diff --git a/dist/package-shared/shell/utils/updateTable.js b/dist/package-shared/shell/utils/updateTable.js index e2ce443..f46dea2 100644 --- a/dist/package-shared/shell/utils/updateTable.js +++ b/dist/package-shared/shell/utils/updateTable.js @@ -13,7 +13,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = updateTable; -const varDatabaseDbHandler_1 = __importDefault(require("./varDatabaseDbHandler")); const generateColumnDescription_1 = __importDefault(require("./generateColumnDescription")); const handle_table_foreign_key_1 = __importDefault(require("./handle-table-foreign-key")); const drop_all_foreign_keys_1 = __importDefault(require("./drop-all-foreign-keys")); @@ -23,6 +22,7 @@ const handle_indexes_1 = __importDefault(require("../createDbFromSchema/handle-i const lodash_1 = __importDefault(require("lodash")); const grab_required_database_schemas_1 = require("../createDbFromSchema/grab-required-database-schemas"); const normalize_text_1 = __importDefault(require("../../utils/normalize-text")); +const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); /** * # Update table function */ @@ -75,24 +75,26 @@ function updateTable(_a) { * @description Iterate through each table index(if available) * and perform operations */ - const allExistingIndexes = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\` WHERE Index_comment LIKE '%schema_index%'`, - }); - for (let f = 0; f < allExistingIndexes.length; f++) { - const { Key_name } = allExistingIndexes[f]; - try { - const existingKeyInSchema = tableIndexes === null || tableIndexes === void 0 ? void 0 : tableIndexes.find((indexObject) => indexObject.alias === Key_name); - if (!existingKeyInSchema) - throw new Error(`This Index(${Key_name}) Has been Deleted!`); - } - catch (error) { - /** - * @description Drop Index: This happens when the MYSQL index is not - * present in the datasquirel DB schema - */ - yield (0, varDatabaseDbHandler_1.default)({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${Key_name}\``, - }); + const allExistingIndexes = (yield (0, dbHandler_1.default)({ + query: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\` WHERE Index_comment LIKE '%schema_index%'`, + })); + if (allExistingIndexes) { + for (let f = 0; f < allExistingIndexes.length; f++) { + const { Key_name } = allExistingIndexes[f]; + try { + const existingKeyInSchema = tableIndexes === null || tableIndexes === void 0 ? void 0 : tableIndexes.find((indexObject) => indexObject.alias === Key_name); + if (!existingKeyInSchema) + throw new Error(`This Index(${Key_name}) Has been Deleted!`); + } + catch (error) { + /** + * @description Drop Index: This happens when the MYSQL index is not + * present in the datasquirel DB schema + */ + yield (0, dbHandler_1.default)({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${Key_name}\``, + }); + } } } /** @@ -114,9 +116,9 @@ function updateTable(_a) { * @description Iterate through each datasquirel schema * table index(if available), and perform operations */ - const allForeignKeys = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND CONSTRAINT_TYPE='FOREIGN KEY'`, - }); + const allForeignKeys = (yield (0, dbHandler_1.default)({ + query: `SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND CONSTRAINT_TYPE='FOREIGN KEY'`, + })); if (allForeignKeys) { for (let c = 0; c < allForeignKeys.length; c++) { const { CONSTRAINT_NAME } = allForeignKeys[c]; @@ -129,8 +131,8 @@ function updateTable(_a) { * @description Drop all foreign Keys to avoid MYSQL errors when adding/updating * Foreign keys */ - const dropForeignKey = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP FOREIGN KEY \`${CONSTRAINT_NAME}\``, + yield (0, dbHandler_1.default)({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP FOREIGN KEY \`${CONSTRAINT_NAME}\``, }); } } @@ -140,16 +142,16 @@ function updateTable(_a) { * @description Find all existing unique field constraints * and remove them */ - const allUniqueConstraints = yield (0, varDatabaseDbHandler_1.default)({ - queryString: (0, normalize_text_1.default)(`SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS \ + const allUniqueConstraints = (yield (0, dbHandler_1.default)({ + query: (0, normalize_text_1.default)(`SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS \ WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND \ CONSTRAINT_TYPE='UNIQUE'`), - }); + })); if (allUniqueConstraints) { for (let c = 0; c < allUniqueConstraints.length; c++) { const { CONSTRAINT_NAME } = allUniqueConstraints[c]; - const dropUniqueConstraint = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${CONSTRAINT_NAME}\``, + yield (0, dbHandler_1.default)({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${CONSTRAINT_NAME}\``, }); } } @@ -158,9 +160,9 @@ function updateTable(_a) { * =================================================== * @description Now handle all fields/columns */ - let allExistingColumns = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SHOW COLUMNS FROM \`${dbFullName}\`.\`${tableName}\``, - }); + let allExistingColumns = (yield (0, dbHandler_1.default)({ + query: `SHOW COLUMNS FROM \`${dbFullName}\`.\`${tableName}\``, + })); /** * @type {string[]} * @description Updated column names Array @@ -184,8 +186,8 @@ function updateTable(_a) { */ if (existingEntry.updatedField && existingEntry.fieldName) { updatedColumnsArray.push(existingEntry.fieldName); - const renameColumn = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` RENAME COLUMN \`${existingEntry.originName}\` TO \`${existingEntry.fieldName}\``, + yield (0, dbHandler_1.default)({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` RENAME COLUMN \`${existingEntry.originName}\` TO \`${existingEntry.fieldName}\``, }); console.log(`Column Renamed from "${existingEntry.originName}" to "${existingEntry.fieldName}"`); /** @@ -212,9 +214,9 @@ function updateTable(_a) { userId, }); } - allExistingColumns = yield (0, varDatabaseDbHandler_1.default)({ - queryString: `SHOW COLUMNS FROM \`${dbFullName}\`.\`${tableName}\``, - }); + allExistingColumns = (yield (0, dbHandler_1.default)({ + query: `SHOW COLUMNS FROM \`${dbFullName}\`.\`${tableName}\``, + })); } catch (error) { console.log("Update table error =>", error.message); @@ -226,8 +228,8 @@ function updateTable(_a) { //////////////////////////////////////// } else { - yield (0, varDatabaseDbHandler_1.default)({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP COLUMN \`${Field}\``, + yield (0, dbHandler_1.default)({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP COLUMN \`${Field}\``, }); } } @@ -298,8 +300,8 @@ function updateTable(_a) { * Alter directives like "ADD COLUMN" or "MODIFY COLUMN" */ if (updateTableQueryArray.length > 1) { - const updateTable = yield (0, varDatabaseDbHandler_1.default)({ - queryString: updateTableQuery, + const updateTable = yield (0, dbHandler_1.default)({ + query: updateTableQuery, }); /** * # Handle Foreign Keys diff --git a/dist/package-shared/shell/utils/varDatabaseDbHandler.d.ts b/dist/package-shared/shell/utils/varDatabaseDbHandler.d.ts deleted file mode 100644 index 52ffafc..0000000 --- a/dist/package-shared/shell/utils/varDatabaseDbHandler.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -type Param = { - queryString: string; - queryValuesArray?: string[]; -}; -/** - * # DB handler for specific database - */ -export default function varDatabaseDbHandler({ queryString, queryValuesArray, }: Param): Promise; -export {}; diff --git a/dist/package-shared/shell/utils/varDatabaseDbHandler.js b/dist/package-shared/shell/utils/varDatabaseDbHandler.js deleted file mode 100644 index 8a1a714..0000000 --- a/dist/package-shared/shell/utils/varDatabaseDbHandler.js +++ /dev/null @@ -1,62 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = varDatabaseDbHandler; -const dbHandler_1 = __importDefault(require("../../functions/backend/dbHandler")); -/** - * # DB handler for specific database - */ -function varDatabaseDbHandler(_a) { - return __awaiter(this, arguments, void 0, function* ({ queryString, queryValuesArray, }) { - /** - * Declare variables - * - * @description Declare "results" variable - */ - let results; - /** - * Fetch from db - * - * @description Fetch data from db if no cache - */ - try { - if (queryString && - queryValuesArray && - Array.isArray(queryValuesArray) && - queryValuesArray[0]) { - results = yield (0, dbHandler_1.default)({ - query: queryString, - values: queryValuesArray, - }); - } - else { - results = yield (0, dbHandler_1.default)({ - query: queryString, - }); - } - //////////////////////////////////////// - //////////////////////////////////////// - //////////////////////////////////////// - } - catch ( /** @type {any} */error) { - console.log("Shell Vardb Error =>", error.message); - } - /** - * Return results - * - * @description Return results add to cache if "req" param is passed - */ - return results; - }); -} diff --git a/dist/package-shared/types/dsql.d.ts b/dist/package-shared/types/dsql.d.ts index fac9845..7a8541d 100644 --- a/dist/package-shared/types/dsql.d.ts +++ b/dist/package-shared/types/dsql.d.ts @@ -1,4 +1,4 @@ -export declare const DsqlTables: readonly ["users", "mariadb_users", "mariadb_user_databases", "mariadb_user_tables", "mariadb_user_privileges", "api_keys", "api_keys_scoped_resources", "invitations", "delegated_resources", "user_databases", "user_database_tables", "user_media", "user_private_folders", "delegated_users", "unsubscribes", "notifications", "deleted_api_keys", "servers", "process_queue", "backups"]; +export declare const DsqlTables: readonly ["users", "api_keys", "api_keys_scoped_resources", "invitations", "user_databases", "user_database_tables", "user_media", "user_private_folders", "delegated_users", "delegated_resources", "mariadb_user_privileges", "unsubscribes", "notifications", "deleted_api_keys", "servers", "process_queue", "backups", "mariadb_users", "mariadb_user_databases", "mariadb_user_tables"]; export type DSQL_DATASQUIREL_USERS = { id?: number; uuid?: string; @@ -28,75 +28,6 @@ export type DSQL_DATASQUIREL_USERS = { date_updated_code?: number; date_updated_timestamp?: string; }; -export type DSQL_DATASQUIREL_MARIADB_USERS = { - id?: number; - uuid?: string; - user_id?: number; - username?: string; - host?: string; - password?: string; - primary?: number; - all_databases?: 0 | 1; - all_grants?: 0 | 1; - date_created?: string; - date_created_code?: number; - date_created_timestamp?: string; - date_updated?: string; - date_updated_code?: number; - date_updated_timestamp?: string; -}; -export type DSQL_DATASQUIREL_MARIADB_USER_DATABASES = { - id?: number; - uuid?: string; - user_id?: number; - mariadb_user_id?: number; - db_id?: number; - db_schema_id?: number; - db_slug?: string; - all_tables?: 0 | 1; - all_privileges?: 0 | 1; - date_created?: string; - date_created_code?: number; - date_created_timestamp?: string; - date_updated?: string; - date_updated_code?: number; - date_updated_timestamp?: string; -}; -export type DSQL_DATASQUIREL_MARIADB_USER_TABLES = { - id?: number; - uuid?: string; - user_id?: number; - mariadb_user_id?: number; - db_id?: number; - db_schema_id?: number; - db_slug?: string; - table_schema_id?: number; - table_slug?: string; - all_fields?: 0 | 1; - all_privileges?: 0 | 1; - date_created?: string; - date_created_code?: number; - date_created_timestamp?: string; - date_updated?: string; - date_updated_code?: number; - date_updated_timestamp?: string; -}; -export type DSQL_DATASQUIREL_MARIADB_USER_PRIVILEGES = { - id?: number; - uuid?: string; - user_id?: number; - mariadb_user_id?: number; - db_id?: number; - db_schema_id?: number; - db_slug?: string; - privilege?: "ALTER" | "ALTER ROUTINE" | "CREATE" | "CREATE ROUTINE" | "CREATE TEMPORARY TABLES" | "CREATE VIEW" | "DELETE" | "DROP" | "EVENT" | "EXECUTE" | "FILE" | "INDEX" | "INSERT" | "LOCK TABLES" | "PROCESS" | "REFERENCES" | "RELOAD" | "SELECT" | "SHOW VIEW" | "SUPER" | "TRIGGER" | "UPDATE" | "USAGE"; - date_created?: string; - date_created_code?: number; - date_created_timestamp?: string; - date_updated?: string; - date_updated_code?: number; - date_updated_timestamp?: string; -}; export type DSQL_DATASQUIREL_API_KEYS = { id?: number; uuid?: string; @@ -150,26 +81,6 @@ export type DSQL_DATASQUIREL_INVITATIONS = { date_updated_code?: number; date_updated_timestamp?: string; }; -export type DSQL_DATASQUIREL_DELEGATED_RESOURCES = { - id?: number; - uuid?: string; - delegated_users_id?: number; - user_id?: number; - delegated_user_id?: number; - db_id?: number; - db_schema_id?: number; - db_slug?: string; - table_schema_id?: number; - table_slug?: string; - permission?: "read" | "write" | "edit" | "delete"; - all_tables?: 0 | 1; - date_created?: string; - date_created_code?: number; - date_created_timestamp?: string; - date_updated?: string; - date_updated_code?: number; - date_updated_timestamp?: string; -}; export type DSQL_DATASQUIREL_USER_DATABASES = { id?: number; uuid?: string; @@ -224,6 +135,7 @@ export type DSQL_DATASQUIREL_USER_MEDIA = { uuid?: string; user_id?: number; media_name?: string; + alias?: string; folder?: string; media_url?: string; media_thumbnail_url?: string; @@ -269,6 +181,42 @@ export type DSQL_DATASQUIREL_DELEGATED_USERS = { date_updated_code?: number; date_updated_timestamp?: string; }; +export type DSQL_DATASQUIREL_DELEGATED_RESOURCES = { + id?: number; + uuid?: string; + delegated_users_id?: number; + user_id?: number; + delegated_user_id?: number; + db_id?: number; + db_schema_id?: number; + db_slug?: string; + table_schema_id?: number; + table_slug?: string; + permission?: "read" | "write" | "edit" | "delete"; + all_tables?: 0 | 1; + date_created?: string; + date_created_code?: number; + date_created_timestamp?: string; + date_updated?: string; + date_updated_code?: number; + date_updated_timestamp?: string; +}; +export type DSQL_DATASQUIREL_MARIADB_USER_PRIVILEGES = { + id?: number; + uuid?: string; + user_id?: number; + mariadb_user_id?: number; + db_id?: number; + db_schema_id?: number; + db_slug?: string; + privilege?: "ALTER" | "ALTER ROUTINE" | "CREATE" | "CREATE ROUTINE" | "CREATE TEMPORARY TABLES" | "CREATE VIEW" | "DELETE" | "DROP" | "EVENT" | "EXECUTE" | "FILE" | "INDEX" | "INSERT" | "LOCK TABLES" | "PROCESS" | "REFERENCES" | "RELOAD" | "SELECT" | "SHOW VIEW" | "SUPER" | "TRIGGER" | "UPDATE" | "USAGE"; + date_created?: string; + date_created_code?: number; + date_created_timestamp?: string; + date_updated?: string; + date_updated_code?: number; + date_updated_timestamp?: string; +}; export type DSQL_DATASQUIREL_UNSUBSCRIBES = { id?: number; uuid?: string; @@ -351,3 +299,56 @@ export type DSQL_DATASQUIREL_BACKUPS = { date_updated_code?: number; date_updated_timestamp?: string; }; +export type DSQL_DATASQUIREL_MARIADB_USERS = { + id?: number; + uuid?: string; + user_id?: number; + username?: string; + host?: string; + password?: string; + primary?: number; + all_databases?: 0 | 1; + all_grants?: 0 | 1; + date_created?: string; + date_created_code?: number; + date_created_timestamp?: string; + date_updated?: string; + date_updated_code?: number; + date_updated_timestamp?: string; +}; +export type DSQL_DATASQUIREL_MARIADB_USER_DATABASES = { + id?: number; + uuid?: string; + user_id?: number; + mariadb_user_id?: number; + db_id?: number; + db_schema_id?: number; + db_slug?: string; + all_tables?: 0 | 1; + all_privileges?: 0 | 1; + date_created?: string; + date_created_code?: number; + date_created_timestamp?: string; + date_updated?: string; + date_updated_code?: number; + date_updated_timestamp?: string; +}; +export type DSQL_DATASQUIREL_MARIADB_USER_TABLES = { + id?: number; + uuid?: string; + user_id?: number; + mariadb_user_id?: number; + db_id?: number; + db_schema_id?: number; + db_slug?: string; + table_schema_id?: number; + table_slug?: string; + all_fields?: 0 | 1; + all_privileges?: 0 | 1; + date_created?: string; + date_created_code?: number; + date_created_timestamp?: string; + date_updated?: string; + date_updated_code?: number; + date_updated_timestamp?: string; +}; diff --git a/dist/package-shared/types/dsql.js b/dist/package-shared/types/dsql.js index 318a234..0a2a628 100644 --- a/dist/package-shared/types/dsql.js +++ b/dist/package-shared/types/dsql.js @@ -3,23 +3,23 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.DsqlTables = void 0; exports.DsqlTables = [ "users", - "mariadb_users", - "mariadb_user_databases", - "mariadb_user_tables", - "mariadb_user_privileges", "api_keys", "api_keys_scoped_resources", "invitations", - "delegated_resources", "user_databases", "user_database_tables", "user_media", "user_private_folders", "delegated_users", + "delegated_resources", + "mariadb_user_privileges", "unsubscribes", "notifications", "deleted_api_keys", "servers", "process_queue", "backups", + "mariadb_users", + "mariadb_user_databases", + "mariadb_user_tables", ]; diff --git a/dist/package-shared/types/index.d.ts b/dist/package-shared/types/index.d.ts index 73007e7..8bde38e 100644 --- a/dist/package-shared/types/index.d.ts +++ b/dist/package-shared/types/index.d.ts @@ -1,5 +1,5 @@ import type { RequestOptions } from "https"; -import type { DSQL_DATASQUIREL_API_KEYS, DSQL_DATASQUIREL_API_KEYS_SCOPED_RESOURCES, DSQL_DATASQUIREL_BACKUPS, DSQL_DATASQUIREL_DELEGATED_RESOURCES, DSQL_DATASQUIREL_DELEGATED_USERS, DSQL_DATASQUIREL_INVITATIONS, DSQL_DATASQUIREL_MARIADB_USERS, DSQL_DATASQUIREL_PROCESS_QUEUE, DSQL_DATASQUIREL_USER_DATABASE_TABLES, DSQL_DATASQUIREL_USER_DATABASES, DSQL_DATASQUIREL_USER_MEDIA, DSQL_DATASQUIREL_USER_PRIVATE_FOLDERS, DSQL_DATASQUIREL_USERS } from "./dsql"; +import type { DSQL_DATASQUIREL_API_KEYS, DSQL_DATASQUIREL_API_KEYS_SCOPED_RESOURCES, DSQL_DATASQUIREL_BACKUPS, DSQL_DATASQUIREL_DELEGATED_RESOURCES, DSQL_DATASQUIREL_DELEGATED_USERS, DSQL_DATASQUIREL_INVITATIONS, DSQL_DATASQUIREL_MARIADB_USERS, DSQL_DATASQUIREL_PROCESS_QUEUE, DSQL_DATASQUIREL_USER_DATABASE_TABLES, DSQL_DATASQUIREL_USER_DATABASES, DSQL_DATASQUIREL_USER_MEDIA, DSQL_DATASQUIREL_USER_PRIVATE_FOLDERS, DSQL_DATASQUIREL_USERS, DsqlTables } from "./dsql"; import type { Editor } from "tinymce"; import type sharp from "sharp"; import type DataTypes from "../data/data-types"; @@ -941,6 +941,7 @@ export type APICreateUserFunctionParams = { payload: any; database: string; userId?: string | number; + verify?: boolean; }; export type APICreateUserFunction = (params: APICreateUserFunctionParams) => Promise; /** @@ -1370,6 +1371,8 @@ export type PagePropsType = { suDatabase?: SQLShowDatabaseObject | null; isSuperUserPage?: boolean; appVersion?: (typeof AppVersions)[number]; + isMailAvailable?: boolean; + websocketURL?: string; }; export type APIResponseObject = { success: boolean; @@ -1484,16 +1487,17 @@ export type AppRefObject = { currentMariadbUser?: DSQL_DATASQUIREL_MARIADB_USERS; }; export type DsqlAppData = { - DSQL_REMOTE_SQL_HOST?: string; - DSQL_SU_USER_ID?: string; - DSQL_HOST_ENV?: string; - DSQL_HOST?: string; - DSQL_STATIC_HOST?: string; - DSQL_GOOGLE_CLIENT_ID?: string; - DSQL_TINY_MCE_API_KEY?: string; - DSQL_WEBSOCKET_URL?: string; - DSQL_FACEBOOK_APP_ID?: string; - DSQL_GITHUB_ID?: string; + DSQL_REMOTE_SQL_HOST?: string | null; + DSQL_SU_USER_ID?: string | null; + DSQL_HOST_ENV?: string | null; + DSQL_HOST?: string | null; + DSQL_STATIC_HOST?: string | null; + DSQL_GOOGLE_CLIENT_ID?: string | null; + DSQL_TINY_MCE_API_KEY?: string | null; + DSQL_WEBSOCKET_HOST?: string | null; + DSQL_FACEBOOK_APP_ID?: string | null; + DSQL_GITHUB_ID?: string | null; + DSQL_HOST_MACHINE_IP?: string | null; }; export declare const MediaTypes: readonly ["image", "file", "video"]; export type MediaUploadDataType = ImageObjectType & FileObjectType & { @@ -1502,7 +1506,7 @@ export type MediaUploadDataType = ImageObjectType & FileObjectType & { overwrite?: boolean; }; export declare const ImageMimeTypes: (keyof sharp.FormatEnum)[]; -export declare const FileMimeTypes: readonly ["pdf", "csv", "json", "sql", "xlsx", "txt", "zip", "xz", "tar.xz", "yaml", "yml"]; +export declare const FileMimeTypes: readonly ["pdf", "csv", "json", "sql", "xlsx", "txt", "zip", "tar.xz", "xz", "yaml", "yml", "sh", "jsx", "js", "tsx", "ts"]; export declare const VideoMimeTypes: readonly ["mp4", "wav"]; export declare const CurrentlyEditedFieldActions: readonly ["edit-field", "edit-index", "delete-field", "delete-index", "new-field", "new-index", "move-up", "move-down", "complete"]; export type CurrentlyEditedTableSchemaType = { @@ -1728,7 +1732,7 @@ export type SiteConfigMaxscale = { read_only_port: number; admin_port: number; }; -export declare const APIParadigms: readonly ["crud", "media", "sql"]; +export declare const APIParadigms: readonly ["crud", "media", "sql", "schema"]; export declare const AppVersions: readonly [{ readonly title: "Community"; readonly value: "community"; @@ -1742,7 +1746,7 @@ export declare const AppVersions: readonly [{ readonly title: "Full"; readonly value: "full"; }]; -export declare const EnvKeys: readonly ["DSQL_HOST", "NEXT_PUBLIC_DSQL_HOST", "DSQL_STATIC_HOST", "DSQL_SOCKET_DOMAIN", "DSQL_HOST_ENV", "DSQL_PORT", "DSQL_PRODUCTION_PORT", "DSQL_STATIC_SERVER_PORT", "DSQL_SITE_URL", "DSQL_REMOTE_SQL_HOST", "NEXT_PUBLIC_DSQL_REMOTE_SQL_HOST", "DSQL_DB_TARGET_IP_ADDRESS", "NEXT_PUBLIC_VERSION", "DSQL_USER_DB_PREFIX", "DSQL_USER_DELEGATED_DB_COOKIE_PREFIX", "DSQL_NETWORK_IP_PREFIX", "DSQL_NETWORK_GATEWAY", "DSQL_NETWORK_SUBNET", "DSQL_MARIADB_MASTER_HOST", "DSQL_DB_HOST", "DSQL_WEB_APP_HOST", "DSQL_DB_USERNAME", "DSQL_DB_PASSWORD", "DSQL_MARIADB_ROOT_PASSWORD", "DSQL_REPLICATION_USER_PASSWORD", "DSQL_DB_NAME", "DSQL_MARIADB_REPLICATION_PASSWORD", "DSQL_MAXSCALE_PASSWORD", "DSQL_DB_READ_ONLY_USERNAME", "DSQL_DB_READ_ONLY_PASSWORD", "DSQL_DB_FULL_ACCESS_USERNAME", "DSQL_DB_FULL_ACCESS_PASSWORD", "DSQL_DB_EXPOSED_PORT", "DSQL_ENCRYPTION_PASSWORD", "DSQL_ENCRYPTION_SALT", "DSQL_SU_USER_ID", "DSQL_SU_USER_UUID", "DSQL_SU_EMAIL", "DSQL_GOOGLE_CLIENT_ID", "NEXT_PUBLIC_DSQL_GOOGLE_CLIENT_ID", "DSQL_FACEBOOK_APP_ID", "DSQL_FACEBOOK_SECRET", "DSQL_MAIL_HOST", "DSQL_MAIL_EMAIL", "DSQL_MAIL_PASSWORD", "DSQL_TINY_MCE_API_KEY", "DSQL_GITHUB_ID", "DSQL_GITHUB_SECRET", "DSQL_GITHUB_WEBHOOK_SECRET", "DSQL_GITHUB_WEBHOOK_URL", "DSQL_DEPLOY_SERVER_PORT", "DSQL_DOCKERFILE", "DSQL_VOLUME_APP", "DSQL_VOLUME_STATIC", "DSQL_VOLUME_STATIC_CONFIGURATION_FILE", "DSQL_VOLUME_DB", "DSQL_VOLUME_DB_CONFIG", "DSQL_VOLUME_DB_SETUP", "DSQL_VOLUME_DB_SSL", "DSQL_USER_LOGIN_KEYS_PATH", "DSQL_API_KEYS_PATH", "DSQL_APP_DIR", "DSQL_DATA_DIR", "DSQL_CONTACT_EMAIL", "DSQL_SSL_DIR", "DSQL_DEPLOYMENT_NAME", "DSQL_COOKIES_PREFIX", "DSQL_COOKIES_KEY_NAME", "DSQL_WEB_APP_FAIL_COUNTS", "NODE_ARCH", "DSQL_WEBSOCKET_PORT", "DSQL_WEBSOCKET_URL", "NEXT_PUBLIC_DSQL_WEBSOCKET_URL", "S3_ACCESS_KEY_ID", "S3_SECRET_ACCESS", "DSQL_ADDITIONAL_MARIADB_SERVERS", "DSQL_ARCJET_KEY"]; +export declare const EnvKeys: readonly ["DSQL_HOST", "NEXT_PUBLIC_DSQL_HOST", "DSQL_STATIC_HOST", "DSQL_SOCKET_DOMAIN", "DSQL_HOST_ENV", "DSQL_PORT", "DSQL_PRODUCTION_PORT", "DSQL_STATIC_SERVER_PORT", "DSQL_SITE_URL", "DSQL_REMOTE_SQL_HOST", "NEXT_PUBLIC_DSQL_REMOTE_SQL_HOST", "DSQL_DB_TARGET_IP_ADDRESS", "NEXT_PUBLIC_VERSION", "DSQL_USER_DB_PREFIX", "DSQL_USER_DELEGATED_DB_COOKIE_PREFIX", "DSQL_NETWORK_IP_PREFIX", "DSQL_NETWORK_GATEWAY", "DSQL_NETWORK_SUBNET", "DSQL_MARIADB_MASTER_HOST", "DSQL_DB_HOST", "DSQL_WEB_APP_HOST", "DSQL_DB_USERNAME", "DSQL_DB_PASSWORD", "DSQL_MARIADB_ROOT_PASSWORD", "DSQL_REPLICATION_USER_PASSWORD", "DSQL_DB_NAME", "DSQL_MARIADB_REPLICATION_PASSWORD", "DSQL_MAXSCALE_PASSWORD", "DSQL_DB_READ_ONLY_USERNAME", "DSQL_DB_READ_ONLY_PASSWORD", "DSQL_DB_FULL_ACCESS_USERNAME", "DSQL_DB_FULL_ACCESS_PASSWORD", "DSQL_DB_EXPOSED_PORT", "DSQL_ENCRYPTION_PASSWORD", "DSQL_ENCRYPTION_SALT", "DSQL_SU_USER_ID", "DSQL_SU_USER_UUID", "DSQL_SU_EMAIL", "DSQL_GOOGLE_CLIENT_ID", "NEXT_PUBLIC_DSQL_GOOGLE_CLIENT_ID", "DSQL_FACEBOOK_APP_ID", "DSQL_FACEBOOK_SECRET", "DSQL_MAIL_HOST", "DSQL_MAIL_EMAIL", "DSQL_MAIL_PASSWORD", "DSQL_TINY_MCE_API_KEY", "DSQL_GITHUB_ID", "DSQL_GITHUB_SECRET", "DSQL_GITHUB_WEBHOOK_SECRET", "DSQL_GITHUB_WEBHOOK_URL", "DSQL_DEPLOY_SERVER_PORT", "DSQL_DOCKERFILE", "DSQL_VOLUME_APP", "DSQL_VOLUME_STATIC", "DSQL_VOLUME_STATIC_CONFIGURATION_FILE", "DSQL_VOLUME_DB", "DSQL_VOLUME_DB_CONFIG", "DSQL_VOLUME_DB_SETUP", "DSQL_VOLUME_DB_SSL", "DSQL_USER_LOGIN_KEYS_PATH", "DSQL_API_KEYS_PATH", "DSQL_APP_DIR", "DSQL_DATA_DIR", "DSQL_CONTACT_EMAIL", "DSQL_SSL_DIR", "DSQL_DEPLOYMENT_NAME", "DSQL_COOKIES_PREFIX", "DSQL_COOKIES_KEY_NAME", "DSQL_WEB_APP_FAIL_COUNTS", "NODE_ARCH", "DSQL_WEBSOCKET_PORT", "DSQL_WEBSOCKET_HOST", "NEXT_PUBLIC_DSQL_WEBSOCKET_HOST", "S3_ACCESS_KEY_ID", "S3_SECRET_ACCESS", "DSQL_ADDITIONAL_MARIADB_SERVERS", "DSQL_ARCJET_KEY"]; export type SQLShowDatabaseObject = { Database?: string; }; @@ -1777,4 +1781,21 @@ export type AddMediaAPIBody = { */ useDefault?: boolean; }; +export declare const TargetMediaParadigms: readonly ["info", "preview"]; +export type TargetMediaDataType = { + media: DSQL_DATASQUIREL_USER_MEDIA; + paradigm: (typeof TargetMediaParadigms)[number]; +}; +export type GrabUserResourceParams = { + query?: DsqlCrudQueryObject; + userId?: string | number; + tableName: (typeof DsqlTables)[number]; + count?: boolean; + countOnly?: boolean; + noLimit?: boolean; + isSuperUser?: boolean; + targetID?: string | number; +}; export {}; diff --git a/dist/package-shared/types/index.js b/dist/package-shared/types/index.js index ee729d6..ead39b1 100644 --- a/dist/package-shared/types/index.js +++ b/dist/package-shared/types/index.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.EnvKeys = exports.AppVersions = exports.APIParadigms = exports.UserSQLPermissions = exports.SQLPermissions = exports.InvitedUserSelectFields = exports.DelegatedUserSelectFields = exports.UserSelectFields = exports.IndexTypes = exports.DefaultSQLValuesLiteral = exports.CurrentlyEditedFieldActions = exports.VideoMimeTypes = exports.FileMimeTypes = exports.ImageMimeTypes = exports.MediaTypes = exports.DockerComposeServices = exports.DatasquirelWindowEvents = exports.WebSocketEvents = exports.QueueJobTypes = exports.SignUpParadigms = exports.UserTypes = exports.QueryFields = exports.DsqlCrudActions = exports.DataCrudRequestMethodsLowerCase = exports.DataCrudRequestMethods = exports.ServerQueryEqualities = exports.ServerQueryOperators = exports.TextFieldTypesArray = exports.UsersOmitedFields = void 0; +exports.TargetMediaParadigms = exports.EnvKeys = exports.AppVersions = exports.APIParadigms = exports.UserSQLPermissions = exports.SQLPermissions = exports.InvitedUserSelectFields = exports.DelegatedUserSelectFields = exports.UserSelectFields = exports.IndexTypes = exports.DefaultSQLValuesLiteral = exports.CurrentlyEditedFieldActions = exports.VideoMimeTypes = exports.FileMimeTypes = exports.ImageMimeTypes = exports.MediaTypes = exports.DockerComposeServices = exports.DatasquirelWindowEvents = exports.WebSocketEvents = exports.QueueJobTypes = exports.SignUpParadigms = exports.UserTypes = exports.QueryFields = exports.DsqlCrudActions = exports.DataCrudRequestMethodsLowerCase = exports.DataCrudRequestMethods = exports.ServerQueryEqualities = exports.ServerQueryOperators = exports.TextFieldTypesArray = exports.UsersOmitedFields = void 0; exports.UsersOmitedFields = [ "password", "social_id", @@ -143,10 +143,15 @@ exports.FileMimeTypes = [ "xlsx", "txt", "zip", - "xz", "tar.xz", + "xz", "yaml", "yml", + "sh", + "jsx", + "js", + "tsx", + "ts", ]; exports.VideoMimeTypes = ["mp4", "wav"]; exports.CurrentlyEditedFieldActions = [ @@ -282,7 +287,7 @@ exports.UserSQLPermissions = [ "UPDATE", "USAGE", ]; -exports.APIParadigms = ["crud", "media", "sql"]; +exports.APIParadigms = ["crud", "media", "sql", "schema"]; exports.AppVersions = [ { title: "Community", @@ -373,10 +378,11 @@ exports.EnvKeys = [ "DSQL_WEB_APP_FAIL_COUNTS", "NODE_ARCH", "DSQL_WEBSOCKET_PORT", - "DSQL_WEBSOCKET_URL", - "NEXT_PUBLIC_DSQL_WEBSOCKET_URL", + "DSQL_WEBSOCKET_HOST", + "NEXT_PUBLIC_DSQL_WEBSOCKET_HOST", "S3_ACCESS_KEY_ID", "S3_SECRET_ACCESS", "DSQL_ADDITIONAL_MARIADB_SERVERS", "DSQL_ARCJET_KEY", ]; +exports.TargetMediaParadigms = ["info", "preview"]; diff --git a/dist/package-shared/utils/backend/global-db/DB_HANDLER.d.ts b/dist/package-shared/utils/backend/global-db/DB_HANDLER.d.ts deleted file mode 100644 index 7978496..0000000 --- a/dist/package-shared/utils/backend/global-db/DB_HANDLER.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/** - * # DSQL user read-only DB handler - * @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database - */ -export default function DB_HANDLER(query: string, values?: any[]): Promise; diff --git a/dist/package-shared/utils/backend/global-db/DB_HANDLER.js b/dist/package-shared/utils/backend/global-db/DB_HANDLER.js deleted file mode 100644 index 55b2f30..0000000 --- a/dist/package-shared/utils/backend/global-db/DB_HANDLER.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = DB_HANDLER; -const grab_dsql_connection_1 = __importDefault(require("../../grab-dsql-connection")); -/** - * # DSQL user read-only DB handler - * @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database - */ -function DB_HANDLER(query, values) { - return __awaiter(this, void 0, void 0, function* () { - var _a; - const CONNECTION = yield (0, grab_dsql_connection_1.default)(); - try { - if (!CONNECTION) - throw new Error("No Connection provided to DB_HANDLER function!"); - const results = yield CONNECTION.query(query, values); - if (Array.isArray(results)) { - return Array.from(results); - } - else { - return results; - } - } - catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `DB_HANDLER Error`, error); - return { - success: false, - error: error.message, - }; - } - finally { - yield (CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.end()); - } - }); -} diff --git a/dist/package-shared/utils/backend/global-db/DSQL_USER_DB_HANDLER.d.ts b/dist/package-shared/utils/backend/global-db/DSQL_USER_DB_HANDLER.d.ts deleted file mode 100644 index df60927..0000000 --- a/dist/package-shared/utils/backend/global-db/DSQL_USER_DB_HANDLER.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -type Param = { - paradigm: "Full Access" | "FA" | "Read Only"; - queryString: string; - queryValues?: string[]; -}; -/** - * # DSQL user read-only DB handler - */ -export default function DSQL_USER_DB_HANDLER({ paradigm, queryString, queryValues, }: Param): Promise; -export {}; diff --git a/dist/package-shared/utils/backend/global-db/DSQL_USER_DB_HANDLER.js b/dist/package-shared/utils/backend/global-db/DSQL_USER_DB_HANDLER.js deleted file mode 100644 index 79af75d..0000000 --- a/dist/package-shared/utils/backend/global-db/DSQL_USER_DB_HANDLER.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = DSQL_USER_DB_HANDLER; -const conn_db_handler_1 = __importDefault(require("../../db/conn-db-handler")); -const grab_dsql_connection_1 = __importDefault(require("../../grab-dsql-connection")); -/** - * # DSQL user read-only DB handler - */ -function DSQL_USER_DB_HANDLER(_a) { - return __awaiter(this, arguments, void 0, function* ({ paradigm, queryString, queryValues, }) { - var _b; - const CONNECTION = paradigm == "Read Only" - ? yield (0, grab_dsql_connection_1.default)({ ro: true }) - : yield (0, grab_dsql_connection_1.default)({ fa: true }); - try { - return yield (0, conn_db_handler_1.default)(CONNECTION, queryString, queryValues); - } - catch (error) { - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `DSQL_USER_DB_HANDLER Error`, error); - return null; - } - finally { - yield (CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.end()); - } - }); -} diff --git a/dist/package-shared/utils/backend/global-db/LOCAL_DB_HANDLER.d.ts b/dist/package-shared/utils/backend/global-db/LOCAL_DB_HANDLER.d.ts deleted file mode 100644 index 51fcb80..0000000 --- a/dist/package-shared/utils/backend/global-db/LOCAL_DB_HANDLER.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * # DSQL user read-only DB handler - */ -export default function LOCAL_DB_HANDLER(query: string, values?: any[]): Promise; diff --git a/dist/package-shared/utils/backend/global-db/LOCAL_DB_HANDLER.js b/dist/package-shared/utils/backend/global-db/LOCAL_DB_HANDLER.js deleted file mode 100644 index 2f54230..0000000 --- a/dist/package-shared/utils/backend/global-db/LOCAL_DB_HANDLER.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = LOCAL_DB_HANDLER; -const grab_dsql_connection_1 = __importDefault(require("../../grab-dsql-connection")); -/** - * # DSQL user read-only DB handler - */ -function LOCAL_DB_HANDLER(query, values) { - return __awaiter(this, void 0, void 0, function* () { - var _a; - const CONNECTION = yield (0, grab_dsql_connection_1.default)(); - try { - const results = yield CONNECTION.query(query, values); - if (Array.isArray(results)) { - return Array.from(results); - } - else { - return results; - } - } - catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `LOCAL_DB_HANDLER Error`, error); - return { - success: false, - error: error.message, - }; - } - finally { - yield (CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.end()); - } - }); -} diff --git a/dist/package-shared/utils/backend/global-db/NO_DB_HANDLER.d.ts b/dist/package-shared/utils/backend/global-db/NO_DB_HANDLER.d.ts deleted file mode 100644 index 422b3fd..0000000 --- a/dist/package-shared/utils/backend/global-db/NO_DB_HANDLER.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * # DSQL user read-only DB handler - */ -export default function NO_DB_HANDLER(query: string, values?: any[]): Promise; diff --git a/dist/package-shared/utils/backend/global-db/NO_DB_HANDLER.js b/dist/package-shared/utils/backend/global-db/NO_DB_HANDLER.js deleted file mode 100644 index 645b05d..0000000 --- a/dist/package-shared/utils/backend/global-db/NO_DB_HANDLER.js +++ /dev/null @@ -1,54 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = NO_DB_HANDLER; -const grab_dsql_connection_1 = __importDefault(require("../../grab-dsql-connection")); -/** - * # DSQL user read-only DB handler - */ -function NO_DB_HANDLER(query, values) { - return __awaiter(this, void 0, void 0, function* () { - var _a; - const CONNECTION = yield (0, grab_dsql_connection_1.default)(); - try { - return new Promise((resolve, reject) => { - CONNECTION.query(query, values) - .then((results) => __awaiter(this, void 0, void 0, function* () { - if (Array.isArray(results)) { - resolve(Array.from(results)); - } - else { - resolve(results); - } - })) - .catch((err) => __awaiter(this, void 0, void 0, function* () { - resolve({ - error: err.message, - sql: err.sql, - }); - })) - .finally(() => __awaiter(this, void 0, void 0, function* () { - yield (CONNECTION === null || CONNECTION === void 0 ? void 0 : CONNECTION.end()); - })); - }); - } - catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `NO_DB_HANDLER Error`, error); - return { - success: false, - error: error.message, - }; - } - }); -} diff --git a/dist/package-shared/utils/backend/grabDbSSL.js b/dist/package-shared/utils/backend/grabDbSSL.js index 7c5c115..6df7eb7 100644 --- a/dist/package-shared/utils/backend/grabDbSSL.js +++ b/dist/package-shared/utils/backend/grabDbSSL.js @@ -10,17 +10,17 @@ const grab_dir_names_1 = __importDefault(require("./names/grab-dir-names")); * # Grab SSL */ function grabDbSSL() { - const { maxscaleSSLDir } = (0, grab_dir_names_1.default)(); - if (!(maxscaleSSLDir === null || maxscaleSSLDir === void 0 ? void 0 : maxscaleSSLDir.match(/./))) { + const { maxscaleSSLCaCertFile } = (0, grab_dir_names_1.default)(); + const caFilePath = process.env.DSQL_SSL_CA_CERT || maxscaleSSLCaCertFile; + if (!(caFilePath === null || caFilePath === void 0 ? void 0 : caFilePath.match(/./))) { return undefined; } - const caFilePath = `${maxscaleSSLDir}/ca-cert.pem`; if (!fs_1.default.existsSync(caFilePath)) { console.log(`${caFilePath} does not exist`); return undefined; } return { - ca: fs_1.default.readFileSync(`${maxscaleSSLDir}/ca-cert.pem`), + ca: fs_1.default.readFileSync(caFilePath), rejectUnauthorized: false, }; } diff --git a/dist/package-shared/utils/backend/import-mariadb-database.js b/dist/package-shared/utils/backend/import-mariadb-database.js index 27a2bbc..faf110c 100644 --- a/dist/package-shared/utils/backend/import-mariadb-database.js +++ b/dist/package-shared/utils/backend/import-mariadb-database.js @@ -26,7 +26,7 @@ function importMariadbDatabase(_a) { const finalMariadbUser = mariadbUser || process.env.DSQL_DB_USERNAME; const finalMariadbHost = mariadbHost || process.env.DSQL_DB_HOST; const finalMariadbPass = mariadbPass || process.env.DSQL_DB_PASSWORD; - yield (0, conn_db_handler_1.default)(global.DSQL_DB_CONN, `CREATE DATABASE IF NOT EXISTS ${dbFullName}`); + yield (0, conn_db_handler_1.default)(null, `CREATE DATABASE IF NOT EXISTS ${dbFullName}`); const cmd = `${mysqlPath} -u ${finalMariadbUser} -h ${finalMariadbHost} -p"${finalMariadbPass}" ${dbFullName} < ${targetFilePath}`; let execSyncOptions = { encoding: "utf-8", diff --git a/dist/package-shared/utils/backend/names/grab-dir-names.d.ts b/dist/package-shared/utils/backend/names/grab-dir-names.d.ts index 9233f9b..6003c24 100644 --- a/dist/package-shared/utils/backend/names/grab-dir-names.d.ts +++ b/dist/package-shared/utils/backend/names/grab-dir-names.d.ts @@ -67,6 +67,7 @@ export default function grabDirNames(param?: Param): { schemasBackupDirName: string; userMainShemaJSONFilePath: string | undefined; maxscaleSSLDir: string; + maxscaleSSLCaCertFile: string; mainDBSSLDir: string; replica1DBSSLDir: string; replica2DBSSLDir: string; @@ -89,5 +90,13 @@ export default function grabDirNames(param?: Param): { distroEnterpriseExportTarName: "dsql-enterprise.tar.xz"; communityDistroTempDir: string; communityDistroDir: string; + installScriptFile: string; + updateScriptFile: string; + installTypescriptFile: string; + updateTypescriptFile: string; + dsqlDbDockerComposeFile: string; + dsqlDbDockerComposeFileAlt: string; + dsqlDbDockerComposeFileName: string; + dsqlDbDockerComposeFileNameAlt: string; }; export {}; diff --git a/dist/package-shared/utils/backend/names/grab-dir-names.js b/dist/package-shared/utils/backend/names/grab-dir-names.js index b93f105..ad29d74 100644 --- a/dist/package-shared/utils/backend/names/grab-dir-names.js +++ b/dist/package-shared/utils/backend/names/grab-dir-names.js @@ -26,10 +26,15 @@ function grabDirNames(param) { const publicSSLDir = path_1.default.join(publicDir, "documents", "ssl"); const appSSLDir = path_1.default.join(appDir, "ssl"); const mainSSLDir = path_1.default.join(DATA_DIR, "ssl"); + const installScriptFile = path_1.default.join(appDir, "scripts", "shell", "installation", "install.sh"); + const updateScriptFile = path_1.default.join(appDir, "scripts", "shell", "installation", "update.sh"); + const installTypescriptFile = path_1.default.join(appDir, "scripts", "shell", "installation", "install.ts"); + const updateTypescriptFile = path_1.default.join(appDir, "scripts", "shell", "installation", "update.ts"); const maxscaleSSLDir = path_1.default.join(mainSSLDir, "maxscale"); const mainDBSSLDir = path_1.default.join(mainSSLDir, "main"); const replica1DBSSLDir = path_1.default.join(mainSSLDir, "replica-1"); const replica2DBSSLDir = path_1.default.join(mainSSLDir, "replica-2"); + const maxscaleSSLCaCertFile = path_1.default.join(maxscaleSSLDir, "ca-cert.pem"); const privateDataDir = path_1.default.join(DATA_DIR, "private"); /** * # DB Dir names @@ -106,12 +111,18 @@ function grabDirNames(param) { const dbNginxLoadBalancerConfigFile = path_1.default.join(appDir, "docker/services/mariadb/load-balancer/config/template/nginx.conf"); let dockerComposeFile = path_1.default.join(appDir, "docker-compose.yml"); let dockerComposeFileAlt = path_1.default.join(appDir, "docker-compose.yaml"); + const dbDockerComposeFileName = "db.docker-compose.yml"; + const dbDockerComposeFileNameAlt = "db.docker-compose.yaml"; const dsqlDockerComposeFileName = "dsql.docker-compose.yml"; const dsqlDockerComposeFileNameAlt = "dsql.docker-compose.yaml"; + const dsqlDbDockerComposeFileName = "dsql-db.docker-compose.yml"; + const dsqlDbDockerComposeFileNameAlt = "dsql-db.docker-compose.yaml"; const dsqlDockerComposeFile = path_1.default.join(appDir, dsqlDockerComposeFileName); const dsqlDockerComposeFileAlt = path_1.default.join(appDir, dsqlDockerComposeFileNameAlt); - const dbDockerComposeFile = path_1.default.join(appDir, "db.docker-compose.yml"); - const dbDockerComposeFileAlt = path_1.default.join(appDir, "db.docker-compose.yaml"); + const dbDockerComposeFile = path_1.default.join(appDir, dbDockerComposeFileName); + const dbDockerComposeFileAlt = path_1.default.join(appDir, dbDockerComposeFileNameAlt); + const dsqlDbDockerComposeFile = path_1.default.join(appDir, dsqlDbDockerComposeFileName); + const dsqlDbDockerComposeFileAlt = path_1.default.join(appDir, dsqlDbDockerComposeFileNameAlt); const extraDockerComposeFile = path_1.default.join(appDir, "extra.docker-compose.yml"); const extraDockerComposeFileAlt = path_1.default.join(appDir, "extra.docker-compose.yaml"); const siteSetupFile = path_1.default.join(appDir, "site-setup.json"); @@ -204,6 +215,7 @@ function grabDirNames(param) { schemasBackupDirName, userMainShemaJSONFilePath, maxscaleSSLDir, + maxscaleSSLCaCertFile, mainDBSSLDir, replica1DBSSLDir, replica2DBSSLDir, @@ -226,5 +238,13 @@ function grabDirNames(param) { distroEnterpriseExportTarName, communityDistroTempDir, communityDistroDir, + installScriptFile, + updateScriptFile, + installTypescriptFile, + updateTypescriptFile, + dsqlDbDockerComposeFile, + dsqlDbDockerComposeFileAlt, + dsqlDbDockerComposeFileName, + dsqlDbDockerComposeFileNameAlt, }; } diff --git a/dist/package-shared/utils/backend/names/grab-ip-addresses.d.ts b/dist/package-shared/utils/backend/names/grab-ip-addresses.d.ts index 20faba9..9576acc 100644 --- a/dist/package-shared/utils/backend/names/grab-ip-addresses.d.ts +++ b/dist/package-shared/utils/backend/names/grab-ip-addresses.d.ts @@ -6,4 +6,5 @@ export default function grabIPAddresses(): { localHostIP: string; globalIPPrefix: string; webSocketIP: string; + dbCronIP: string; }; diff --git a/dist/package-shared/utils/backend/names/grab-ip-addresses.js b/dist/package-shared/utils/backend/names/grab-ip-addresses.js index a969319..0b0b9e0 100644 --- a/dist/package-shared/utils/backend/names/grab-ip-addresses.js +++ b/dist/package-shared/utils/backend/names/grab-ip-addresses.js @@ -13,6 +13,7 @@ function grabIPAddresses() { const maxScaleIP = `${globalIPPrefix}.${maxscale}`; const mainDBIP = `${globalIPPrefix}.${db}`; const webSocketIP = `${globalIPPrefix}.${websocket}`; + const dbCronIP = `${globalIPPrefix}.${db_cron}`; const localHostIP = `${globalIPPrefix}.1`; return { webAppIP, @@ -22,5 +23,6 @@ function grabIPAddresses() { localHostIP, globalIPPrefix, webSocketIP, + dbCronIP, }; } diff --git a/dist/package-shared/utils/backend/parseCookies.js b/dist/package-shared/utils/backend/parseCookies.js index 81d0e03..ebaafcf 100644 --- a/dist/package-shared/utils/backend/parseCookies.js +++ b/dist/package-shared/utils/backend/parseCookies.js @@ -9,7 +9,6 @@ exports.default = parseCookies; * returns the cookies as a JS object */ function parseCookies({ request, cookieString, }) { - var _a; try { /** @type {string | undefined} */ const cookieStr = request @@ -37,7 +36,6 @@ function parseCookies({ request, cookieString, }) { return cookieObject; } catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Parse Cookies Error`, error); return {}; } } diff --git a/dist/package-shared/utils/check-if-is-master.js b/dist/package-shared/utils/check-if-is-master.js index 21e9e20..d6a1477 100644 --- a/dist/package-shared/utils/check-if-is-master.js +++ b/dist/package-shared/utils/check-if-is-master.js @@ -4,9 +4,7 @@ exports.default = checkIfIsMaster; function checkIfIsMaster({ dbContext, dbFullName }) { return (dbContext === null || dbContext === void 0 ? void 0 : dbContext.match(/dsql.user/i)) ? false - : global.DSQL_USE_LOCAL - ? true - : dbFullName && !dbFullName.match(/^datasquirel$/) - ? false - : true; + : dbFullName && !dbFullName.match(/^datasquirel$/) + ? false + : true; } diff --git a/dist/package-shared/utils/data-fetching/crud.js b/dist/package-shared/utils/data-fetching/crud.js index 2051eaa..53b1ece 100644 --- a/dist/package-shared/utils/data-fetching/crud.js +++ b/dist/package-shared/utils/data-fetching/crud.js @@ -23,7 +23,6 @@ function dsqlCrud(params) { const { action, data, table, targetValue, sanitize, targetField, targetId, dbFullName, deleteData, batchData, deleteKeyValues, debug, } = params; const finalData = (sanitize ? sanitize({ data }) : data); const finalBatchData = (sanitize ? sanitize({ batchData }) : batchData); - const DB_CONN = global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN; switch (action) { case "get": return yield (0, crud_get_1.default)(params); @@ -60,7 +59,7 @@ function dsqlCrud(params) { dbFullName, deleteKeyValues, }); - const res = (yield (0, conn_db_handler_1.default)(DB_CONN, deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.query, deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.values)); + const res = (yield (0, conn_db_handler_1.default)(undefined, deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.query, deleteQuery === null || deleteQuery === void 0 ? void 0 : deleteQuery.values)); return { success: Boolean(res.affectedRows), payload: res, diff --git a/dist/package-shared/utils/data-fetching/method-crud.js b/dist/package-shared/utils/data-fetching/method-crud.js index c24065a..2362bac 100644 --- a/dist/package-shared/utils/data-fetching/method-crud.js +++ b/dist/package-shared/utils/data-fetching/method-crud.js @@ -20,7 +20,7 @@ const numberfy_1 = __importDefault(require("../numberfy")); const crud_1 = __importDefault(require("./crud")); function dsqlMethodCrud(_a) { return __awaiter(this, arguments, void 0, function* ({ method, tableName, addUser, user, extraData, transformData, existingData, body, query, targetId, sanitize, transformQuery, debug, }) { - var _b, _c, _d, _e, _f; + var _b, _c, _d, _e; let result = { success: false, }; @@ -160,7 +160,6 @@ function dsqlMethodCrud(_a) { return result; } catch (error) { - (_f = global.ERROR_CALLBACK) === null || _f === void 0 ? void 0 : _f.call(global, `Method Crud Error`, error); return result; } }); diff --git a/dist/package-shared/utils/db/conn-db-handler.d.ts b/dist/package-shared/utils/db/conn-db-handler.d.ts index d4c4159..e2d5266 100644 --- a/dist/package-shared/utils/db/conn-db-handler.d.ts +++ b/dist/package-shared/utils/db/conn-db-handler.d.ts @@ -18,7 +18,7 @@ export default function connDbHandler( /** * MariaDB Connection */ -conn?: mariadb.Connection, +conn?: mariadb.Connection | null, /** * String Or `ConnDBHandlerQueryObject` Array */ diff --git a/dist/package-shared/utils/db/conn-db-handler.js b/dist/package-shared/utils/db/conn-db-handler.js index 4533a60..2d5df92 100644 --- a/dist/package-shared/utils/db/conn-db-handler.js +++ b/dist/package-shared/utils/db/conn-db-handler.js @@ -34,7 +34,6 @@ query, */ values, debug) { return __awaiter(this, void 0, void 0, function* () { - var _a, _b; const finalConnection = conn || (yield (0, grab_dsql_connection_1.default)()); try { if (!finalConnection) @@ -43,18 +42,15 @@ values, debug) { throw new Error("Query String Required!"); let queryErrorArray = []; if (typeof query == "string") { - const res = yield finalConnection.query(trimQuery(query), values); + const [results] = yield finalConnection.query(trimQuery(query), values); if (debug) { (0, debug_log_1.default)({ - log: res, + log: results, addTime: true, label: "res", }); } - if (Array.isArray(res)) { - return Array.from(res); - } - return res; + return results; } else if (typeof query == "object") { const resArray = []; @@ -65,22 +61,17 @@ values, debug) { currentQueryError.sql = queryObj.query; currentQueryError.sqlValues = queryObj.values; const queryObjRes = yield finalConnection.query(trimQuery(queryObj.query), queryObj.values); + const results = queryObjRes[0]; if (debug) { (0, debug_log_1.default)({ - log: queryObjRes, + log: results, addTime: true, label: "queryObjRes", }); } - if (Array.isArray(queryObjRes)) { - resArray.push(Array.from(queryObjRes)); - } - else { - resArray.push(queryObjRes); - } + resArray.push(results); } catch (error) { - (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Connection DB Handler Query Error`, error); console.log("query", query); resArray.push(null); currentQueryError["error"] = error.message; @@ -106,7 +97,6 @@ values, debug) { } } catch (error) { - (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Connection DB Handler Error`, error); if (debug) { (0, debug_log_1.default)({ log: `Connection DB Handler Error: ${error.message}`, diff --git a/dist/package-shared/utils/docker-test-db-connection.d.ts b/dist/package-shared/utils/docker-test-db-connection.d.ts new file mode 100644 index 0000000..32d0411 --- /dev/null +++ b/dist/package-shared/utils/docker-test-db-connection.d.ts @@ -0,0 +1,6 @@ +type Params = { + maxRetries?: number; + sleepTime?: number; +}; +export default function dockerTestDbConnection(params?: Params): Promise; +export {}; diff --git a/dist/package-shared/utils/docker-test-db-connection.js b/dist/package-shared/utils/docker-test-db-connection.js new file mode 100644 index 0000000..593dd6f --- /dev/null +++ b/dist/package-shared/utils/docker-test-db-connection.js @@ -0,0 +1,46 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = dockerTestDbConnection; +const debug_log_1 = __importDefault(require("./logging/debug-log")); +const mariadb_local_query_1 = __importDefault(require("./mariadb-local-query")); +let checkDbRetries = 0; +const MAX_CHECK_DB_RETRIES = 10; +const DEFAULT_SLEEP_TIME = 3000; +function dockerTestDbConnection(params) { + return __awaiter(this, void 0, void 0, function* () { + const maxRetries = (params === null || params === void 0 ? void 0 : params.maxRetries) || MAX_CHECK_DB_RETRIES; + const sleepTime = (params === null || params === void 0 ? void 0 : params.sleepTime) || DEFAULT_SLEEP_TIME; + while (true) { + if (checkDbRetries > maxRetries) { + (0, debug_log_1.default)({ + log: `Max Retries for checking Database. Exiting ...`, + addTime: true, + label: "MaxRetries", + }); + process.exit(1); + } + const checkDb = (0, mariadb_local_query_1.default)(`SHOW DATABASES`); + const isDbReady = typeof checkDb == "string" && + Boolean(checkDb.match(/\ninformation_schema\n/)); + if (isDbReady) { + break; + } + else { + checkDbRetries++; + yield Bun.sleep(sleepTime); + } + } + }); +} diff --git a/dist/package-shared/utils/docker-test-maxscale-connection.d.ts b/dist/package-shared/utils/docker-test-maxscale-connection.d.ts new file mode 100644 index 0000000..4b40325 --- /dev/null +++ b/dist/package-shared/utils/docker-test-maxscale-connection.d.ts @@ -0,0 +1,6 @@ +type Params = { + maxRetries?: number; + sleepTime?: number; +}; +export default function dockerTestMaxscaleConnection(params?: Params): Promise; +export {}; diff --git a/dist/package-shared/utils/docker-test-maxscale-connection.js b/dist/package-shared/utils/docker-test-maxscale-connection.js new file mode 100644 index 0000000..3b9b96e --- /dev/null +++ b/dist/package-shared/utils/docker-test-maxscale-connection.js @@ -0,0 +1,41 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = dockerTestMaxscaleConnection; +let checkDbRetries = 0; +const MAX_CHECK_DB_RETRIES = 10; +const DEFAULT_SLEEP_TIME = 3000; +function dockerTestMaxscaleConnection(params) { + return __awaiter(this, void 0, void 0, function* () { + const maxRetries = (params === null || params === void 0 ? void 0 : params.maxRetries) || MAX_CHECK_DB_RETRIES; + const sleepTime = (params === null || params === void 0 ? void 0 : params.sleepTime) || DEFAULT_SLEEP_TIME; + // while (true) { + // if (checkDbRetries > maxRetries) { + // debugLog({ + // log: `Max Retries for checking Database. Exiting ...`, + // addTime: true, + // label: "MaxRetries", + // }); + // process.exit(1); + // } + // const checkDb = mariaDBlocalQuery(`SHOW DATABASES`); + // const isDbReady = + // typeof checkDb == "string" && + // Boolean(checkDb.match(/\ninformation_schema\n/)); + // if (isDbReady) { + // break; + // } else { + // checkDbRetries++; + // await Bun.sleep(sleepTime); + // } + // } + }); +} diff --git a/dist/package-shared/utils/execute.d.ts b/dist/package-shared/utils/execute.d.ts new file mode 100644 index 0000000..31fc797 --- /dev/null +++ b/dist/package-shared/utils/execute.d.ts @@ -0,0 +1,2 @@ +import { ExecSyncOptions } from "child_process"; +export default function execute(cmd: string | string[], options?: ExecSyncOptions): string | (string | undefined)[] | undefined; diff --git a/dist/package-shared/utils/execute.js b/dist/package-shared/utils/execute.js new file mode 100644 index 0000000..684cffb --- /dev/null +++ b/dist/package-shared/utils/execute.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = execute; +const child_process_1 = require("child_process"); +function execute(cmd, options) { + function runCmd(cmd) { + try { + const res = (0, child_process_1.execSync)(cmd, Object.assign({ encoding: "utf-8" }, options)); + if (typeof res == "string") { + return res.trim(); + } + else { + return undefined; + } + } + catch (error) { + console.log(`Execute Run Error =>`, error.message); + console.log(`Execute CMD =>`, cmd); + return undefined; + } + } + try { + if (typeof cmd == "string") { + return runCmd(cmd); + } + else if (Array.isArray(cmd)) { + let resArr = []; + for (let i = 0; i < cmd.length; i++) { + const singleCmd = cmd[i]; + const res = runCmd(singleCmd); + resArr.push(res); + } + return resArr; + } + } + catch (error) { + console.log(`Execute Error =>`, error.message); + return undefined; + } +} diff --git a/dist/package-shared/utils/grab-api-key.d.ts b/dist/package-shared/utils/grab-api-key.d.ts new file mode 100644 index 0000000..7606448 --- /dev/null +++ b/dist/package-shared/utils/grab-api-key.d.ts @@ -0,0 +1 @@ +export default function grabAPIKey(key?: string): string | undefined; diff --git a/dist/package-shared/utils/grab-api-key.js b/dist/package-shared/utils/grab-api-key.js new file mode 100644 index 0000000..615c698 --- /dev/null +++ b/dist/package-shared/utils/grab-api-key.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = grabAPIKey; +function grabAPIKey(key) { + return (key || + process.env.DSQL_API_KEY || + process.env.DSQL_FULL_ACCESS_API_KEY || + process.env.DSQL_READ_ONLY_API_KEY); +} diff --git a/dist/package-shared/utils/grab-dsql-connection.d.ts b/dist/package-shared/utils/grab-dsql-connection.d.ts index d2dff1a..ceeebc5 100644 --- a/dist/package-shared/utils/grab-dsql-connection.d.ts +++ b/dist/package-shared/utils/grab-dsql-connection.d.ts @@ -1,21 +1,17 @@ -import { Connection } from "mariadb"; +import { Connection, ConnectionConfig } from "mariadb"; type Param = { - /** - * Read Only? - */ - ro?: boolean; - /** - * Full Access? - */ - fa?: boolean; /** * No Database Connection */ noDb?: boolean; /** - * Is this a local connection? + * Database Name */ - local?: boolean; + database?: string; + /** + * Debug + */ + config?: ConnectionConfig; }; /** * # Grab General CONNECTION for DSQL diff --git a/dist/package-shared/utils/grab-dsql-connection.js b/dist/package-shared/utils/grab-dsql-connection.js index 9fb8808..aa0c269 100644 --- a/dist/package-shared/utils/grab-dsql-connection.js +++ b/dist/package-shared/utils/grab-dsql-connection.js @@ -20,83 +20,88 @@ const grabDbSSL_1 = __importDefault(require("./backend/grabDbSSL")); */ function grabDSQLConnection(param) { return __awaiter(this, void 0, void 0, function* () { - return yield mariadb_1.default.createConnection({ - host: process.env.DSQL_DB_HOST, - user: process.env.DSQL_DB_USERNAME, - password: process.env.DSQL_DB_PASSWORD, - database: (param === null || param === void 0 ? void 0 : param.noDb) ? undefined : process.env.DSQL_DB_NAME, - port: process.env.DSQL_DB_PORT + const config = Object.assign({ host: process.env.DSQL_DB_HOST, user: process.env.DSQL_DB_USERNAME, password: process.env.DSQL_DB_PASSWORD, database: (param === null || param === void 0 ? void 0 : param.database) || + ((param === null || param === void 0 ? void 0 : param.noDb) ? undefined : process.env.DSQL_DB_NAME), port: process.env.DSQL_DB_PORT ? Number(process.env.DSQL_DB_PORT) - : undefined, - charset: "utf8mb4", - ssl: (0, grabDbSSL_1.default)(), - supportBigNumbers: true, - bigNumberStrings: false, - dateStrings: true, - }); - if (global.DSQL_USE_LOCAL || (param === null || param === void 0 ? void 0 : param.local)) { - return (global.DSQL_DB_CONN || - (yield mariadb_1.default.createConnection({ - host: process.env.DSQL_DB_HOST, - user: process.env.DSQL_DB_USERNAME, - password: process.env.DSQL_DB_PASSWORD, - database: (param === null || param === void 0 ? void 0 : param.noDb) ? undefined : process.env.DSQL_DB_NAME, - port: process.env.DSQL_DB_PORT - ? Number(process.env.DSQL_DB_PORT) - : undefined, - charset: "utf8mb4", - ssl: (0, grabDbSSL_1.default)(), - supportBigNumbers: true, - bigNumberStrings: false, - dateStrings: true, - }))); + : undefined, charset: "utf8mb4", ssl: (0, grabDbSSL_1.default)(), bigIntAsNumber: true, supportBigNumbers: true, bigNumberStrings: false, dateStrings: true, metaAsArray: true }, param === null || param === void 0 ? void 0 : param.config); + try { + return yield mariadb_1.default.createConnection(config); } - if (param === null || param === void 0 ? void 0 : param.ro) { - return (global.DSQL_READ_ONLY_DB_CONN || - (yield mariadb_1.default.createConnection({ - host: process.env.DSQL_DB_HOST, - user: process.env.DSQL_DB_READ_ONLY_USERNAME, - password: process.env.DSQL_DB_READ_ONLY_PASSWORD, - port: process.env.DSQL_DB_PORT - ? Number(process.env.DSQL_DB_PORT) - : undefined, - charset: "utf8mb4", - ssl: (0, grabDbSSL_1.default)(), - supportBigNumbers: true, - bigNumberStrings: false, - dateStrings: true, - }))); + catch (error) { + console.log(`Error Grabbing DSQL Connection =>`, config); + throw error; } - if (param === null || param === void 0 ? void 0 : param.fa) { - return (global.DSQL_FULL_ACCESS_DB_CONN || - (yield mariadb_1.default.createConnection({ - host: process.env.DSQL_DB_HOST, - user: process.env.DSQL_DB_FULL_ACCESS_USERNAME, - password: process.env.DSQL_DB_FULL_ACCESS_PASSWORD, - port: process.env.DSQL_DB_PORT - ? Number(process.env.DSQL_DB_PORT) - : undefined, - charset: "utf8mb4", - ssl: (0, grabDbSSL_1.default)(), - supportBigNumbers: true, - bigNumberStrings: false, - dateStrings: true, - }))); - } - return (global.DSQL_DB_CONN || - (yield mariadb_1.default.createConnection({ - host: process.env.DSQL_DB_HOST, - user: process.env.DSQL_DB_USERNAME, - password: process.env.DSQL_DB_PASSWORD, - database: (param === null || param === void 0 ? void 0 : param.noDb) ? undefined : process.env.DSQL_DB_NAME, - port: process.env.DSQL_DB_PORT - ? Number(process.env.DSQL_DB_PORT) - : undefined, - charset: "utf8mb4", - ssl: (0, grabDbSSL_1.default)(), - supportBigNumbers: true, - bigNumberStrings: false, - dateStrings: true, - }))); + // if (global.DSQL_USE_LOCAL || param?.local) { + // return ( + // global.DSQL_DB_CONN || + // (await mariadb.createConnection({ + // host: process.env.DSQL_DB_HOST, + // user: process.env.DSQL_DB_USERNAME, + // password: process.env.DSQL_DB_PASSWORD, + // database: param?.noDb ? undefined : process.env.DSQL_DB_NAME, + // port: process.env.DSQL_DB_PORT + // ? Number(process.env.DSQL_DB_PORT) + // : undefined, + // charset: "utf8mb4", + // ssl: grabDbSSL(), + // supportBigNumbers: true, + // bigNumberStrings: false, + // dateStrings: true, + // })) + // ); + // } + // if (param?.ro) { + // return ( + // global.DSQL_READ_ONLY_DB_CONN || + // (await mariadb.createConnection({ + // host: process.env.DSQL_DB_HOST, + // user: process.env.DSQL_DB_READ_ONLY_USERNAME, + // password: process.env.DSQL_DB_READ_ONLY_PASSWORD, + // port: process.env.DSQL_DB_PORT + // ? Number(process.env.DSQL_DB_PORT) + // : undefined, + // charset: "utf8mb4", + // ssl: grabDbSSL(), + // supportBigNumbers: true, + // bigNumberStrings: false, + // dateStrings: true, + // })) + // ); + // } + // if (param?.fa) { + // return ( + // global.DSQL_FULL_ACCESS_DB_CONN || + // (await mariadb.createConnection({ + // host: process.env.DSQL_DB_HOST, + // user: process.env.DSQL_DB_FULL_ACCESS_USERNAME, + // password: process.env.DSQL_DB_FULL_ACCESS_PASSWORD, + // port: process.env.DSQL_DB_PORT + // ? Number(process.env.DSQL_DB_PORT) + // : undefined, + // charset: "utf8mb4", + // ssl: grabDbSSL(), + // supportBigNumbers: true, + // bigNumberStrings: false, + // dateStrings: true, + // })) + // ); + // } + // return ( + // global.DSQL_DB_CONN || + // (await mariadb.createConnection({ + // host: process.env.DSQL_DB_HOST, + // user: process.env.DSQL_DB_USERNAME, + // password: process.env.DSQL_DB_PASSWORD, + // database: param?.noDb ? undefined : process.env.DSQL_DB_NAME, + // port: process.env.DSQL_DB_PORT + // ? Number(process.env.DSQL_DB_PORT) + // : undefined, + // charset: "utf8mb4", + // ssl: grabDbSSL(), + // supportBigNumbers: true, + // bigNumberStrings: false, + // dateStrings: true, + // })) + // ); }); } diff --git a/dist/package-shared/utils/grab-remote-urls.d.ts b/dist/package-shared/utils/grab-remote-urls.d.ts new file mode 100644 index 0000000..23eb14c --- /dev/null +++ b/dist/package-shared/utils/grab-remote-urls.d.ts @@ -0,0 +1,6 @@ +export default function grabDSQLRemoteURLs(): { + communityTarballURL: string; + communityTarballShortURL: string; + installScriptURL: string; + updateScriptURL: string; +}; diff --git a/dist/package-shared/utils/grab-remote-urls.js b/dist/package-shared/utils/grab-remote-urls.js new file mode 100644 index 0000000..911bd1e --- /dev/null +++ b/dist/package-shared/utils/grab-remote-urls.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = grabDSQLRemoteURLs; +function grabDSQLRemoteURLs() { + const communityTarballURL = "https://static.datasquirel.com/images/user-images/user-2/dsql/distro/dsql-community.tar.xz"; + const communityTarballShortURL = "https://datasquirel.com/api/media/dsql-community"; + const installScriptURL = "https://datasquirel.com/api/media/install"; + const updateScriptURL = "https://datasquirel.com/api/media/update"; + return { + communityTarballURL, + communityTarballShortURL, + installScriptURL, + updateScriptURL, + }; +} diff --git a/dist/package-shared/utils/mariadb-local-query.d.ts b/dist/package-shared/utils/mariadb-local-query.d.ts new file mode 100644 index 0000000..f55ee61 --- /dev/null +++ b/dist/package-shared/utils/mariadb-local-query.d.ts @@ -0,0 +1,2 @@ +export default function mariaDBlocalQuery(query: string | string[]): string | (string | undefined)[] | undefined; +export declare function removeQueryDoubleQuotes(query: string): string; diff --git a/dist/package-shared/utils/mariadb-local-query.js b/dist/package-shared/utils/mariadb-local-query.js new file mode 100644 index 0000000..93fad9e --- /dev/null +++ b/dist/package-shared/utils/mariadb-local-query.js @@ -0,0 +1,24 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = mariaDBlocalQuery; +exports.removeQueryDoubleQuotes = removeQueryDoubleQuotes; +const grab_docker_stack_services_names_1 = __importDefault(require("@/package-shared/utils/backend/names/grab-docker-stack-services-names")); +const normalize_text_1 = __importDefault(require("@/package-shared/utils/normalize-text")); +const execute_1 = __importDefault(require("./execute")); +function mariaDBlocalQuery(query) { + const { dbServiceName, maxScaleServiceName } = (0, grab_docker_stack_services_names_1.default)(); + const MARIADB_CMD_PREFIX = `docker exec ${dbServiceName} mariadb -u root -p"${process.env.DSQL_MARIADB_ROOT_PASSWORD}"`; + function grabMariadbDockerCmd(cmd) { + return `${MARIADB_CMD_PREFIX} -e "${removeQueryDoubleQuotes((0, normalize_text_1.default)(cmd))}"`; + } + const finalQuery = Array.isArray(query) + ? query.map((qry) => grabMariadbDockerCmd(qry)) + : grabMariadbDockerCmd(query); + return (0, execute_1.default)(finalQuery); +} +function removeQueryDoubleQuotes(query) { + return query.replace(/\"/gm, '\\"'); +} diff --git a/dist/package-shared/utils/parse-env.d.ts b/dist/package-shared/utils/parse-env.d.ts index cfd14e1..0cf77c1 100644 --- a/dist/package-shared/utils/parse-env.d.ts +++ b/dist/package-shared/utils/parse-env.d.ts @@ -71,8 +71,8 @@ export default function parseEnv( DSQL_WEB_APP_FAIL_COUNTS: string | undefined; NODE_ARCH: string | undefined; DSQL_WEBSOCKET_PORT: string | undefined; - DSQL_WEBSOCKET_URL: string | undefined; - NEXT_PUBLIC_DSQL_WEBSOCKET_URL: string | undefined; + DSQL_WEBSOCKET_HOST: string | undefined; + NEXT_PUBLIC_DSQL_WEBSOCKET_HOST: string | undefined; S3_ACCESS_KEY_ID: string | undefined; S3_SECRET_ACCESS: string | undefined; DSQL_ADDITIONAL_MARIADB_SERVERS: string | undefined; diff --git a/dist/package-shared/utils/setup-db.d.ts b/dist/package-shared/utils/setup-db.d.ts index 9f9a536..ab2f1bf 100644 --- a/dist/package-shared/utils/setup-db.d.ts +++ b/dist/package-shared/utils/setup-db.d.ts @@ -5,7 +5,7 @@ type Params = { ssl?: boolean; connectionLimit?: number; }; -export default function setupDSQLDb({ useLocal, dbConfig, ssl, connectionLimit, }: Params): Promise<{ +export default function setupDSQLDb({ dbConfig, ssl }: Params): Promise<{ conn: mariadb.Connection; }>; export {}; diff --git a/dist/package-shared/utils/setup-db.js b/dist/package-shared/utils/setup-db.js index 0b105e5..81cdcae 100644 --- a/dist/package-shared/utils/setup-db.js +++ b/dist/package-shared/utils/setup-db.js @@ -16,9 +16,8 @@ exports.default = setupDSQLDb; const grabDbSSL_1 = __importDefault(require("./backend/grabDbSSL")); const mariadb_1 = __importDefault(require("mariadb")); function setupDSQLDb(_a) { - return __awaiter(this, arguments, void 0, function* ({ useLocal, dbConfig, ssl, connectionLimit = 20, }) { - global.DSQL_USE_LOCAL = useLocal || true; - const conn = yield mariadb_1.default.createConnection(Object.assign(Object.assign({ host: process.env.DSQL_DB_HOST, user: process.env.DSQL_DB_USERNAME, password: process.env.DSQL_DB_PASSWORD, database: process.env.DSQL_DB_NAME, charset: "utf8mb4" }, dbConfig), { ssl: ssl ? (0, grabDbSSL_1.default)() : undefined, supportBigNumbers: true, bigNumberStrings: false, dateStrings: true })); + return __awaiter(this, arguments, void 0, function* ({ dbConfig, ssl }) { + const conn = yield mariadb_1.default.createConnection(Object.assign(Object.assign({ host: process.env.DSQL_DB_HOST, user: process.env.DSQL_DB_USERNAME, password: process.env.DSQL_DB_PASSWORD, database: process.env.DSQL_DB_NAME, charset: "utf8mb4" }, dbConfig), { ssl: ssl ? (0, grabDbSSL_1.default)() : undefined, supportBigNumbers: true, bigNumberStrings: false, dateStrings: true, bigIntAsNumber: true, metaAsArray: true })); // const conn = mariadb.createPool({ // host: process.env.DSQL_DB_HOST, // user: process.env.DSQL_DB_USERNAME, @@ -32,7 +31,6 @@ function setupDSQLDb(_a) { // bigNumberStrings: false, // dateStrings: true, // }); - global.DSQL_DB_CONN = conn; // let readOnlyConnection; // if (addReadOnlyConn) { // readOnlyConnection = mariadb.createPool({ diff --git a/dist/package-shared/utils/setup-global-network.js b/dist/package-shared/utils/setup-global-network.js index 6ef9bae..f0f59a4 100644 --- a/dist/package-shared/utils/setup-global-network.js +++ b/dist/package-shared/utils/setup-global-network.js @@ -22,5 +22,8 @@ function setupGlobalNetwork() { newNtwkCmd += ` ${globalNetworkName}`; (0, child_process_1.execSync)(newNtwkCmd); } - catch (error) { } + catch (error) { + console.log(`Failed to create global network ${globalNetworkName}`); + console.log(globalIPPrefix); + } } diff --git a/dist/package-shared/utils/test-db-connection.d.ts b/dist/package-shared/utils/test-db-connection.d.ts new file mode 100644 index 0000000..b0b5f7e --- /dev/null +++ b/dist/package-shared/utils/test-db-connection.d.ts @@ -0,0 +1,6 @@ +type Params = { + maxRetries?: number; + sleepTime?: number; +}; +export default function testDbConnection(params?: Params): Promise; +export {}; diff --git a/dist/package-shared/utils/test-db-connection.js b/dist/package-shared/utils/test-db-connection.js new file mode 100644 index 0000000..743aaac --- /dev/null +++ b/dist/package-shared/utils/test-db-connection.js @@ -0,0 +1,44 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = testDbConnection; +const dbHandler_1 = __importDefault(require("../functions/backend/dbHandler")); +let testDbConnRetries = 0; +const MAX_TEST_DB_CONN_RETRIES = 10; +const SLEEP_TIME = 2000; +function testDbConnection(params) { + return __awaiter(this, void 0, void 0, function* () { + console.log("Testing Database Connection ...", testDbConnRetries); + while (true) { + testDbConnRetries++; + try { + const res = (yield (0, dbHandler_1.default)({ query: `SHOW DATABASES` })); + if (res === null || res === void 0 ? void 0 : res[0]) { + console.log("Database Connection Complete!"); + break; + } + yield Bun.sleep((params === null || params === void 0 ? void 0 : params.sleepTime) || SLEEP_TIME); + if (testDbConnRetries > + ((params === null || params === void 0 ? void 0 : params.maxRetries) || MAX_TEST_DB_CONN_RETRIES)) { + console.log("Database Connection Failed!"); + process.exit(1); + } + } + catch (error) { + yield Bun.sleep((params === null || params === void 0 ? void 0 : params.sleepTime) || SLEEP_TIME); + } + } + return true; + }); +} diff --git a/package-shared/actions/get.ts b/package-shared/actions/get.ts index a64938f..2e09b05 100644 --- a/package-shared/actions/get.ts +++ b/package-shared/actions/get.ts @@ -1,27 +1,19 @@ import https from "node:https"; -import path from "path"; -import fs from "fs"; import grabHostNames from "../utils/grab-host-names"; -import apiGet from "../functions/api/query/get"; import serializeQuery from "../utils/serialize-query"; -import { - ApiGetQueryObject, - DSQL_DatabaseSchemaType, - GetReqQueryObject, - GetReturn, -} from "../types"; -import apiGetGrabQueryAndValues from "../utils/grab-query-and-values"; +import { APIResponseObject, DsqlCrudQueryObject } from "../types"; import debugLog from "../utils/logging/debug-log"; +import dsqlCrud from "../utils/data-fetching/crud"; +import grabAPIKey from "../utils/grab-api-key"; type Param = { key?: string; - db?: string; - query: string | ApiGetQueryObject; - queryValues?: string[]; - tableName?: string; - user_id?: string | number; + database: string; + query: DsqlCrudQueryObject; + table?: string; debug?: boolean; - forceLocal?: boolean; + useLocal?: boolean; + apiVersion?: string; }; export type ApiGetParams = Param; @@ -34,14 +26,13 @@ export default async function get< R extends any = any >({ key, - db, + database, query, - queryValues, - tableName, - user_id, + table, debug, - forceLocal, -}: Param): Promise> { + useLocal, + apiVersion = "v1", +}: Param): Promise> { const grabedHostNames = grabHostNames(); const { host, port, scheme } = grabedHostNames; @@ -56,30 +47,15 @@ export default async function get< */ const { DSQL_DB_NAME } = process.env; - if (DSQL_DB_NAME?.match(/./) && global.DSQL_USE_LOCAL) { - let dbSchema: DSQL_DatabaseSchemaType | undefined; - - try { - const localDbSchemaPath = path.resolve( - process.cwd(), - "dsql.schema.json" - ); - dbSchema = JSON.parse(fs.readFileSync(localDbSchemaPath, "utf8")); - } catch (error) {} - - if (debug) { - debugFn("Running Locally ..."); - } - - return await apiGet({ - dbFullName: DSQL_DB_NAME, + if (useLocal) { + const result = await dsqlCrud({ + action: "get", + table: table || "", + dbFullName: database, query, - queryValues, - tableName, - dbSchema, - debug, - forceLocal, }); + + return result; } /** @@ -88,32 +64,13 @@ export default async function get< * @description make a request to datasquirel.com */ const httpResponse = await new Promise((resolve, reject) => { - const queryAndValues = apiGetGrabQueryAndValues({ - query, - values: queryValues, - }); - - const queryObject: GetReqQueryObject = { - db: process.env.DSQL_API_DB_NAME || String(db), - query: queryAndValues.query, - queryValues: queryAndValues.valuesString, - tableName, - debug, - }; - - if (debug) { - debugFn(queryObject, "queryObject"); - } - - const queryString = serializeQuery({ ...queryObject }); + const queryString = serializeQuery(query); if (debug) { debugFn(queryString, "queryString"); } - let path = `/api/query/${ - user_id || grabedHostNames.user_id - }/get${queryString}`; + let path = `/api/${apiVersion}/crud/${database}/${table}`; if (debug) { debugFn(path, "path"); @@ -123,11 +80,7 @@ export default async function get< method: "GET", headers: { "Content-Type": "application/json", - Authorization: - key || - process.env.DSQL_READ_ONLY_API_KEY || - process.env.DSQL_FULL_ACCESS_API_KEY || - process.env.DSQL_API_KEY, + Authorization: grabAPIKey(key), }, port, hostname: host, @@ -152,8 +105,8 @@ export default async function get< response.on("end", function () { try { - resolve(JSON.parse(str) as GetReturn); - } catch (/** @type {any} */ error: any) { + resolve(JSON.parse(str) as APIResponseObject); + } catch (error: any) { reject({ error: error.message, result: str, @@ -170,5 +123,5 @@ export default async function get< .end(); }); - return httpResponse as GetReturn; + return httpResponse as APIResponseObject; } diff --git a/package-shared/actions/post.ts b/package-shared/actions/post.ts index 82b069d..b69fe5c 100644 --- a/package-shared/actions/post.ts +++ b/package-shared/actions/post.ts @@ -14,7 +14,7 @@ type Param = { queryValues?: any[]; tableName?: string; user_id?: boolean; - forceLocal?: boolean; + useLocal?: boolean; debug?: boolean; }; @@ -28,7 +28,7 @@ export default async function post({ database, tableName, user_id, - forceLocal, + useLocal, debug, }: Param): Promise { const grabedHostNames = grabHostNames(); @@ -50,24 +50,7 @@ export default async function post({ const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = process.env; - if ( - DSQL_DB_HOST?.match(/./) && - DSQL_DB_USERNAME?.match(/./) && - DSQL_DB_PASSWORD?.match(/./) && - DSQL_DB_NAME?.match(/./) && - global.DSQL_USE_LOCAL - ) { - /** @type {import("../types").DSQL_DatabaseSchemaType | undefined} */ - let dbSchema: import("../types").DSQL_DatabaseSchemaType | undefined; - - try { - const localDbSchemaPath = path.resolve( - process.cwd(), - "dsql.schema.json" - ); - dbSchema = JSON.parse(fs.readFileSync(localDbSchemaPath, "utf8")); - } catch (error) {} - + if (useLocal) { if (debug) { debugLog({ log: "Using Local DB ...", @@ -76,12 +59,10 @@ export default async function post({ } return await apiPost({ - dbFullName: database || DSQL_DB_NAME, + dbFullName: database || "", query, - dbSchema, queryValues, tableName, - forceLocal, debug, }); } @@ -101,10 +82,10 @@ export default async function post({ try { JSON.parse(reqPayloadString); - } catch (error) { - global.ERROR_CALLBACK?.( - `Error Parsing HTTP response for post action`, - error as Error + } catch (error: any) { + console.log( + "Error Parsing HTTP response for post action: ", + error.message ); return { diff --git a/package-shared/actions/upload-file.ts b/package-shared/actions/upload-file.ts index 68e39ad..1be2906 100644 --- a/package-shared/actions/upload-file.ts +++ b/package-shared/actions/upload-file.ts @@ -89,7 +89,6 @@ export default async function uploadImage({ return httpResponse as Return; } catch (error: any) { console.log("Error in uploading file: ", error.message); - global.ERROR_CALLBACK?.(`Error Uploading File`, error as Error); return { success: false, diff --git a/package-shared/actions/upload-image.ts b/package-shared/actions/upload-image.ts index 8d3843e..8a0c17a 100644 --- a/package-shared/actions/upload-image.ts +++ b/package-shared/actions/upload-image.ts @@ -93,7 +93,6 @@ export default async function uploadImage({ return httpResponse as DSQLUploadImageFunctionReturn; } catch (error: any) { console.log("Error in uploading image: ", error.message); - global.ERROR_CALLBACK?.(`Error Uploading Image`, error as Error); return { success: false, diff --git a/package-shared/actions/users/add-user.ts b/package-shared/actions/users/add-user.ts index de82b12..eed0616 100644 --- a/package-shared/actions/users/add-user.ts +++ b/package-shared/actions/users/add-user.ts @@ -6,12 +6,11 @@ import { AddUserFunctionReturn, UserDataPayload } from "../../types"; type Param = { key?: string; - database?: string; + database: string; payload: UserDataPayload; encryptionKey?: string; - encryptionSalt?: string; - user_id?: string | number; - apiUserId?: string | number; + useLocal?: boolean; + verify?: boolean; }; /** @@ -22,48 +21,18 @@ export default async function addUser({ payload, database, encryptionKey, - user_id, - apiUserId, + useLocal, + verify, }: Param): Promise { - /** - * Check for local DB settings - * - * @description Look for local db settings in `.env` file and by pass the http request if available - */ - const { - DSQL_DB_HOST, - DSQL_DB_USERNAME, - DSQL_DB_PASSWORD, - DSQL_DB_NAME, - DSQL_API_USER_ID, - } = process.env; - const grabedHostNames = grabHostNames(); const { host, port, scheme } = grabedHostNames; - if ( - DSQL_DB_HOST?.match(/./) && - DSQL_DB_USERNAME?.match(/./) && - DSQL_DB_PASSWORD?.match(/./) && - DSQL_DB_NAME?.match(/./) && - global.DSQL_USE_LOCAL - ) { - /** @type {import("../../types").DSQL_DatabaseSchemaType | undefined} */ - let dbSchema: import("../../types").DSQL_DatabaseSchemaType | undefined; - - try { - const localDbSchemaPath = path.resolve( - process.cwd(), - "dsql.schema.json" - ); - dbSchema = JSON.parse(fs.readFileSync(localDbSchemaPath, "utf8")); - } catch (error) {} - + if (useLocal) { return await apiCreateUser({ - database: DSQL_DB_NAME, + database, encryptionKey, payload, - userId: apiUserId, + verify, }); } @@ -92,9 +61,7 @@ export default async function addUser({ }, port, hostname: host, - path: `/api/user/${ - user_id || grabedHostNames.user_id - }/add-user`, + path: ``, }, /** diff --git a/package-shared/actions/users/delete-user.ts b/package-shared/actions/users/delete-user.ts index 8eba7e4..d811e06 100644 --- a/package-shared/actions/users/delete-user.ts +++ b/package-shared/actions/users/delete-user.ts @@ -1,14 +1,13 @@ -import path from "path"; -import fs from "fs"; import grabHostNames from "../../utils/grab-host-names"; import apiDeleteUser from "../../functions/api/users/api-delete-user"; import { UpdateUserFunctionReturn } from "../../types"; type Param = { key?: string; - database?: string; + database: string; deletedUserId: string | number; - user_id?: boolean; + useLocal?: boolean; + apiVersion?: string; }; /** @@ -17,40 +16,16 @@ type Param = { export default async function deleteUser({ key, database, - user_id, deletedUserId, + useLocal, + apiVersion = "v1", }: Param): Promise { - /** - * Check for local DB settings - * - * @description Look for local db settings in `.env` file and by pass the http request if available - */ - const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = - process.env; - const grabedHostNames = grabHostNames(); const { host, port, scheme } = grabedHostNames; - if ( - DSQL_DB_HOST?.match(/./) && - DSQL_DB_USERNAME?.match(/./) && - DSQL_DB_PASSWORD?.match(/./) && - DSQL_DB_NAME?.match(/./) && - global.DSQL_USE_LOCAL - ) { - /** @type {import("../../types").DSQL_DatabaseSchemaType | undefined} */ - let dbSchema: import("../../types").DSQL_DatabaseSchemaType | undefined; - - try { - const localDbSchemaPath = path.resolve( - process.cwd(), - "dsql.schema.json" - ); - dbSchema = JSON.parse(fs.readFileSync(localDbSchemaPath, "utf8")); - } catch (error) {} - + if (useLocal) { return await apiDeleteUser({ - dbFullName: DSQL_DB_NAME, + dbFullName: database, deletedUserId, }); } @@ -79,9 +54,7 @@ export default async function deleteUser({ }, port, hostname: host, - path: `/api/user/${ - user_id || grabedHostNames.user_id - }/delete-user`, + path: `/api/${apiVersion}/users/${database}/${deletedUserId}`, }, /** diff --git a/package-shared/actions/users/get-token.ts b/package-shared/actions/users/get-token.ts index 3335376..fa6b76d 100644 --- a/package-shared/actions/users/get-token.ts +++ b/package-shared/actions/users/get-token.ts @@ -79,8 +79,8 @@ export default function getToken({ * @description Return User Object */ return { key, csrf }; - } catch (error) { - global.ERROR_CALLBACK?.(`Error Getting Token`, error as Error); + } catch (error: any) { + console.log("Error Getting Token:", error.message); /** * Return User Object diff --git a/package-shared/actions/users/get-user.ts b/package-shared/actions/users/get-user.ts index bd1244e..a26e6ad 100644 --- a/package-shared/actions/users/get-user.ts +++ b/package-shared/actions/users/get-user.ts @@ -9,7 +9,8 @@ type Param = { database: string; userId: number; fields?: string[]; - apiUserId?: boolean; + useLocal?: boolean; + apiVersion?: string; }; /** @@ -20,7 +21,8 @@ export default async function getUser({ userId, database, fields, - apiUserId, + useLocal, + apiVersion = "v1", }: Param): Promise { /** * Initialize @@ -54,36 +56,11 @@ export default async function getUser({ const grabedHostNames = grabHostNames(); const { host, port, scheme } = grabedHostNames; - /** - * Check for local DB settings - * - * @description Look for local db settings in `.env` file and by pass the http request if available - */ - const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = - process.env; - - if ( - DSQL_DB_HOST?.match(/./) && - DSQL_DB_USERNAME?.match(/./) && - DSQL_DB_PASSWORD?.match(/./) && - DSQL_DB_NAME?.match(/./) && - global.DSQL_USE_LOCAL - ) { - /** @type {import("../../types").DSQL_DatabaseSchemaType | undefined} */ - let dbSchema: import("../../types").DSQL_DatabaseSchemaType | undefined; - - try { - const localDbSchemaPath = path.resolve( - process.cwd(), - "dsql.schema.json" - ); - dbSchema = JSON.parse(fs.readFileSync(localDbSchemaPath, "utf8")); - } catch (error) {} - + if (useLocal) { return await apiGetUser({ userId, fields: [...new Set(updatedFields)], - dbFullName: DSQL_DB_NAME, + dbFullName: database, }); } @@ -106,9 +83,7 @@ export default async function getUser({ }, port, hostname: host, - path: `/api/user/${ - apiUserId || grabedHostNames.user_id - }/get-user`, + path: `/api/${apiVersion}/users/${database}/${userId}`, }, /** @@ -137,9 +112,5 @@ export default async function getUser({ httpsRequest.end(); }); - /** ********************************************** */ - /** ********************************************** */ - /** ********************************************** */ - return httpResponse as GetUserFunctionReturn; } diff --git a/package-shared/actions/users/login-user.ts b/package-shared/actions/users/login-user.ts index fd41573..9999f92 100644 --- a/package-shared/actions/users/login-user.ts +++ b/package-shared/actions/users/login-user.ts @@ -108,7 +108,7 @@ export default async function loginUser({ */ if (useLocal) { httpResponse = await apiLoginUser({ - database: database || process.env.DSQL_DB_NAME || "", + database, email: payload.email, username: payload.username, password: payload.password, @@ -193,11 +193,8 @@ export default async function loginUser({ try { if (token && encryptedPayload) httpResponse["token"] = encryptedPayload; - } catch (error) { - global.ERROR_CALLBACK?.( - `Login User HTTP Response Error`, - error as Error - ); + } catch (error: any) { + console.log("Login User HTTP Response Error:", error.message); } const cookieNames = getAuthCookieNames({ diff --git a/package-shared/actions/users/logout-user.ts b/package-shared/actions/users/logout-user.ts index 3d86102..095e574 100644 --- a/package-shared/actions/users/logout-user.ts +++ b/package-shared/actions/users/logout-user.ts @@ -117,7 +117,6 @@ export default function logoutUser({ }; } catch (error: any) { console.log("Logout Error:", error.message); - global.ERROR_CALLBACK?.(`Logout User Error`, error as Error); return { success: false, diff --git a/package-shared/actions/users/social/github-auth.ts b/package-shared/actions/users/social/github-auth.ts index 23e95a6..a50e626 100644 --- a/package-shared/actions/users/social/github-auth.ts +++ b/package-shared/actions/users/social/github-auth.ts @@ -186,12 +186,8 @@ export default async function githubAuth({ response.on("end", function () { try { resolve(JSON.parse(str)); - } catch (error) { - global.ERROR_CALLBACK?.( - `Github Auth Error`, - error as Error - ); - + } catch (error: any) { + console.log("Github Auth Error:", error.message); resolve({ success: false, user: null, diff --git a/package-shared/actions/users/update-user.ts b/package-shared/actions/users/update-user.ts index 84e9eee..e495e86 100644 --- a/package-shared/actions/users/update-user.ts +++ b/package-shared/actions/users/update-user.ts @@ -1,15 +1,14 @@ -import path from "path"; -import fs from "fs"; import grabHostNames from "../../utils/grab-host-names"; import apiUpdateUser from "../../functions/api/users/api-update-user"; import { UpdateUserFunctionReturn } from "../../types"; type Param = { key?: string; - database?: string; + database: string; updatedUserId: string | number; payload: { [s: string]: any }; user_id?: boolean; + useLocal?: boolean; }; /** @@ -21,41 +20,16 @@ export default async function updateUser({ database, user_id, updatedUserId, + useLocal, }: Param): Promise { - /** - * Check for local DB settings - * - * @description Look for local db settings in `.env` file and by pass the http request if available - */ - const { DSQL_DB_HOST, DSQL_DB_USERNAME, DSQL_DB_PASSWORD, DSQL_DB_NAME } = - process.env; - const grabedHostNames = grabHostNames(); const { host, port, scheme } = grabedHostNames; - if ( - DSQL_DB_HOST?.match(/./) && - DSQL_DB_USERNAME?.match(/./) && - DSQL_DB_PASSWORD?.match(/./) && - DSQL_DB_NAME?.match(/./) && - global.DSQL_USE_LOCAL - ) { - /** @type {import("../../types").DSQL_DatabaseSchemaType | undefined} */ - let dbSchema: import("../../types").DSQL_DatabaseSchemaType | undefined; - - try { - const localDbSchemaPath = path.resolve( - process.cwd(), - "dsql.schema.json" - ); - dbSchema = JSON.parse(fs.readFileSync(localDbSchemaPath, "utf8")); - } catch (error) {} - + if (useLocal) { return await apiUpdateUser({ payload: payload, - dbFullName: DSQL_DB_NAME, + dbFullName: database, updatedUserId, - dbSchema, }); } diff --git a/package-shared/actions/users/user-auth.ts b/package-shared/actions/users/user-auth.ts index 24b8155..178c625 100644 --- a/package-shared/actions/users/user-auth.ts +++ b/package-shared/actions/users/user-auth.ts @@ -215,8 +215,6 @@ export default function userAuth({ payload: userObject, }; } catch (error: any) { - global.ERROR_CALLBACK?.(`User Auth Error`, error as Error); - /** * Return User Object * diff --git a/package-shared/actions/users/validate-temp-email-code.ts b/package-shared/actions/users/validate-temp-email-code.ts index fb72d21..f24decb 100644 --- a/package-shared/actions/users/validate-temp-email-code.ts +++ b/package-shared/actions/users/validate-temp-email-code.ts @@ -44,10 +44,6 @@ export default async function validateTempEmailCode({ return null; } catch (error: any) { - global.ERROR_CALLBACK?.( - `Validate Temp Email Code Error`, - error as Error - ); console.log("validateTempEmailCode error:", error.message); return null; } diff --git a/package-shared/actions/users/validate-token.ts b/package-shared/actions/users/validate-token.ts index f2c8e27..3d330b6 100644 --- a/package-shared/actions/users/validate-token.ts +++ b/package-shared/actions/users/validate-token.ts @@ -66,7 +66,6 @@ export default function validateToken({ */ return userObject; } catch (error) { - global.ERROR_CALLBACK?.(`Validate Token Error`, error as Error); /** * Return User Object * diff --git a/package-shared/dict/app-names.ts b/package-shared/dict/app-names.ts index 5bd5909..5cc3b44 100644 --- a/package-shared/dict/app-names.ts +++ b/package-shared/dict/app-names.ts @@ -5,4 +5,5 @@ export const AppNames = { PrivateMediaProceedureName: "dsql_UpdateUserMedia", PrivateMediaInsertTriggerName: "dsql_trg_user_private_folders_insert", PrivateMediaDeleteTriggerName: "dsql_trg_user_private_folders_delete", + WebsocketPathname: "dsql-websocket", } as const; diff --git a/package-shared/functions/api/query-dsql-api.ts b/package-shared/functions/api/query-dsql-api.ts index 6f3e1f0..f35b3da 100644 --- a/package-shared/functions/api/query-dsql-api.ts +++ b/package-shared/functions/api/query-dsql-api.ts @@ -94,7 +94,21 @@ export default async function queryDSQLAPI< response.on("end", function () { try { - resolve(JSON.parse(str)); + const responseObj = JSON.parse( + str + ) as APIResponseObject; + if (!responseObj.success) { + // console.log("responseObj", responseObj); + // console.log( + // "response.headers", + // response.headers + // ); + // console.log( + // "httpsRequest.headers", + // httpsRequest.getHeaders() + // ); + } + resolve(responseObj); } catch (error: any) { resolve({ success: false, diff --git a/package-shared/functions/api/query/get.ts b/package-shared/functions/api/query/get.ts index 54648f6..8cc6ddc 100644 --- a/package-shared/functions/api/query/get.ts +++ b/package-shared/functions/api/query/get.ts @@ -1,22 +1,20 @@ import _ from "lodash"; -import serverError from "../../backend/serverError"; -import runQuery, { DbContextsArray } from "../../backend/db/runQuery"; +import { DbContextsArray } from "../../backend/db/runQuery"; import { - ApiGetQueryObject, - DSQL_TableSchemaType, + DSQL_DatabaseSchemaType, + DsqlCrudQueryObject, GetReturn, } from "../../../types"; -import apiGetGrabQueryAndValues from "../../../utils/grab-query-and-values"; +import sqlGenerator from "../../dsql/sql/sql-generator"; +import dsqlCrud from "../../../utils/data-fetching/crud"; type Param = { - query: string | ApiGetQueryObject; - queryValues?: (string | number)[]; + query: DsqlCrudQueryObject; dbFullName: string; - tableName?: string; - dbSchema?: import("../../../types").DSQL_DatabaseSchemaType; + tableName: string; + dbSchema?: DSQL_DatabaseSchemaType; debug?: boolean; dbContext?: (typeof DbContextsArray)[number]; - forceLocal?: boolean; }; /** @@ -27,88 +25,22 @@ export default async function apiGet< >({ query, dbFullName, - queryValues, tableName, dbSchema, debug, - dbContext, - forceLocal, -}: Param): Promise { - const queryAndValues = apiGetGrabQueryAndValues({ - query, - values: queryValues, +}: Param): Promise { + const queryAndValues = sqlGenerator({ + tableName, + genObject: query, + dbFullName, }); - if (typeof query == "string" && query.match(/^alter|^delete|^create/i)) { - return { success: false, msg: "Wrong Input." }; - } + const result = await dsqlCrud({ + action: "get", + table: tableName, + dbFullName, + query, + }); - let results; - - try { - let { result, error } = await runQuery({ - dbFullName: dbFullName, - query: queryAndValues.query, - queryValuesArray: queryAndValues.values, - readOnly: true, - dbSchema, - tableName, - dbContext, - debug, - forceLocal, - }); - - if (debug && global.DSQL_USE_LOCAL) { - console.log("apiGet:result", result); - console.log("apiGet:error", error); - } - - let tableSchema: DSQL_TableSchemaType | undefined; - - if (dbSchema) { - const targetTable = dbSchema.tables?.find( - (table) => table.tableName === tableName - ); - - if (targetTable) { - const clonedTargetTable = _.cloneDeep(targetTable); - delete clonedTargetTable.childTable; - delete clonedTargetTable.childrenTables; - delete clonedTargetTable.updateData; - delete clonedTargetTable.indexes; - tableSchema = clonedTargetTable; - } - } - - if (error) throw error; - if (result.error) throw new Error(result.error); - - results = result; - - const resObject: GetReturn = { - success: true, - payload: results, - schema: tableName && tableSchema ? tableSchema : undefined, - }; - - return resObject; - } catch (error: any) { - serverError({ - component: "/api/query/get/lines-85-94", - message: error.message, - }); - - global.ERROR_CALLBACK?.(`API Get Error`, error as Error); - - if (debug && global.DSQL_USE_LOCAL) { - console.log("apiGet:error", error.message); - console.log("queryAndValues", queryAndValues); - } - - return { - success: false, - payload: null, - error: error.message, - }; - } + return result; } diff --git a/package-shared/functions/api/query/post.ts b/package-shared/functions/api/query/post.ts index 31936a8..0a04f96 100644 --- a/package-shared/functions/api/query/post.ts +++ b/package-shared/functions/api/query/post.ts @@ -11,7 +11,6 @@ type Param = { tableName?: string; dbSchema?: DSQL_DatabaseSchemaType; dbContext?: (typeof DbContextsArray)[number]; - forceLocal?: boolean; debug?: boolean; }; @@ -25,7 +24,6 @@ export default async function apiPost({ tableName, dbSchema, dbContext, - forceLocal, debug, }: Param): Promise { if (typeof query === "string" && query?.match(/^create |^alter |^drop /i)) { @@ -54,7 +52,6 @@ export default async function apiPost({ queryValuesArray: queryValues, tableName, dbContext, - forceLocal, debug, }); @@ -109,8 +106,6 @@ export default async function apiPost({ message: error.message, }); - global.ERROR_CALLBACK?.(`API Post Error`, error as Error); - return { success: false, payload: results, diff --git a/package-shared/functions/api/social-login/facebookLogin.ts b/package-shared/functions/api/social-login/facebookLogin.ts index 82dc6a5..d0a1b63 100644 --- a/package-shared/functions/api/social-login/facebookLogin.ts +++ b/package-shared/functions/api/social-login/facebookLogin.ts @@ -1,6 +1,5 @@ -import { UserType } from "../../../types"; -import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER"; -import handleNodemailer from "../../backend/handleNodemailer"; +import { PostInsertReturn, UserType } from "../../../types"; +import dbHandler from "../../backend/dbHandler"; import serverError from "../../backend/serverError"; import hashPassword from "../../dsql/hashPassword"; @@ -15,9 +14,10 @@ export default async function facebookLogin({ usertype: UserType; }) { try { - const foundUser = await DB_HANDLER( - `SELECT * FROM users WHERE email='${body.facebookUserEmail}' AND social_login='1'` - ); + const foundUser = (await dbHandler({ + query: `SELECT * FROM users WHERE email='${body.facebookUserEmail}' AND social_login='1'`, + values: [body.facebookUserEmail], + })) as any[]; if (foundUser && foundUser[0]) { return foundUser[0]; @@ -27,7 +27,8 @@ export default async function facebookLogin({ password: body.facebookUserId, }); - let newUser = await DB_HANDLER(`INSERT INTO ${usertype} ( + let newUser = (await dbHandler({ + query: `INSERT INTO ${usertype} ( first_name, last_name, social_platform, @@ -61,11 +62,21 @@ export default async function facebookLogin({ '1', '${Date()}', '${Date.now()}' - )`); + )`, + values: [ + body.facebookUserFirstName, + body.facebookUserLastName, + body.facebookUserEmail, + body.facebookUserImage, + socialHashedPassword, + body.facebookUserId, + ], + })) as PostInsertReturn; - const newFoundUser = await DB_HANDLER( - `SELECT * FROM ${usertype} WHERE id='${newUser.insertId}'` - ); + const newFoundUser = (await dbHandler({ + query: `SELECT * FROM ${usertype} WHERE id=?`, + values: newUser?.insertId ? [newUser?.insertId] : [], + })) as any[]; } catch (/** @type {any} */ error: any) { serverError({ component: "functions/backend/facebookLogin", diff --git a/package-shared/functions/api/social-login/githubLogin.ts b/package-shared/functions/api/social-login/githubLogin.ts index ff6c366..840cd3e 100644 --- a/package-shared/functions/api/social-login/githubLogin.ts +++ b/package-shared/functions/api/social-login/githubLogin.ts @@ -1,4 +1,4 @@ -import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER"; +import dbHandler from "../../backend/dbHandler"; import httpsRequest from "../../backend/httpsRequest"; export interface GithubUserPayload { @@ -83,9 +83,10 @@ export default async function githubLogin({ gitHubUser = JSON.parse(userDataResponse as string); if (!gitHubUser?.email && gitHubUser) { - const existingGithubUser = await DB_HANDLER( - `SELECT email FROM users WHERE social_login='1' AND social_platform='github' AND social_id='${gitHubUser.id}'` - ); + const existingGithubUser = (await dbHandler({ + query: `SELECT email FROM users WHERE social_login='1' AND social_platform='github' AND social_id='${gitHubUser.id}'`, + values: [gitHubUser.id], + })) as any[]; if (existingGithubUser && existingGithubUser[0]) { gitHubUser.email = existingGithubUser[0].email; diff --git a/package-shared/functions/api/social-login/googleLogin.ts b/package-shared/functions/api/social-login/googleLogin.ts index f906f54..9485675 100644 --- a/package-shared/functions/api/social-login/googleLogin.ts +++ b/package-shared/functions/api/social-login/googleLogin.ts @@ -1,8 +1,9 @@ import fs from "fs"; import { OAuth2Client } from "google-auth-library"; import serverError from "../../backend/serverError"; -import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER"; +import dbHandler from "../../backend/dbHandler"; import hashPassword from "../../dsql/hashPassword"; +import { PostInsertReturn } from "../../../types"; type Param = { usertype: string; @@ -66,11 +67,12 @@ export default async function googleLogin({ //////////////////////////////////////////////// //////////////////////////////////////////////// - let existinEmail = await DB_HANDLER( - `SELECT * FROM ${usertype} WHERE email='${payload.email}' AND social_login!='1' AND social_platform!='google'` - ); + let existinEmail = (await dbHandler({ + query: `SELECT * FROM ${usertype} WHERE email='${payload.email}' AND social_login!='1' AND social_platform!='google'`, + values: [payload.email], + })) as any[]; - if (existinEmail && existinEmail[0]) { + if (existinEmail?.[0]) { loginFailureReason = "Email Exists Already"; isGoogleAuthValid = false; return { @@ -82,11 +84,12 @@ export default async function googleLogin({ //////////////////////////////////////// - foundUser = await DB_HANDLER( - `SELECT * FROM ${usertype} WHERE email='${payload.email}' AND social_login='1' AND social_platform='google'` - ); + foundUser = (await dbHandler({ + query: `SELECT * FROM ${usertype} WHERE email=? AND social_login='1' AND social_platform='google'`, + values: [payload.email], + })) as any[]; - if (foundUser && foundUser[0]) { + if (foundUser?.[0]) { newFoundUser = foundUser; return { isGoogleAuthValid: isGoogleAuthValid, @@ -98,9 +101,10 @@ export default async function googleLogin({ //////////////////////////////////////////////// //////////////////////////////////////////////// - let newUser = await DB_HANDLER(`INSERT INTO ${usertype} ( + let newUser = (await dbHandler({ + query: `INSERT INTO ${usertype} ( first_name, - last_name, + last_name, social_platform, social_name, social_id, @@ -128,19 +132,19 @@ export default async function googleLogin({ '1', '${Date()}', '${Date.now()}' - )`); + )`, + })) as PostInsertReturn; - newFoundUser = await DB_HANDLER( - `SELECT * FROM ${usertype} WHERE id='${newUser.insertId}'` - ); + newFoundUser = (await dbHandler({ + query: `SELECT * FROM ${usertype} WHERE id=?`, + values: [newUser.insertId], + })) as any[]; } catch (error: any) { serverError({ component: "googleLogin", message: error.message, }); - global.ERROR_CALLBACK?.(`Google Login Error`, error as Error); - loginFailureReason = error; isUserValid = false; diff --git a/package-shared/functions/api/social-login/handleSocialDb.ts b/package-shared/functions/api/social-login/handleSocialDb.ts index ac3c92f..cb601cd 100644 --- a/package-shared/functions/api/social-login/handleSocialDb.ts +++ b/package-shared/functions/api/social-login/handleSocialDb.ts @@ -2,7 +2,7 @@ import fs from "fs"; import handleNodemailer from "../../backend/handleNodemailer"; import path from "path"; import addMariadbUser from "../../backend/addMariadbUser"; -import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler"; +import dbHandler from "../../backend/dbHandler"; import encrypt from "../../dsql/encrypt"; import addDbEntry from "../../backend/db/addDbEntry"; import loginSocialUser from "./loginSocialUser"; @@ -27,14 +27,9 @@ export default async function handleSocialDb({ loginOnly, }: HandleSocialDbFunctionParams): Promise { try { - const finalDbName = global.DSQL_USE_LOCAL - ? undefined - : database - ? database - : "datasquirel"; - const dbAppend = global.DSQL_USE_LOCAL ? "" : `${finalDbName}.`; + const finalDbName = database ? database : "datasquirel"; - const existingSocialUserQUery = `SELECT * FROM ${dbAppend}users WHERE email = ? AND social_login='1' AND social_platform = ? `; + const existingSocialUserQUery = `SELECT * FROM users WHERE email = ? AND social_login='1' AND social_platform = ? `; const existingSocialUserValues = [email, social_platform]; if (debug) { @@ -48,12 +43,11 @@ export default async function handleSocialDb({ ); } - let existingSocialUser = await varDatabaseDbHandler({ + let existingSocialUser = (await dbHandler({ database: finalDbName, - queryString: existingSocialUserQUery, - queryValuesArray: existingSocialUserValues, - debug, - }); + query: existingSocialUserQUery, + values: existingSocialUserValues, + })) as any[]; if (debug) { console.log( @@ -89,7 +83,7 @@ export default async function handleSocialDb({ }; } - const existingEmailOnlyQuery = `SELECT * FROM ${dbAppend}users WHERE email='${finalEmail}'`; + const existingEmailOnlyQuery = `SELECT * FROM users WHERE email='${finalEmail}'`; if (debug) { console.log( @@ -98,11 +92,10 @@ export default async function handleSocialDb({ ); } - let existingEmailOnly = await varDatabaseDbHandler({ + let existingEmailOnly = (await dbHandler({ database: finalDbName, - queryString: existingEmailOnlyQuery, - debug, - }); + query: existingEmailOnlyQuery, + })) as any[]; if (debug) { console.log("handleSocialDb:existingEmailOnly", existingEmailOnly); @@ -160,13 +153,12 @@ export default async function handleSocialDb({ await addMariadbUser({ userId: newUser.payload.insertId }); } - const newUserQueriedQuery = `SELECT * FROM ${dbAppend}users WHERE id='${newUser.payload.insertId}'`; + const newUserQueriedQuery = `SELECT * FROM users WHERE id='${newUser.payload.insertId}'`; - const newUserQueried = await varDatabaseDbHandler({ + const newUserQueried = (await dbHandler({ database: finalDbName, - queryString: newUserQueriedQuery, - debug, - }); + query: newUserQueriedQuery, + })) as any[]; if (!newUserQueried || !newUserQueried[0]) return { @@ -263,8 +255,6 @@ export default async function handleSocialDb({ error.message ); - global.ERROR_CALLBACK?.(`Handle Social DB Error`, error as Error); - return { success: false, payload: null, diff --git a/package-shared/functions/api/social-login/loginSocialUser.ts b/package-shared/functions/api/social-login/loginSocialUser.ts index 63ceef0..8cef924 100644 --- a/package-shared/functions/api/social-login/loginSocialUser.ts +++ b/package-shared/functions/api/social-login/loginSocialUser.ts @@ -1,5 +1,5 @@ import addAdminUserOnLogin from "../../backend/addAdminUserOnLogin"; -import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler"; +import dbHandler from "../../backend/dbHandler"; import { APILoginFunctionReturn, DATASQUIREL_LoggedInUser, @@ -39,12 +39,11 @@ export default async function loginSocialUser({ const foundUserQuery = `SELECT * FROM ${dbAppend}\`users\` WHERE email=?`; const foundUserValues = [user.email]; - const foundUser = await varDatabaseDbHandler({ + const foundUser = (await dbHandler({ + query: foundUserQuery, + values: foundUserValues, database: finalDbName, - queryString: foundUserQuery, - queryValuesArray: foundUserValues, - debug, - }); + })) as any[]; if (!foundUser?.[0]) return { diff --git a/package-shared/functions/api/users/api-create-user.ts b/package-shared/functions/api/users/api-create-user.ts index 2e64d7e..7d2b7b3 100644 --- a/package-shared/functions/api/users/api-create-user.ts +++ b/package-shared/functions/api/users/api-create-user.ts @@ -1,11 +1,12 @@ -import { findDbNameInSchemaDir } from "../../../shell/createDbFromSchema/grab-required-database-schemas"; +import { grabPrimaryRequiredDbSchema } from "../../../shell/createDbFromSchema/grab-required-database-schemas"; import { APICreateUserFunctionParams } from "../../../types"; import addUsersTableToDb from "../../backend/addUsersTableToDb"; import addDbEntry from "../../backend/db/addDbEntry"; import updateUsersTableSchema from "../../backend/updateUsersTableSchema"; -import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler"; +import dbHandler from "../../backend/dbHandler"; import hashPassword from "../../dsql/hashPassword"; import validateEmail from "../../email/fns/validate-email"; +import { DSQL_DATASQUIREL_USERS } from "@/package-shared/types/dsql"; /** * # API Create User @@ -15,10 +16,8 @@ export default async function apiCreateUser({ payload, database, userId, + verify, }: APICreateUserFunctionParams) { - const dbFullName = database; - const API_USER_ID = userId || process.env.DSQL_API_USER_ID; - const finalEncryptionKey = encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD; @@ -38,9 +37,10 @@ export default async function apiCreateUser({ }; } - const targetDbSchema = findDbNameInSchemaDir({ - dbName: dbFullName, + const targetDbSchema = grabPrimaryRequiredDbSchema({ + dbSlug: database, userId, + dbId: userId ? undefined : 1, }); if (!targetDbSchema?.id) { @@ -51,6 +51,16 @@ export default async function apiCreateUser({ }; } + const dbFullName = targetDbSchema.dbFullName; + + if (!dbFullName) { + return { + success: false, + msg: "dbFullName not found", + payload: null, + }; + } + const hashedPassword = hashPassword({ encryptionKey: finalEncryptionKey, password: String(payload.password), @@ -60,23 +70,23 @@ export default async function apiCreateUser({ const fieldsQuery = `SHOW COLUMNS FROM ${dbFullName}.users`; - let fields = await varDatabaseDbHandler({ - queryString: fieldsQuery, + let fields = (await dbHandler({ + query: fieldsQuery, database: dbFullName, - }); + })) as any[]; if (!fields?.[0]) { const newTable = await addUsersTableToDb({ - userId: Number(API_USER_ID), + userId, database: dbFullName, payload: payload, dbId: targetDbSchema.id, }); - fields = await varDatabaseDbHandler({ - queryString: fieldsQuery, + fields = (await dbHandler({ + query: fieldsQuery, database: dbFullName, - }); + })) as any[]; } if (!fields?.[0]) { @@ -94,7 +104,7 @@ export default async function apiCreateUser({ const key = Object.keys(payload)[i]; if (!fieldsTitles.includes(key)) { await updateUsersTableSchema({ - userId: Number(API_USER_ID), + userId, database: dbFullName, newPayload: { [key]: payload[key], @@ -118,11 +128,11 @@ export default async function apiCreateUser({ ? [payload.email, payload.username] : [payload.email]; - const existingUser = await varDatabaseDbHandler({ - queryString: existingUserQuery, - queryValuesArray: existingUserValues, + const existingUser = (await dbHandler({ + query: existingUserQuery, + values: existingUserValues, database: dbFullName, - }); + })) as any[]; if (existingUser?.[0]) { return { @@ -142,7 +152,7 @@ export default async function apiCreateUser({ }; } - const addUser = await addDbEntry({ + const addUser = await addDbEntry({ dbFullName: dbFullName, tableName: "users", data: { @@ -153,16 +163,18 @@ export default async function apiCreateUser({ image_thumbnail: process.env.DSQL_DEFAULT_USER_IMAGE || "/images/user-preset-thumbnail.png", + verification_status: verify ? 1 : 0, }, }); if (addUser?.payload?.insertId) { const newlyAddedUserQuery = `SELECT id,uuid,first_name,last_name,email,username,image,image_thumbnail,verification_status FROM ${dbFullName}.users WHERE id='${addUser.payload.insertId}'`; - const newlyAddedUser = await varDatabaseDbHandler({ - queryString: newlyAddedUserQuery, + const newlyAddedUser = (await dbHandler({ + query: newlyAddedUserQuery, + values: [], database: dbFullName, - }); + })) as any[]; return { success: true, diff --git a/package-shared/functions/api/users/api-delete-user.ts b/package-shared/functions/api/users/api-delete-user.ts index d3cf7d8..9debd4c 100644 --- a/package-shared/functions/api/users/api-delete-user.ts +++ b/package-shared/functions/api/users/api-delete-user.ts @@ -1,5 +1,5 @@ import deleteDbEntry from "../../backend/db/deleteDbEntry"; -import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler"; +import dbHandler from "../../backend/dbHandler"; type Param = { dbFullName: string; @@ -17,11 +17,11 @@ export default async function apiDeleteUser({ const existingUserQuery = `SELECT * FROM ${dbFullName}.users WHERE id = ?`; const existingUserValues = [deletedUserId]; - const existingUser = await varDatabaseDbHandler({ - queryString: existingUserQuery, - queryValuesArray: existingUserValues, + const existingUser = (await dbHandler({ + query: existingUserQuery, + values: existingUserValues, database: dbFullName, - }); + })) as any[]; if (!existingUser?.[0]) { return { diff --git a/package-shared/functions/api/users/api-get-user.ts b/package-shared/functions/api/users/api-get-user.ts index 2b3b7cd..e989686 100644 --- a/package-shared/functions/api/users/api-get-user.ts +++ b/package-shared/functions/api/users/api-get-user.ts @@ -2,7 +2,7 @@ import { APIGetUserFunctionParams, GetUserFunctionReturn, } from "../../../types"; -import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler"; +import dbHandler from "../../backend/dbHandler"; /** * # API Get User @@ -19,11 +19,11 @@ export default async function apiGetUser({ )} FROM ${finalDbName}.users WHERE id=?`; const API_USER_ID = userId || process.env.DSQL_API_USER_ID; - let foundUser = await varDatabaseDbHandler({ - queryString: query, - queryValuesArray: [API_USER_ID], + let foundUser = (await dbHandler({ + query, + values: [API_USER_ID], database: finalDbName, - }); + })) as any[]; if (!foundUser || !foundUser[0]) { return { diff --git a/package-shared/functions/api/users/api-login.ts b/package-shared/functions/api/users/api-login.ts index a794c7e..a706615 100644 --- a/package-shared/functions/api/users/api-login.ts +++ b/package-shared/functions/api/users/api-login.ts @@ -4,7 +4,7 @@ import { DATASQUIREL_LoggedInUser, } from "../../../types"; import grabDbFullName from "../../../utils/grab-db-full-name"; -import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler"; +import dbHandler from "../../backend/dbHandler"; import hashPassword from "../../dsql/hashPassword"; /** @@ -34,7 +34,6 @@ export default async function apiLoginUser({ msg: `Database Full Name couldn't be grabbed`, }; } - const dbAppend = global.DSQL_USE_LOCAL ? "" : `${dbFullName}.`; /** * Check input validity @@ -69,13 +68,11 @@ export default async function apiLoginUser({ console.log("apiLoginUser:Finding User ..."); } - let foundUser = await varDatabaseDbHandler({ - queryString: `SELECT * FROM ${dbAppend}users WHERE email = ? OR username = ?`, - queryValuesArray: [email, username], + let foundUser = (await dbHandler({ + query: `SELECT * FROM users WHERE email = ? OR username = ?`, + values: [email, username], database: dbFullName, - - debug, - }); + })) as any[]; if (debug) { console.log("apiLoginUser:foundUser:", foundUser); @@ -146,9 +143,9 @@ export default async function apiLoginUser({ } if (isPasswordCorrect && email_login) { - const resetTempCode = await varDatabaseDbHandler({ - queryString: `UPDATE ${dbAppend}users SET ${email_login_field} = '' WHERE email = ? OR username = ?`, - queryValuesArray: [email, username], + await dbHandler({ + query: `UPDATE users SET ${email_login_field} = '' WHERE email = ? OR username = ?`, + values: [email, username], database: dbFullName, }); } diff --git a/package-shared/functions/api/users/api-reauth-user.ts b/package-shared/functions/api/users/api-reauth-user.ts index f9210a5..4182628 100644 --- a/package-shared/functions/api/users/api-reauth-user.ts +++ b/package-shared/functions/api/users/api-reauth-user.ts @@ -1,5 +1,5 @@ import { APILoginFunctionReturn } from "../../../types"; -import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler"; +import dbHandler from "../../backend/dbHandler"; type Param = { existingUser: { [s: string]: any }; @@ -15,19 +15,13 @@ export default async function apiReauthUser({ database, additionalFields, }: Param): Promise { - const dbAppend = global.DSQL_USE_LOCAL - ? "" - : database - ? `${database}.` - : ""; - let foundUser = existingUser?.id && existingUser.id.toString().match(/./) - ? await varDatabaseDbHandler({ - queryString: `SELECT * FROM ${dbAppend}users WHERE id=?`, - queryValuesArray: [existingUser.id.toString()], + ? ((await dbHandler({ + query: `SELECT * FROM users WHERE id=?`, + values: [existingUser.id.toString()], database, - }) + })) as any[]) : null; if (!foundUser || !foundUser[0]) diff --git a/package-shared/functions/api/users/api-send-email-code.ts b/package-shared/functions/api/users/api-send-email-code.ts index fbafc59..048acad 100644 --- a/package-shared/functions/api/users/api-send-email-code.ts +++ b/package-shared/functions/api/users/api-send-email-code.ts @@ -1,10 +1,10 @@ -import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler"; +import dbHandler from "../../backend/dbHandler"; import nodemailer, { SendMailOptions } from "nodemailer"; import http from "http"; import getAuthCookieNames from "../../backend/cookies/get-auth-cookie-names"; import encrypt from "../../dsql/encrypt"; import serializeCookies from "../../../utils/serialize-cookies"; -import { SendOneTimeCodeEmailResponse } from "../../../types"; +import { CookieObject, SendOneTimeCodeEmailResponse } from "../../../types"; type Param = { email: string; @@ -17,7 +17,7 @@ type Param = { mail_password?: string; html: string; response?: http.ServerResponse & { [s: string]: any }; - extraCookies?: import("../../../../package-shared/types").CookieObject[]; + extraCookies?: CookieObject[]; }; /** @@ -47,15 +47,11 @@ export default async function apiSendEmailCode({ const foundUserQuery = `SELECT * FROM ${database}.users WHERE email = ?`; const foundUserValues = [email]; - let foundUser = await varDatabaseDbHandler({ - queryString: foundUserQuery, - queryValuesArray: foundUserValues, + let foundUser = (await dbHandler({ + query: foundUserQuery, + values: foundUserValues, database, - }); - - //////////////////////////////////////// - //////////////////////////////////////// - //////////////////////////////////////// + })) as any[]; if (!foundUser || !foundUser[0]) { return { @@ -107,13 +103,12 @@ export default async function apiSendEmailCode({ const setTempCodeQuery = `UPDATE ${database}.users SET ${email_login_field} = ? WHERE email = ?`; const setTempCodeValues = [tempCode + `-${createdAt}`, email]; - let setTempCode = await varDatabaseDbHandler({ - queryString: setTempCodeQuery, - queryValuesArray: setTempCodeValues, + await dbHandler({ + query: setTempCodeQuery, + values: setTempCodeValues, database, }); - /** @type {import("../../../types").SendOneTimeCodeEmailResponse} */ const resObject: import("../../../types").SendOneTimeCodeEmailResponse = { success: true, @@ -137,22 +132,18 @@ export default async function apiSendEmailCode({ ); } - /** @type {import("../../../../package-shared/types").CookieObject} */ - const oneTimeCookieObject: import("../../../../package-shared/types").CookieObject = - { - name: oneTimeCodeCookieName, - value: encryptedPayload, - sameSite: "Strict", - path: "/", - httpOnly: true, - secure: true, - }; + const oneTimeCookieObject: CookieObject = { + name: oneTimeCodeCookieName, + value: encryptedPayload, + sameSite: "Strict", + path: "/", + httpOnly: true, + secure: true, + }; - /** @type {import("../../../../package-shared/types").CookieObject[]} */ - const cookiesObjectArray: import("../../../../package-shared/types").CookieObject[] = - extraCookies - ? [...extraCookies, oneTimeCookieObject] - : [oneTimeCookieObject]; + const cookiesObjectArray: CookieObject[] = extraCookies + ? [...extraCookies, oneTimeCookieObject] + : [oneTimeCookieObject]; const serializedCookies = serializeCookies({ cookies: cookiesObjectArray, diff --git a/package-shared/functions/api/users/api-update-user.ts b/package-shared/functions/api/users/api-update-user.ts index 7e86de0..24daf86 100644 --- a/package-shared/functions/api/users/api-update-user.ts +++ b/package-shared/functions/api/users/api-update-user.ts @@ -3,7 +3,7 @@ import updateDbEntry from "../../backend/db/updateDbEntry"; import encrypt from "../../dsql/encrypt"; import hashPassword from "../../dsql/hashPassword"; -import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler"; +import dbHandler from "../../backend/dbHandler"; type Param = { payload: { [s: string]: any }; @@ -26,11 +26,11 @@ export default async function apiUpdateUser({ const existingUserQuery = `SELECT * FROM ${dbFullName}.users WHERE id = ?`; const existingUserValues = [updatedUserId]; - const existingUser = await varDatabaseDbHandler({ - queryString: existingUserQuery, - queryValuesArray: existingUserValues, + const existingUser = (await dbHandler({ + query: existingUserQuery, + values: existingUserValues, database: dbFullName, - }); + })) as any[]; if (!existingUser?.[0]) { return { diff --git a/package-shared/functions/api/users/reset-password/api-send-reset-password-link.ts b/package-shared/functions/api/users/reset-password/api-send-reset-password-link.ts index 010659a..2504fac 100644 --- a/package-shared/functions/api/users/reset-password/api-send-reset-password-link.ts +++ b/package-shared/functions/api/users/reset-password/api-send-reset-password-link.ts @@ -1,6 +1,6 @@ import { DSQL_MYSQL_user_databases_Type } from "../../../../types"; import grabDbFullName from "../../../../utils/grab-db-full-name"; -import varDatabaseDbHandler from "../../../backend/varDatabaseDbHandler"; +import dbHandler from "../../../backend/dbHandler"; type Return = { success: boolean; @@ -44,12 +44,11 @@ export default async function apiSendResetPasswordLink({ }; } - let foundUser = await varDatabaseDbHandler({ - queryString: `SELECT * FROM ${dbFullName}.users WHERE email = ? OR username = ?`, - queryValuesArray: [email, email], + let foundUser = (await dbHandler({ + query: `SELECT * FROM ${dbFullName}.users WHERE email = ? OR username = ?`, + values: [email, email], database: dbFullName, - debug, - }); + })) as any[]; if (debug) { console.log("apiSendResetPassword:foundUser:", foundUser); diff --git a/package-shared/functions/backend/addAdminUserOnLogin.ts b/package-shared/functions/backend/addAdminUserOnLogin.ts index c9a9a20..58713cb 100644 --- a/package-shared/functions/backend/addAdminUserOnLogin.ts +++ b/package-shared/functions/backend/addAdminUserOnLogin.ts @@ -1,8 +1,7 @@ import serverError from "./serverError"; -import DB_HANDLER from "../../utils/backend/global-db/DB_HANDLER"; import addDbEntry from "./db/addDbEntry"; -import LOCAL_DB_HANDLER from "../../utils/backend/global-db/LOCAL_DB_HANDLER"; import { DATASQUIREL_LoggedInUser } from "../../types"; +import dbHandler from "./dbHandler"; type Param = { query: { @@ -27,18 +26,15 @@ export default async function addAdminUserOnLogin({ user, }: Param): Promise { try { - const finalDbHandler = global.DSQL_USE_LOCAL - ? LOCAL_DB_HANDLER - : DB_HANDLER; const { invite, database_access, priviledge, email } = query; const lastInviteTimeQuery = `SELECT date_created_code FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`; const lastInviteTimeValues = [invite, email]; - const lastInviteTimeArray = await finalDbHandler( - lastInviteTimeQuery, - lastInviteTimeValues - ); + const lastInviteTimeArray = (await dbHandler({ + query: lastInviteTimeQuery, + values: lastInviteTimeValues, + })) as any[]; if (!lastInviteTimeArray || !lastInviteTimeArray[0]) { throw new Error("No Invitation Found"); @@ -51,16 +47,16 @@ export default async function addAdminUserOnLogin({ const invitingUserDbQuery = `SELECT first_name,last_name,email FROM users WHERE id=?`; const invitingUserDbValues = [invite]; - const invitingUserDb = await finalDbHandler( - invitingUserDbQuery, - invitingUserDbValues - ); + const invitingUserDb = (await dbHandler({ + query: invitingUserDbQuery, + values: invitingUserDbValues, + })) as any[]; if (invitingUserDb?.[0]) { - const existingUserUser = await finalDbHandler( - `SELECT email FROM user_users WHERE user_id=? AND invited_user_id=? AND user_type='admin' AND email=?`, - [invite, user.id, email] - ); + const existingUserUser = (await dbHandler({ + query: `SELECT email FROM user_users WHERE user_id=? AND invited_user_id=? AND user_type='admin' AND email=?`, + values: [invite, user.id, email], + })) as any[]; if (existingUserUser?.[0]) { console.log("User already added"); @@ -88,15 +84,15 @@ export default async function addAdminUserOnLogin({ //////////////////////////////////////////////// //////////////////////////////////////////////// - const dbTableData = await finalDbHandler( - `SELECT db_tables_data FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`, - [invite, email] - ); + const dbTableData = (await dbHandler({ + query: `SELECT db_tables_data FROM invitations WHERE inviting_user_id=? AND invited_user_email=?`, + values: [invite, email], + })) as any[]; - const clearEntries = await finalDbHandler( - `DELETE FROM delegated_user_tables WHERE root_user_id=? AND delegated_user_id=?`, - [invite, user.id] - ); + const clearEntries = (await dbHandler({ + query: `DELETE FROM delegated_user_tables WHERE root_user_id=? AND delegated_user_id=?`, + values: [invite, user.id], + })) as any[]; //////////////////////////////////////////////// //////////////////////////////////////////////// @@ -126,17 +122,12 @@ export default async function addAdminUserOnLogin({ } } - const inviteAccepted = await finalDbHandler( - `UPDATE invitations SET invitation_status='Accepted' WHERE inviting_user_id=? AND invited_user_email=?`, - [invite, email] - ); + const inviteAccepted = (await dbHandler({ + query: `UPDATE invitations SET invitation_status='Accepted' WHERE inviting_user_id=? AND invited_user_email=?`, + values: [invite, email], + })) as any[]; } } catch (error: any) { - global.ERROR_CALLBACK?.( - `Add Admin User On Login Error`, - error as Error - ); - serverError({ component: "addAdminUserOnLogin", message: error.message, diff --git a/package-shared/functions/backend/addMariadbUser.ts b/package-shared/functions/backend/addMariadbUser.ts index e162216..9f11839 100644 --- a/package-shared/functions/backend/addMariadbUser.ts +++ b/package-shared/functions/backend/addMariadbUser.ts @@ -1,10 +1,8 @@ import generator from "generate-password"; -import DB_HANDLER from "../../utils/backend/global-db/DB_HANDLER"; -import NO_DB_HANDLER from "../../utils/backend/global-db/NO_DB_HANDLER"; import addDbEntry from "./db/addDbEntry"; import encrypt from "../dsql/encrypt"; -import LOCAL_DB_HANDLER from "../../utils/backend/global-db/LOCAL_DB_HANDLER"; import grabSQLKeyName from "../../utils/grab-sql-key-name"; +import dbHandler from "./dbHandler"; type Param = { userId: number | string; @@ -29,18 +27,17 @@ export default async function addMariadbUser({ userId }: Param): Promise { const createMariadbUsersQuery = `CREATE USER IF NOT EXISTS '${username}'@'127.0.0.1' IDENTIFIED BY '${password}'`; - if (global.DSQL_USE_LOCAL) { - await LOCAL_DB_HANDLER(createMariadbUsersQuery); - } else { - await NO_DB_HANDLER(createMariadbUsersQuery); - } + await dbHandler({ + query: createMariadbUsersQuery, + }); const updateUserQuery = `UPDATE users SET mariadb_user = ?, mariadb_host = '127.0.0.1', mariadb_pass = ? WHERE id = ?`; const updateUserValues = [username, encryptedPassword, userId]; - const updateUser = global.DSQL_USE_LOCAL - ? await LOCAL_DB_HANDLER(updateUserQuery, updateUserValues) - : await DB_HANDLER(updateUserQuery, updateUserValues); + await dbHandler({ + query: updateUserQuery, + values: updateUserValues, + }); const addMariadbUser = await addDbEntry({ tableName: "mariadb_users", diff --git a/package-shared/functions/backend/addUsersTableToDb.ts b/package-shared/functions/backend/addUsersTableToDb.ts index a6ebbab..41fa2c7 100644 --- a/package-shared/functions/backend/addUsersTableToDb.ts +++ b/package-shared/functions/backend/addUsersTableToDb.ts @@ -1,16 +1,15 @@ import serverError from "./serverError"; -import DB_HANDLER from "../../utils/backend/global-db/DB_HANDLER"; import addDbEntry from "./db/addDbEntry"; import createDbFromSchema from "../../shell/createDbFromSchema"; -import LOCAL_DB_HANDLER from "../../utils/backend/global-db/LOCAL_DB_HANDLER"; import grabNewUsersTableSchema from "./grabNewUsersTableSchema"; import { grabPrimaryRequiredDbSchema, writeUpdatedDbSchema, } from "../../shell/createDbFromSchema/grab-required-database-schemas"; +import dbHandler from "./dbHandler"; type Param = { - userId: number; + userId?: number | string; database: string; payload?: { [s: string]: any }; dbId: string | number; @@ -52,15 +51,10 @@ export default async function addUsersTableToDb({ writeUpdatedDbSchema({ dbSchema: targetDatabase, userId }); - const targetDb: any[] | null = global.DSQL_USE_LOCAL - ? await LOCAL_DB_HANDLER( - `SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`, - [userId, database] - ) - : await DB_HANDLER( - `SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`, - [userId, database] - ); + const targetDb = (await dbHandler({ + query: `SELECT id FROM user_databases WHERE user_id=? AND db_slug=?`, + values: [userId, database], + })) as any[]; if (targetDb?.[0]) { const newTableEntry = await addDbEntry({ diff --git a/package-shared/functions/backend/auth/write-auth-files.ts b/package-shared/functions/backend/auth/write-auth-files.ts index 3ebddd7..cd1e2b6 100644 --- a/package-shared/functions/backend/auth/write-auth-files.ts +++ b/package-shared/functions/backend/auth/write-auth-files.ts @@ -29,10 +29,6 @@ export const initAuthFiles = () => { return true; } catch (error: any) { console.log(`Error initializing Auth Files: ${error.message}`); - global.ERROR_CALLBACK?.( - `Error Initializing Auth Files`, - error as Error - ); return false; } }; diff --git a/package-shared/functions/backend/createDbSchemaFromDb.ts b/package-shared/functions/backend/createDbSchemaFromDb.ts index d5ad0ab..62ce618 100644 --- a/package-shared/functions/backend/createDbSchemaFromDb.ts +++ b/package-shared/functions/backend/createDbSchemaFromDb.ts @@ -1,4 +1,4 @@ -import varDatabaseDbHandler from "../../functions/backend/varDatabaseDbHandler"; +import dbHandler from "../../functions/backend/dbHandler"; import addDbEntry from "../../functions/backend/db/addDbEntry"; import slugToCamelTitle from "../../shell/utils/slugToCamelTitle"; import { @@ -44,10 +44,10 @@ export default async function createDbSchemaFromDb({ if (!targetDb) throw new Error(`Target Db not found!`); - const existingTables = await varDatabaseDbHandler({ + const existingTables = (await dbHandler({ database: database.db_full_name, - queryString: `SHOW TABLES FROM ${database.db_full_name}`, - }); + query: `SHOW TABLES FROM ${database.db_full_name}`, + })) as any[]; if (!existingTables) throw new Error("No Existing Tables"); @@ -74,11 +74,10 @@ export default async function createDbSchemaFromDb({ indexes: [], }; - const tableColumns: DSQL_MYSQL_SHOW_COLUMNS_Type[] = - await varDatabaseDbHandler({ - database: database.db_full_name, - queryString: `SHOW COLUMNS FROM ${database.db_full_name}.${tableName}`, - }); + const tableColumns = (await dbHandler({ + database: database.db_full_name, + query: `SHOW COLUMNS FROM ${database.db_full_name}.${tableName}`, + })) as DSQL_MYSQL_SHOW_COLUMNS_Type[] | null; if (tableColumns) { for (let k = 0; k < tableColumns.length; k++) { @@ -112,10 +111,10 @@ export default async function createDbSchemaFromDb({ } } - const tableIndexes = await varDatabaseDbHandler({ + const tableIndexes = (await dbHandler({ database: database.db_full_name, - queryString: `SHOW INDEXES FROM ${database.db_full_name}.${tableName}`, - }); + query: `SHOW INDEXES FROM ${database.db_full_name}.${tableName}`, + })) as any[] | null; if (tableIndexes) { for (let m = 0; m < tableIndexes.length; m++) { @@ -148,6 +147,8 @@ export default async function createDbSchemaFromDb({ (col) => col.Field === Column_name )[0]; + if (!targetTableFieldObject) continue; + const existingIndexField = tableObject.indexes?.filter( (indx) => indx.indexName == Key_name ); diff --git a/package-shared/functions/backend/db/addDbEntry.ts b/package-shared/functions/backend/db/addDbEntry.ts index 6d26d9e..5505218 100644 --- a/package-shared/functions/backend/db/addDbEntry.ts +++ b/package-shared/functions/backend/db/addDbEntry.ts @@ -72,13 +72,6 @@ export default async function addDbEntry< }); } - const DB_CONN = isMaster - ? global.DSQL_DB_CONN - : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN; - const DB_RO_CONN = isMaster - ? global.DSQL_DB_CONN - : global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN; - let newData = _.cloneDeep(data); if (newData) { newData = purgeDefaultFields(newData); @@ -98,11 +91,9 @@ export default async function addDbEntry< isMaster ? "" : `\`${dbFullName}\`.` }\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`; - const duplicateValue = await connDbHandler( - DB_RO_CONN, - checkDuplicateQuery, - [duplicateColumnValue] - ); + const duplicateValue = await connDbHandler(null, checkDuplicateQuery, [ + duplicateColumnValue, + ]); if (duplicateValue?.[0] && !update) { return { @@ -200,10 +191,6 @@ export default async function addDbEntry< "DSQL: Error in parsing data keys =>", error.message ); - global.ERROR_CALLBACK?.( - `Error parsing Data Keys`, - error as Error - ); continue; } } @@ -236,7 +223,7 @@ export default async function addDbEntry< )}) VALUES (${insertValuesArray.map(() => "?").join(",")})`; const newInsert = await connDbHandler( - DB_CONN, + null, query, queryValuesArray, debug @@ -280,7 +267,7 @@ export default async function addDbEntry< console.log("batchQueryValuesArray", batchQueryValuesArray); const newInsert = await connDbHandler( - DB_CONN, + null, query, batchQueryValuesArray.flat(), debug diff --git a/package-shared/functions/backend/db/deleteDbEntry.ts b/package-shared/functions/backend/db/deleteDbEntry.ts index 9ae0b7e..24c32f6 100644 --- a/package-shared/functions/backend/db/deleteDbEntry.ts +++ b/package-shared/functions/backend/db/deleteDbEntry.ts @@ -33,10 +33,6 @@ export default async function deleteDbEntry< ? true : checkIfIsMaster({ dbContext, dbFullName }); - const DB_CONN = isMaster - ? global.DSQL_DB_CONN - : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN; - /** * Execution * @@ -46,7 +42,7 @@ export default async function deleteDbEntry< isMaster && !dbFullName ? "" : `\`${dbFullName}\`.` }\`${tableName}\` WHERE \`${identifierColumnName.toString()}\`=?`; - const deletedEntry = await connDbHandler(DB_CONN, query, [ + const deletedEntry = await connDbHandler(null, query, [ identifierValue, ]); @@ -54,8 +50,8 @@ export default async function deleteDbEntry< * Return statement */ return deletedEntry; - } catch (error) { - global.ERROR_CALLBACK?.(`Error Deleting Entry`, error as Error); + } catch (error: any) { + console.log("Error Deleting Entry =>", error.message); return null; } } diff --git a/package-shared/functions/backend/db/runQuery.ts b/package-shared/functions/backend/db/runQuery.ts index 45b34d6..a2e061a 100644 --- a/package-shared/functions/backend/db/runQuery.ts +++ b/package-shared/functions/backend/db/runQuery.ts @@ -1,5 +1,5 @@ import fullAccessDbHandler from "../fullAccessDbHandler"; -import varReadOnlyDatabaseDbHandler from "../varReadOnlyDatabaseDbHandler"; +import dbHandler from "../dbHandler"; import serverError from "../serverError"; import addDbEntry from "./addDbEntry"; import updateDbEntry from "./updateDbEntry"; @@ -18,7 +18,6 @@ type Param = { dbSchema?: import("../../../types").DSQL_DatabaseSchemaType; queryValuesArray?: (string | number)[]; tableName?: string; - forceLocal?: boolean; }; type Return = { @@ -38,7 +37,6 @@ export default async function runQuery({ tableName, debug, dbContext, - forceLocal, }: Param): Promise { /** * Declare variables @@ -77,7 +75,7 @@ export default async function runQuery({ if (typeof query === "string") { const formattedQuery = trimSql(query); - if (debug && global.DSQL_USE_LOCAL) { + if (debug) { console.log("runQuery:formattedQuery", formattedQuery); } @@ -91,18 +89,15 @@ export default async function runQuery({ } if (readOnly) { - result = await varReadOnlyDatabaseDbHandler({ - queryString: formattedQuery, - queryValuesArray: queryValuesArray?.map((vl) => String(vl)), - tableSchema, - forceLocal, + result = await dbHandler({ + query: formattedQuery, + values: queryValuesArray?.map((vl) => String(vl)), }); } else { result = await fullAccessDbHandler({ queryString: formattedQuery, queryValuesArray: queryValuesArray?.map((vl) => String(vl)), tableSchema, - forceLocal, }); } } else if (typeof query === "object") { @@ -178,7 +173,7 @@ export default async function runQuery({ message: err.message, }); - if (debug && global.DSQL_USE_LOCAL) { + if (debug) { console.log("runQuery:error", err.message); } diff --git a/package-shared/functions/backend/db/updateDbEntry.ts b/package-shared/functions/backend/db/updateDbEntry.ts index 87785db..49f8423 100644 --- a/package-shared/functions/backend/db/updateDbEntry.ts +++ b/package-shared/functions/backend/db/updateDbEntry.ts @@ -60,10 +60,6 @@ export default async function updateDbEntry< ? true : checkIfIsMaster({ dbContext, dbFullName }); - const DB_CONN = isMaster - ? global.DSQL_DB_CONN - : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN; - //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// @@ -182,7 +178,7 @@ export default async function updateDbEntry< updateValues.push(identifierValue); - const updatedEntry = await connDbHandler(DB_CONN, query, updateValues); + const updatedEntry = await connDbHandler(null, query, updateValues); /** * Return statement diff --git a/package-shared/functions/backend/dbHandler.ts b/package-shared/functions/backend/dbHandler.ts index 45bc32a..7ef9860 100644 --- a/package-shared/functions/backend/dbHandler.ts +++ b/package-shared/functions/backend/dbHandler.ts @@ -1,39 +1,53 @@ import fs from "fs"; import path from "path"; import grabDSQLConnection from "../../utils/grab-dsql-connection"; +import { DSQL_TableSchemaType } from "../../types"; +import { Connection, ConnectionConfig } from "mariadb"; -type Param = { +type Param = { query: string; values?: string[] | object; noErrorLogs?: boolean; + database?: string; + tableSchema?: DSQL_TableSchemaType; + config?: ConnectionConfig; }; /** * # Main DB Handler Function * @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database */ -export default async function dbHandler({ +export default async function dbHandler< + T extends { [k: string]: any } = { [k: string]: any } +>({ query, values, noErrorLogs, -}: Param): Promise { - const CONNECTION = await grabDSQLConnection(); - - let results; + database, + config, +}: Param): Promise { + let CONNECTION: Connection | undefined; + let results: T[] | T | null; try { + CONNECTION = await grabDSQLConnection({ database, config }); + if (query && values) { - results = await CONNECTION.query(query, values); + const queryResults = await CONNECTION.query(query, values); + results = queryResults[0]; } else { - results = await CONNECTION.query(query); + const queryResults = await CONNECTION.query(query); + results = queryResults[0]; } } catch (error: any) { - if (!noErrorLogs) { - global.ERROR_CALLBACK?.(`DB Handler Error...`, error as Error); - } + console.log("Connection Info =>", CONNECTION?.info); - if (process.env.FIRST_RUN) { - return null; + if ( + error.message && + typeof error.message == "string" && + error.message.match(/Access denied for user.*password/i) + ) { + throw new Error("Authentication Failed!"); } if (!noErrorLogs) { @@ -58,11 +72,7 @@ export default async function dbHandler({ } if (results) { - if (Array.isArray(results)) { - return Array.from(results); - } else { - return results; - } + return results; } else { return null; } diff --git a/package-shared/functions/backend/fullAccessDbHandler.ts b/package-shared/functions/backend/fullAccessDbHandler.ts index 52097af..67f9ba1 100644 --- a/package-shared/functions/backend/fullAccessDbHandler.ts +++ b/package-shared/functions/backend/fullAccessDbHandler.ts @@ -6,7 +6,6 @@ type Param = { queryString: string; tableSchema?: import("../../types").DSQL_TableSchemaType | null; queryValuesArray?: string[]; - forceLocal?: boolean; }; /** @@ -16,7 +15,6 @@ export default async function fullAccessDbHandler({ queryString, tableSchema, queryValuesArray, - forceLocal, }: Param) { /** * Declare variables @@ -25,23 +23,19 @@ export default async function fullAccessDbHandler({ */ let results; - const DB_CONN = forceLocal - ? global.DSQL_DB_CONN - : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN; - /** * Fetch from db * * @description Fetch data from db if no cache */ try { - results = await connDbHandler(DB_CONN, queryString, queryValuesArray); + results = await connDbHandler(null, queryString, queryValuesArray); //////////////////////////////////////// } catch (error: any) { //////////////////////////////////////// - global.ERROR_CALLBACK?.(`Full Access DB Handler Error`, error as Error); + console.log("Full Access DB Handler Error =>", error.message); serverError({ component: "fullAccessDbHandler", diff --git a/package-shared/functions/backend/handle-backup.ts b/package-shared/functions/backend/handle-backup.ts new file mode 100644 index 0000000..55ecdd9 --- /dev/null +++ b/package-shared/functions/backend/handle-backup.ts @@ -0,0 +1,61 @@ +import dbGrabUserResource from "@/src/functions/db/grab-user-resource"; +import { DSQL_DATASQUIREL_BACKUPS } from "@/package-shared/types/dsql"; +import suAddBackup from "@/src/functions/api/su/add-backup"; +import grabConfig from "@/package-shared/utils/backend/config/grab-config"; +import deleteBackup from "@/src/functions/api/su/add-backup/delete-backup"; + +type HandleBackupParams = { + appBackup?: boolean; + userId?: string | number; +}; + +export default async function handleBackup({ + appBackup, + userId, +}: HandleBackupParams) { + const { appConfig } = grabConfig(); + + const maxBackups = appConfig.main.max_backups?.value || 20; + + const { count: existingAppBackupsCount } = + await dbGrabUserResource({ + tableName: "backups", + isSuperUser: true, + query: { + query: { + user_id: { + nullValue: appBackup ? true : undefined, + value: appBackup ? undefined : String(userId), + }, + }, + }, + countOnly: true, + }); + + if (existingAppBackupsCount && existingAppBackupsCount >= maxBackups) { + const { single: oldestAppBackup } = + await dbGrabUserResource({ + tableName: "backups", + isSuperUser: true, + query: { + query: { + user_id: { + nullValue: appBackup ? true : undefined, + value: appBackup ? undefined : String(userId), + }, + }, + order: { + field: "id", + strategy: "ASC", + }, + limit: 1, + }, + }); + + if (oldestAppBackup?.id) { + await deleteBackup({ backup: oldestAppBackup }); + } + } + + await suAddBackup({ targetUserId: userId }); +} diff --git a/package-shared/functions/backend/handleNodemailer.ts b/package-shared/functions/backend/handleNodemailer.ts index df667cd..3bb067b 100644 --- a/package-shared/functions/backend/handleNodemailer.ts +++ b/package-shared/functions/backend/handleNodemailer.ts @@ -8,6 +8,7 @@ export type HandleNodemailerParam = Mail.Options & { senderName?: string; alias?: string | null; options?: SMTPTransport.Options; + verifyOnly?: boolean; }; /** @@ -15,7 +16,7 @@ export type HandleNodemailerParam = Mail.Options & { */ export default async function handleNodemailer( params: HandleNodemailerParam -): Promise { +): Promise { if ( !process.env.DSQL_MAIL_HOST || !process.env.DSQL_MAIL_EMAIL || @@ -28,13 +29,24 @@ export default async function handleNodemailer( host: process.env.DSQL_MAIL_HOST, port: 465, secure: true, + ...params.options, auth: { user: process.env.DSQL_MAIL_EMAIL, pass: process.env.DSQL_MAIL_PASSWORD, + ...params.options?.auth, }, - ...params.options, }); + if (params.verifyOnly) { + const isMailServerValid = await transporter.verify(); + + if (!isMailServerValid) { + return false; + } + + return true; + } + const sender = (() => { if (params.alias?.match(/support/i)) return process.env.DSQL_MAIL_EMAIL; return process.env.DSQL_MAIL_EMAIL; diff --git a/package-shared/functions/backend/su-db-handler.ts b/package-shared/functions/backend/su-db-handler.ts index b2c9056..1863c3d 100644 --- a/package-shared/functions/backend/su-db-handler.ts +++ b/package-shared/functions/backend/su-db-handler.ts @@ -26,6 +26,8 @@ export default async function suDbHandler({ supportBigNumbers: true, bigNumberStrings: false, dateStrings: true, + bigIntAsNumber: true, + metaAsArray: true, }); // const connection = mariadb.createPool({ diff --git a/package-shared/functions/backend/updateUsersTableSchema.ts b/package-shared/functions/backend/updateUsersTableSchema.ts index ec05d8d..44891b9 100644 --- a/package-shared/functions/backend/updateUsersTableSchema.ts +++ b/package-shared/functions/backend/updateUsersTableSchema.ts @@ -7,7 +7,7 @@ import { } from "../../shell/createDbFromSchema/grab-required-database-schemas"; type Param = { - userId: number | string; + userId?: number | string; database: string; newFields?: string[]; newPayload?: { [s: string]: any }; @@ -66,11 +66,7 @@ export default async function updateUsersTableSchema({ return `Done!`; } catch (error: any) { - global.ERROR_CALLBACK?.( - `Error Updating User Table Schema`, - error as Error - ); - + console.log("Error Updating User Table Schema =>", error.message); serverError({ component: "addUsersTableToDb", message: error.message, diff --git a/package-shared/functions/backend/user-db-handler.ts b/package-shared/functions/backend/user-db-handler.ts index 378f196..527711e 100644 --- a/package-shared/functions/backend/user-db-handler.ts +++ b/package-shared/functions/backend/user-db-handler.ts @@ -34,6 +34,8 @@ export default async function userDbHandler({ supportBigNumbers: true, bigNumberStrings: false, dateStrings: true, + bigIntAsNumber: true, + metaAsArray: true, }); const results = await connDbHandler(connection, query); diff --git a/package-shared/functions/backend/varDatabaseDbHandler.ts b/package-shared/functions/backend/varDatabaseDbHandler.ts deleted file mode 100644 index be79fda..0000000 --- a/package-shared/functions/backend/varDatabaseDbHandler.ts +++ /dev/null @@ -1,74 +0,0 @@ -import parseDbResults from "./parseDbResults"; -import serverError from "./serverError"; -import grabDSQLConnection from "../../utils/grab-dsql-connection"; -import connDbHandler from "../../utils/db/conn-db-handler"; -import { DSQL_TableSchemaType } from "../../types"; - -type Param = { - queryString: string; - queryValuesArray?: any[]; - database?: string; - tableSchema?: DSQL_TableSchemaType; - debug?: boolean; -}; - -/** - * # DB handler for specific database - */ -export default async function varDatabaseDbHandler({ - queryString, - queryValuesArray, - database, - tableSchema, - debug, -}: Param): Promise { - let CONNECTION = await grabDSQLConnection({ fa: true }); - if (global.DSQL_USE_LOCAL) - CONNECTION = await grabDSQLConnection({ local: true }); - if (database?.match(/^datasquirel$/)) - CONNECTION = await grabDSQLConnection(); - - if (debug) { - console.log(`varDatabaseDbHandler:query:`, queryString); - console.log(`varDatabaseDbHandler:values:`, queryValuesArray); - } - - let results = await connDbHandler( - CONNECTION, - queryString, - queryValuesArray - ); - - if (debug) { - console.log(`varDatabaseDbHandler:results:`, results); - } - - if (results && tableSchema) { - try { - const unparsedResults = results; - const parsedResults = await parseDbResults({ - unparsedResults: unparsedResults, - tableSchema: tableSchema, - }); - return parsedResults; - } catch (error: any) { - console.log( - "\x1b[31mvarDatabaseDbHandler ERROR\x1b[0m =>", - database, - error - ); - - global.ERROR_CALLBACK?.(`VarDb Handler Error`, error as Error); - - serverError({ - component: "varDatabaseDbHandler/lines-52-53", - message: error.message, - }); - return null; - } - } else if (results) { - return results; - } else { - return null; - } -} diff --git a/package-shared/functions/backend/varReadOnlyDatabaseDbHandler.ts b/package-shared/functions/backend/varReadOnlyDatabaseDbHandler.ts deleted file mode 100644 index a4e1105..0000000 --- a/package-shared/functions/backend/varReadOnlyDatabaseDbHandler.ts +++ /dev/null @@ -1,53 +0,0 @@ -import serverError from "./serverError"; -import parseDbResults from "./parseDbResults"; -import connDbHandler from "../../utils/db/conn-db-handler"; - -type Param = { - queryString: string; - queryValuesArray?: string[]; - tableSchema?: import("../../types").DSQL_TableSchemaType; - forceLocal?: boolean; -}; - -/** - * # Read Only Db Handler with Varaibles - * @returns - */ -export default async function varReadOnlyDatabaseDbHandler({ - queryString, - queryValuesArray, - tableSchema, - forceLocal, -}: Param) { - let results; - - const DB_CONN = forceLocal - ? global.DSQL_DB_CONN - : global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN; - - try { - results = await connDbHandler(DB_CONN, queryString, queryValuesArray); - } catch (error: any) { - serverError({ - component: "varReadOnlyDatabaseDbHandler", - message: error.message, - noMail: true, - }); - - global.ERROR_CALLBACK?.(`VarReadOnlyDB Handler Error`, error as Error); - - return error.message; - } finally { - } - - if (results) { - const unparsedResults = results; - const parsedResults = await parseDbResults({ - unparsedResults: unparsedResults, - tableSchema: tableSchema, - }); - return parsedResults; - } else { - return null; - } -} diff --git a/package-shared/functions/dsql/decrypt.ts b/package-shared/functions/dsql/decrypt.ts index 99f7c20..80c49fb 100644 --- a/package-shared/functions/dsql/decrypt.ts +++ b/package-shared/functions/dsql/decrypt.ts @@ -8,6 +8,7 @@ type Param = { encryptedString: string; encryptionKey?: string; encryptionSalt?: string; + debug?: boolean; }; /** @@ -17,9 +18,10 @@ export default function decrypt({ encryptedString, encryptionKey, encryptionSalt, + debug, }: Param) { if (!encryptedString?.match(/./)) { - console.log("Encrypted string is invalid"); + if (debug) console.log("Encrypted string is invalid"); return encryptedString; } @@ -32,12 +34,12 @@ export default function decrypt({ } = grabKeys({ encryptionKey }); if (!encrptKey?.match(/.{8,}/)) { - console.log("Decrption key is invalid"); + if (debug) console.log("Decrption key is invalid"); return encryptedString; } if (!salt?.match(/.{8,}/)) { - console.log("Decrption salt is invalid"); + if (debug) console.log("Decrption salt is invalid"); return encryptedString; } @@ -51,9 +53,9 @@ export default function decrypt({ decrypted += decipher.final("utf8"); return decrypted; } catch (error: any) { - console.log("Error in decrypting =>", error.message); - console.log("encryptedString =>", encryptedString); - global.ERROR_CALLBACK?.(`Error Decrypting data`, error as Error); + if (debug) { + console.log("Error Decrypting data", error as Error); + } return encryptedString; } } diff --git a/package-shared/functions/dsql/encrypt.ts b/package-shared/functions/dsql/encrypt.ts index 7ba6699..be09530 100644 --- a/package-shared/functions/dsql/encrypt.ts +++ b/package-shared/functions/dsql/encrypt.ts @@ -53,7 +53,6 @@ export default function encrypt({ return encrypted; } catch (error: any) { console.log("Error in encrypting =>", error.message); - global.ERROR_CALLBACK?.(`Error Encrypting Data`, error as Error); return data; } } diff --git a/package-shared/functions/email/fns/validate-email.ts b/package-shared/functions/email/fns/validate-email.ts index a55b50c..db7deb8 100644 --- a/package-shared/functions/email/fns/validate-email.ts +++ b/package-shared/functions/email/fns/validate-email.ts @@ -37,6 +37,13 @@ export default async function validateEmail({ if (welcomeEmailOptions) { const welcomeEmail = await handleNodemailer(welcomeEmailOptions); + if (typeof welcomeEmail == "boolean") { + return { + isValid: false, + message: "Email verification failed.", + }; + } + if (!welcomeEmail?.accepted?.[0]) { return { isValid: false, diff --git a/package-shared/functions/web-app/db/grab-user-resource/index.ts b/package-shared/functions/web-app/db/grab-user-resource/index.ts index 47fae8e..74ea8c4 100644 --- a/package-shared/functions/web-app/db/grab-user-resource/index.ts +++ b/package-shared/functions/web-app/db/grab-user-resource/index.ts @@ -1,21 +1,9 @@ -import { DsqlCrudQueryObject } from "../../../../types"; -import { DsqlTables } from "../../../../types/dsql"; +import { GrabUserResourceParams } from "../../../../types"; import dsqlCrud from "../../../../utils/data-fetching/crud"; import query from "./query"; import _ from "lodash"; import _n from "../../../../utils/numberfy"; -export type GrabUserResourceParams = { - query?: DsqlCrudQueryObject; - userId?: string | number; - tableName: (typeof DsqlTables)[number]; - count?: boolean; - countOnly?: boolean; - noLimit?: boolean; - isSuperUser?: boolean; - targetID?: string | number; -}; - export default async function dbGrabUserResource< T extends { [k: string]: any } = any >(params: GrabUserResourceParams) { @@ -39,6 +27,6 @@ export default async function dbGrabUserResource< error: result?.error, msg: result?.msg, }, - count: _n(result?.count), + count: typeof result?.count == "number" ? result.count : undefined, }; } diff --git a/package-shared/functions/web-app/db/grab-user-resource/query.ts b/package-shared/functions/web-app/db/grab-user-resource/query.ts index 5a9a358..5971162 100644 --- a/package-shared/functions/web-app/db/grab-user-resource/query.ts +++ b/package-shared/functions/web-app/db/grab-user-resource/query.ts @@ -1,6 +1,5 @@ -import { GrabUserResourceParams } from "."; import _ from "lodash"; -import { DsqlCrudQueryObject } from "../../../../types"; +import { DsqlCrudQueryObject, GrabUserResourceParams } from "../../../../types"; import ResourceLimits from "../../../../dict/resource-limits"; import _n from "../../../../utils/numberfy"; diff --git a/package-shared/shell/checkDb.ts b/package-shared/shell/checkDb.ts index e94ea16..76a84c8 100644 --- a/package-shared/shell/checkDb.ts +++ b/package-shared/shell/checkDb.ts @@ -16,13 +16,12 @@ import grabDSQLConnection from "../utils/grab-dsql-connection"; const CONNECTION = await grabDSQLConnection(); try { - const result = await CONNECTION.query( + const [result] = await CONNECTION.query( "SELECT id,first_name,last_name FROM users LIMIT 3" ); console.log("Connection Query Success =>", result); } catch (error: any) { console.log("Connection query ERROR =>", error.message); - global.ERROR_CALLBACK?.(`Error Checking DB`, error as Error); } finally { await CONNECTION?.end(); process.exit(); diff --git a/package-shared/shell/createDbFromSchema/check-db-record.ts b/package-shared/shell/createDbFromSchema/check-db-record.ts index 371bd78..71ab602 100644 --- a/package-shared/shell/createDbFromSchema/check-db-record.ts +++ b/package-shared/shell/createDbFromSchema/check-db-record.ts @@ -1,9 +1,9 @@ -import varDatabaseDbHandler from "../utils/varDatabaseDbHandler"; -import { DSQL_DatabaseSchemaType, PostInsertReturn } from "../../types"; +import { DSQL_DatabaseSchemaType } from "../../types"; import { DSQL_DATASQUIREL_USER_DATABASES } from "../../types/dsql"; import numberfy from "../../utils/numberfy"; import addDbEntry from "../../functions/backend/db/addDbEntry"; import updateDbEntry from "../../functions/backend/db/updateDbEntry"; +import dbHandler from "../../functions/backend/dbHandler"; type Param = { userId?: number | string | null; @@ -35,10 +35,10 @@ export default async function checkDbRecordCreateDbSchema({ } = dbSchema; let recordedDbEntryArray = userId - ? await varDatabaseDbHandler({ - queryString: `SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?`, - queryValuesArray: [dbFullName || "NULL"], - }) + ? ((await dbHandler({ + query: `SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?`, + values: [dbFullName || "NULL"], + })) as any[] | null) : undefined; let recordedDbEntry: DSQL_DATASQUIREL_USER_DATABASES | undefined = @@ -65,10 +65,10 @@ export default async function checkDbRecordCreateDbSchema({ }); if (newDbEntry.payload?.insertId) { - recordedDbEntryArray = await varDatabaseDbHandler({ - queryString: `SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?`, - queryValuesArray: [dbFullName || "NULL"], - }); + recordedDbEntryArray = (await dbHandler({ + query: `SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?`, + values: [dbFullName || "NULL"], + })) as any[] | null; recordedDbEntry = recordedDbEntryArray?.[0]; } } else if (recordedDbEntry?.id) { @@ -82,11 +82,8 @@ export default async function checkDbRecordCreateDbSchema({ } return recordedDbEntry; - } catch (error) { - global.ERROR_CALLBACK?.( - `Error Checking DB Record on Creating Schema`, - error as Error - ); + } catch (error: any) { + console.log("Error =\u003e", error.message); return undefined; } } diff --git a/package-shared/shell/createDbFromSchema/check-table-record.ts b/package-shared/shell/createDbFromSchema/check-table-record.ts index c295407..0450605 100644 --- a/package-shared/shell/createDbFromSchema/check-table-record.ts +++ b/package-shared/shell/createDbFromSchema/check-table-record.ts @@ -1,4 +1,3 @@ -import varDatabaseDbHandler from "../utils/varDatabaseDbHandler"; import { DSQL_DatabaseSchemaType, DSQL_TableSchemaType, @@ -12,6 +11,7 @@ import { import sqlGenerator from "../../functions/dsql/sql/sql-generator"; import numberfy from "../../utils/numberfy"; import addDbEntry from "../../functions/backend/db/addDbEntry"; +import dbHandler from "../../functions/backend/dbHandler"; type Param = { userId?: number | string | null; @@ -54,10 +54,10 @@ export default async function checkTableRecordCreateDbSchema({ }); let recordedTableEntryArray = userId - ? await varDatabaseDbHandler({ - queryString: queryObj?.string || "", - queryValuesArray: queryObj?.values, - }) + ? ((await dbHandler({ + query: queryObj?.string || "", + values: queryObj?.values, + })) as any[] | null) : undefined; let recordedTableEntry: @@ -98,21 +98,18 @@ export default async function checkTableRecordCreateDbSchema({ }); if (newTableRecordEntry.payload?.insertId) { - recordedTableEntryArray = await varDatabaseDbHandler({ - queryString: queryObj?.string || "", - queryValuesArray: queryObj?.values, - }); + recordedTableEntryArray = (await dbHandler({ + query: queryObj?.string || "", + values: queryObj?.values, + })) as any[] | null; recordedTableEntry = recordedTableEntryArray?.[0]; } } return recordedTableEntry; - } catch (error) { - global.ERROR_CALLBACK?.( - `Error Checking Table Record on Creating Schema`, - error as Error - ); + } catch (error: any) { + console.log("Error =\u003e", error.message); return undefined; } } diff --git a/package-shared/shell/createDbFromSchema/handle-indexes.ts b/package-shared/shell/createDbFromSchema/handle-indexes.ts index c32e42e..050f45f 100644 --- a/package-shared/shell/createDbFromSchema/handle-indexes.ts +++ b/package-shared/shell/createDbFromSchema/handle-indexes.ts @@ -1,9 +1,9 @@ -import varDatabaseDbHandler from "../utils/varDatabaseDbHandler"; import { DSQL_IndexSchemaType, DSQL_MYSQL_SHOW_INDEXES_Type, } from "../../types"; import grabDSQLSchemaIndexComment from "../utils/grab-dsql-schema-index-comment"; +import dbHandler from "../../functions/backend/dbHandler"; type Param = { tableName: string; @@ -22,10 +22,9 @@ export default async function handleIndexescreateDbFromSchema({ tableName, indexes, }: Param) { - const allExistingIndexes: DSQL_MYSQL_SHOW_INDEXES_Type[] = - await varDatabaseDbHandler({ - queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``, - }); + const allExistingIndexes = (await dbHandler({ + query: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``, + })) as DSQL_MYSQL_SHOW_INDEXES_Type[]; for (let g = 0; g < indexes.length; g++) { const { indexType, indexName, indexTableFields, alias } = indexes[g]; @@ -56,12 +55,11 @@ export default async function handleIndexescreateDbFromSchema({ "," )}) COMMENT '${grabDSQLSchemaIndexComment()} ${indexName}'`; - const addIndex = await varDatabaseDbHandler({ queryString }); + const addIndex = await dbHandler({ query: queryString }); } } - const allExistingIndexesAfterUpdate: DSQL_MYSQL_SHOW_INDEXES_Type[] = - await varDatabaseDbHandler({ - queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``, - }); + const allExistingIndexesAfterUpdate = (await dbHandler({ + query: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\``, + })) as DSQL_MYSQL_SHOW_INDEXES_Type[]; } diff --git a/package-shared/shell/createDbFromSchema/index.ts b/package-shared/shell/createDbFromSchema/index.ts index 917a5cb..155011d 100644 --- a/package-shared/shell/createDbFromSchema/index.ts +++ b/package-shared/shell/createDbFromSchema/index.ts @@ -1,5 +1,3 @@ -import noDatabaseDbHandler from "../utils/noDatabaseDbHandler"; -import varDatabaseDbHandler from "../utils/varDatabaseDbHandler"; import createTable from "../utils/createTable"; import updateTable from "../utils/updateTable"; import { DSQL_DatabaseSchemaType } from "../../types"; @@ -64,19 +62,19 @@ export default async function createDbFromSchema({ console.log(`Handling database => ${dbFullName}`); - const dbCheck: any = await noDatabaseDbHandler( - `SELECT SCHEMA_NAME AS dbFullName FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${dbFullName}'` - ); + const dbCheck: any = await dbHandler({ + query: `SELECT SCHEMA_NAME AS dbFullName FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${dbFullName}'`, + }); if (!dbCheck?.[0]?.dbFullName) { - const newDatabase = await noDatabaseDbHandler( - `CREATE DATABASE IF NOT EXISTS \`${dbFullName}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin` - ); + const newDatabase = await dbHandler({ + query: `CREATE DATABASE IF NOT EXISTS \`${dbFullName}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`, + }); } - const allTables: any = await noDatabaseDbHandler( - `SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='${dbFullName}'` - ); + const allTables = (await dbHandler({ + query: `SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='${dbFullName}'`, + })) as any[] | undefined; let recordedDbEntry = await checkDbRecordCreateDbSchema({ dbSchema: database, @@ -84,59 +82,32 @@ export default async function createDbFromSchema({ isMain, }); - for (let tb = 0; tb < allTables.length; tb++) { - const { TABLE_NAME } = allTables[tb]; + if (allTables?.length) { + for (let tb = 0; tb < allTables.length; tb++) { + const { TABLE_NAME } = allTables[tb]; - const targetTableSchema = tables.find( - (_table) => _table.tableName === TABLE_NAME - ); - - /** - * @description Check if TABLE_NAME is part of the tables contained - * in the user schema JSON. If it's not, the table is either deleted - * or the table name has been recently changed - */ - if (!targetTableSchema) { - console.log( - `Dropping Table ${TABLE_NAME} from ${dbFullName}` + const targetTableSchema = tables.find( + (_table) => _table.tableName === TABLE_NAME ); - await varDatabaseDbHandler({ - queryString: `DROP TABLE \`${dbFullName}\`.\`${TABLE_NAME}\``, - }); - const deleteTableEntry = await dbHandler({ - query: `DELETE FROM datasquirel.user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`, - values: [userId, dbSlug, TABLE_NAME], - }); + /** + * @description Check if TABLE_NAME is part of the tables contained + * in the user schema JSON. If it's not, the table is either deleted + * or the table name has been recently changed + */ + if (!targetTableSchema) { + console.log( + `Dropping Table ${TABLE_NAME} from ${dbFullName}` + ); + await dbHandler({ + query: `DROP TABLE \`${dbFullName}\`.\`${TABLE_NAME}\``, + }); - // const oldTable = tables.find( - // (_table) => - // _table.tableNameOld && - // _table.tableNameOld === TABLE_NAME - // ); - - // /** - // * @description Check if this table has been recently renamed. Rename - // * table id true. Drop table if false - // */ - // if (oldTable) { - // console.log("Renaming Table"); - // await varDatabaseDbHandler({ - // queryString: `RENAME TABLE \`${dbFullName}\`.\`${oldTable.tableNameOld}\` TO \`${oldTable.tableName}\``, - // }); - // } else { - // console.log( - // `Dropping Table ${TABLE_NAME} from ${dbFullName}` - // ); - // await varDatabaseDbHandler({ - // queryString: `DROP TABLE \`${dbFullName}\`.\`${TABLE_NAME}\``, - // }); - - // const deleteTableEntry = await dbHandler({ - // query: `DELETE FROM datasquirel.user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`, - // values: [userId, dbSlug, TABLE_NAME], - // }); - // } + const deleteTableEntry = await dbHandler({ + query: `DELETE FROM datasquirel.user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?`, + values: [userId, dbSlug, TABLE_NAME], + }); + } } } @@ -156,8 +127,8 @@ export default async function createDbFromSchema({ * @description Check if table exists * @type {any} */ - const tableCheck: any = await varDatabaseDbHandler({ - queryString: ` + const tableCheck: any = await dbHandler({ + query: ` SELECT EXISTS ( SELECT TABLE_NAME @@ -167,7 +138,7 @@ export default async function createDbFromSchema({ TABLE_SCHEMA = ? AND TABLE_NAME = ? ) AS tableExists`, - queryValuesArray: [dbFullName, table.tableName], + values: [dbFullName, table.tableName], }); if (tableCheck && tableCheck[0]?.tableExists > 0) { diff --git a/package-shared/shell/encodingUpdate.ts b/package-shared/shell/encodingUpdate.ts index c7a3850..46f114d 100644 --- a/package-shared/shell/encodingUpdate.ts +++ b/package-shared/shell/encodingUpdate.ts @@ -1,23 +1,11 @@ require("dotenv").config({ path: "./../.env" }); -import varDatabaseDbHandler from "../functions/backend/varDatabaseDbHandler"; +import dbHandler from "../functions/backend/dbHandler"; -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ - -/** - * Grab Schema - * - * @description Grab Schema - */ -varDatabaseDbHandler({ - queryString: `SELECT user_database_tables.*,user_databases.db_full_name FROM user_database_tables JOIN user_databases ON user_database_tables.db_id=user_databases.id`, +dbHandler({ + query: `SELECT user_database_tables.*,user_databases.db_full_name FROM user_database_tables JOIN user_databases ON user_database_tables.db_id=user_databases.id`, database: "datasquirel", -}).then(async (tables) => { +}).then(async (tables: any) => { for (let i = 0; i < tables.length; i++) { const table = tables[i]; const { @@ -30,16 +18,16 @@ varDatabaseDbHandler({ table_description, } = table; - const tableInfo = await varDatabaseDbHandler({ - queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`, + const tableInfo = await dbHandler({ + query: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`, }); - const updateDbCharset = await varDatabaseDbHandler({ - queryString: `ALTER DATABASE ${db_full_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;`, + const updateDbCharset = await dbHandler({ + query: `ALTER DATABASE ${db_full_name} CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;`, }); - const updateEncoding = await varDatabaseDbHandler({ - queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`, + const updateEncoding = await dbHandler({ + query: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`, }); } diff --git a/package-shared/shell/grantFullPriviledges.ts b/package-shared/shell/grantFullPriviledges.ts deleted file mode 100644 index cc7b9a4..0000000 --- a/package-shared/shell/grantFullPriviledges.ts +++ /dev/null @@ -1,44 +0,0 @@ -require("dotenv").config({ path: "./../.env" }); -import { AppNames } from "../dict/app-names"; -import serverError from "../functions/backend/serverError"; -import noDatabaseDbHandler from "./utils/noDatabaseDbHandler"; - -/** - * # Create Database From Schema - */ -async function grantFullPrivileges({ userId }: { userId: string | null }) { - /** - * Grab Schema - * - * @description Grab Schema - */ - try { - const defaultMariadbUserHost = process.env.DSQL_DB_HOST || "127.0.0.1"; - - const allDatabases = await noDatabaseDbHandler(`SHOW DATABASES`); - - const datasquirelUserDatabases = allDatabases.filter((database: any) => - database.Database.match(new RegExp(`^${AppNames["DsqlDbPrefix"]}`)) - ); - - for (let i = 0; i < datasquirelUserDatabases.length; i++) { - const datasquirelUserDatabase = datasquirelUserDatabases[i]; - const { Database } = datasquirelUserDatabase; - } - - const flushPriviledged = await noDatabaseDbHandler(`FLUSH PRIVILEGES`); - } catch (error: any) { - serverError({ - component: "shell/grantDbPriviledges/main-catch-error", - message: error.message, - user: { id: userId }, - }); - } - - process.exit(); -} - -const userArg = process.argv[process.argv.indexOf("--user")]; -const externalUser = process.argv[process.argv.indexOf("--user") + 1]; - -grantFullPrivileges({ userId: userArg ? externalUser : null }); diff --git a/package-shared/shell/mariadb-users/handleGrants.ts b/package-shared/shell/mariadb-users/handleGrants.ts deleted file mode 100644 index 97ef90a..0000000 --- a/package-shared/shell/mariadb-users/handleGrants.ts +++ /dev/null @@ -1,101 +0,0 @@ -import noDatabaseDbHandler from "../utils/noDatabaseDbHandler"; - -export interface GrantType { - database: string; - table: string; - privileges: string[]; -} - -type Param = { - username?: string; - host?: string; - grants?: GrantType[]; - userId: string; -}; - -/** - * # Handle Grants for Users - */ -export default async function handleGrants({ - username, - host, - grants, - userId, -}: Param): Promise { - let success = false; - - console.log(`Handling Grants for User =>`, username, host); - - if (!username) { - console.log(`No username provided.`); - return success; - } - - if (!host) { - console.log( - `No Host provided. \x1b[35m\`--host\`\x1b[0m flag is required` - ); - return success; - } - - if (!grants) { - console.log(`No grants Array provided.`); - return success; - } - - try { - const existingUser = await noDatabaseDbHandler( - `SELECT * FROM mysql.user WHERE User = '${username}' AND Host = '${host}'` - ); - - const isUserExisting = Boolean(existingUser?.[0]?.User); - - if (isUserExisting) { - const userGrants = await noDatabaseDbHandler( - `SHOW GRANTS FOR '${username}'@'${host}'` - ); - - for (let i = 0; i < userGrants.length; i++) { - const grantObject = userGrants[i]; - const grant = grantObject?.[Object.keys(grantObject)[0]]; - - if (grant?.match(/GRANT .* PRIVILEGES ON .* TO/)) { - const revokeGrantText = grant - .replace(/GRANT/, "REVOKE") - .replace(/ TO /, " FROM "); - - const revokePrivilege = await noDatabaseDbHandler( - revokeGrantText - ); - } - } - - const grantsArray: GrantType[] = grants; - - for (let i = 0; i < grantsArray.length; i++) { - const grantObject = grantsArray[i]; - const { database, table, privileges } = grantObject; - - const tableText = table == "*" ? "*" : `\`${table}\``; - const databaseText = - database == "*" - ? `\`${process.env.DSQL_USER_DB_PREFIX}${userId}_%\`` - : `\`${database}\``; - - const privilegesText = privileges.includes("ALL") - ? "ALL PRIVILEGES" - : privileges.join(", "); - - const grantText = `GRANT ${privilegesText} ON ${databaseText}.${tableText} TO '${username}'@'${host}'`; - - const grantPriviledge = await noDatabaseDbHandler(grantText); - } - } - - success = true; - } catch (/** @type {any} */ error: any) { - console.log(`Error in adding SQL user =>`, error.message); - } - - return success; -} diff --git a/package-shared/shell/mariadb-users/resetSQLPasswords.ts b/package-shared/shell/mariadb-users/resetSQLPasswords.ts deleted file mode 100644 index 4297b89..0000000 --- a/package-shared/shell/mariadb-users/resetSQLPasswords.ts +++ /dev/null @@ -1,75 +0,0 @@ -require("dotenv").config({ path: "../../.env" }); -import generator from "generate-password"; -import noDatabaseDbHandler from "../utils/noDatabaseDbHandler"; -import dbHandler from "../../functions/backend/dbHandler"; -import encrypt from "../../functions/dsql/encrypt"; -import grabSQLKeyName from "../../utils/grab-sql-key-name"; - -/** - * # Reset SQL Passwords - */ -async function resetSQLCredentialsPasswords() { - const users = (await dbHandler({ - query: `SELECT * FROM users`, - })) as any[]; - - if (!users) { - process.exit(); - } - - for (let i = 0; i < users.length; i++) { - const user = users[i]; - - if (!user) continue; - - try { - const maridbUsers = (await dbHandler({ - query: `SELECT * FROM mysql.user WHERE User = '${grabSQLKeyName( - { type: "user", userId: user.id } - )}'`, - })) as any[]; - - for (let j = 0; j < maridbUsers.length; j++) { - const { User, Host } = maridbUsers[j]; - - const password = generator.generate({ - length: 16, - numbers: true, - symbols: true, - uppercase: true, - exclude: "*#.'`\"", - }); - - const encryptedPassword = encrypt({ - data: password, - encryptionKey: process.env.DSQL_ENCRYPTION_PASSWORD, - encryptionSalt: process.env.DSQL_ENCRYPTION_SALT, - }); - - await noDatabaseDbHandler( - `SET PASSWORD FOR '${User}'@'${Host}' = PASSWORD('${password}')` - ); - - if (user.mariadb_user == User && user.mariadb_host == Host) { - const updateUser = await dbHandler({ - query: `UPDATE users SET mariadb_pass = ? WHERE id = ?`, - values: [encryptedPassword, user.id], - }); - } - - console.log( - `User ${user.id}: ${user.first_name} ${user.last_name} Password Updated successfully added.` - ); - } - } catch (error: any) { - global.ERROR_CALLBACK?.( - `Error Resetting MariaDB User Password`, - error as Error - ); - } - } - - process.exit(); -} - -resetSQLCredentialsPasswords(); diff --git a/package-shared/shell/mariadb-users/users/create-user.ts b/package-shared/shell/mariadb-users/users/create-user.ts index e4a28da..2a725e1 100644 --- a/package-shared/shell/mariadb-users/users/create-user.ts +++ b/package-shared/shell/mariadb-users/users/create-user.ts @@ -3,7 +3,7 @@ require("dotenv").config({ path: "../../../.env" }); import fs from "fs"; import { execSync } from "child_process"; import EJSON from "../../../utils/ejson"; -import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER"; +import dbHandler from "../../../functions/backend/dbHandler"; import addDbEntry from "../../../functions/backend/db/addDbEntry"; import addMariadbUser from "../../../functions/backend/addMariadbUser"; import updateDbEntry from "../../../functions/backend/db/updateDbEntry"; @@ -63,9 +63,9 @@ async function createUser() { password: password, }); - let existingUser = await DB_HANDLER( - `SELECT * FROM users WHERE email='${email}'` - ); + let existingUser = (await dbHandler({ + query: `SELECT * FROM users WHERE email='${email}'`, + })) as any[]; if (existingUser?.[0]) { console.log("User Exists"); @@ -170,7 +170,7 @@ async function createUser() { return true; } catch (error: any) { - global.ERROR_CALLBACK?.(`Error Creating User`, error as Error); + console.log("Error =\u003e", error.message); return false; } } diff --git a/package-shared/shell/mariadb-users/users/update-user.ts b/package-shared/shell/mariadb-users/users/update-user.ts index dc4dc0e..49e003e 100644 --- a/package-shared/shell/mariadb-users/users/update-user.ts +++ b/package-shared/shell/mariadb-users/users/update-user.ts @@ -56,7 +56,7 @@ async function createUser() { return true; } catch (error: any) { - global.ERROR_CALLBACK?.(`Error Updating User`, error as Error); + console.log("Error =\u003e", error.message); return false; } } diff --git a/package-shared/shell/recoverMainJsonFromDb.ts b/package-shared/shell/recoverMainJsonFromDb.ts index 3355a9f..ec2c1a7 100644 --- a/package-shared/shell/recoverMainJsonFromDb.ts +++ b/package-shared/shell/recoverMainJsonFromDb.ts @@ -1,7 +1,6 @@ import fs from "fs"; require("dotenv").config({ path: "./../.env" }); -import varDatabaseDbHandler from "../functions/backend/varDatabaseDbHandler"; -import DB_HANDLER from "../utils/backend/global-db/DB_HANDLER"; +import dbHandler from "../functions/backend/dbHandler"; const userId = process.argv.indexOf("--userId") >= 0 @@ -19,9 +18,9 @@ async function recoverMainJsonFromDb() { return; } - const databases = await DB_HANDLER( - `SELECT * FROM user_databases WHERE user_id='${userId}'` - ); + const databases = (await dbHandler({ + query: `SELECT * FROM user_databases WHERE user_id='${userId}'`, + })) as any[]; const dbWrite = []; @@ -38,9 +37,9 @@ async function recoverMainJsonFromDb() { tables: [], }; - const tables = await DB_HANDLER( - `SELECT * FROM user_database_tables WHERE user_id='${userId}' AND db_id='${id}'` - ); + const tables = (await dbHandler({ + query: `SELECT * FROM user_database_tables WHERE user_id='${userId}' AND db_id='${id}'`, + })) as any[]; for (let j = 0; j < tables.length; j++) { const { table_name, table_slug, table_description } = tables[j]; @@ -52,10 +51,15 @@ async function recoverMainJsonFromDb() { indexes: [], }; - const tableFields = await varDatabaseDbHandler({ + const tableFields = (await dbHandler({ database: db_full_name, - queryString: `SHOW COLUMNS FROM ${db_full_name}.${table_slug}`, - }); + query: `SHOW COLUMNS FROM ${db_full_name}.${table_slug}`, + })) as any[] | null; + + if (!tableFields) { + console.log("No table fields found"); + continue; + } for (let k = 0; k < tableFields.length; k++) { const { Field, Type, Null, Default, Key } = tableFields[k]; diff --git a/package-shared/shell/resetSQLCredentialsPasswords.ts b/package-shared/shell/resetSQLCredentialsPasswords.ts index 94f2d7c..4bcf7a1 100644 --- a/package-shared/shell/resetSQLCredentialsPasswords.ts +++ b/package-shared/shell/resetSQLCredentialsPasswords.ts @@ -1,6 +1,5 @@ require("dotenv").config({ path: "./../.env" }); import generator from "generate-password"; -import noDatabaseDbHandler from "./utils/noDatabaseDbHandler"; import dbHandler from "../functions/backend/dbHandler"; import encrypt from "../functions/dsql/encrypt"; import grabSQLKeyName from "../utils/grab-sql-key-name"; @@ -35,9 +34,9 @@ async function resetSQLCredentialsPasswords() { }); const encryptedPassword = encrypt({ data: password }); - await noDatabaseDbHandler( - `SET PASSWORD FOR '${username}'@'${defaultMariadbUserHost}' = PASSWORD('${password}')` - ); + await dbHandler({ + query: `SET PASSWORD FOR '${username}'@'${defaultMariadbUserHost}' = PASSWORD('${password}')`, + }); const updateUser = await dbHandler({ query: `UPDATE users SET mariadb_pass = ? WHERE id = ?`, @@ -48,10 +47,7 @@ async function resetSQLCredentialsPasswords() { `User ${user.id}: ${user.first_name} ${user.last_name} Password Updated successfully added.` ); } catch (error: any) { - global.ERROR_CALLBACK?.( - `Error Updating MariaDB User`, - error as Error - ); + console.log("Error =\u003e", error.message); } } diff --git a/package-shared/shell/setSQLCredentials.ts b/package-shared/shell/setSQLCredentials.ts deleted file mode 100644 index c0f80b5..0000000 --- a/package-shared/shell/setSQLCredentials.ts +++ /dev/null @@ -1,72 +0,0 @@ -require("dotenv").config({ path: "./../.env" }); -import generator from "generate-password"; -import noDatabaseDbHandler from "./utils/noDatabaseDbHandler"; -import dbHandler from "../functions/backend/dbHandler"; -import encrypt from "../functions/dsql/encrypt"; -import grabSQLKeyName from "../utils/grab-sql-key-name"; - -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ - -/** - * # Set SQL Credentials - */ -async function setSQLCredentials() { - const users = (await dbHandler({ - query: `SELECT * FROM users`, - })) as any[] | null; - - if (!users) { - process.exit(); - } - - for (let i = 0; i < users.length; i++) { - const user = users[i]; - - if (!user) continue; - if (user.mariadb_user && user.mariadb_pass) { - continue; - } - - try { - const username = grabSQLKeyName({ type: "user", userId: user.id }); - const password = generator.generate({ - length: 16, - numbers: true, - symbols: true, - uppercase: true, - exclude: "*#.'`\"", - }); - const encryptedPassword = encrypt({ data: password }); - - await noDatabaseDbHandler( - `CREATE USER IF NOT EXISTS '${username}'@'127.0.0.1' IDENTIFIED BY '${password}'` - ); - - await noDatabaseDbHandler( - `GRANT ALL PRIVILEGES ON \`datasquirel\\_user\\_${user.id}\\_%\`.* TO '${username}'@'127.0.0.1'` - ); - await noDatabaseDbHandler(`FLUSH PRIVILEGES`); - - const updateUser = await dbHandler({ - query: `UPDATE users SET mariadb_user = ?, mariadb_host = '127.0.0.1' mariadb_pass = ? WHERE id = ?`, - values: [username, encryptedPassword, user.id], - }); - - console.log( - `User ${user.id}: ${user.first_name} ${user.last_name} SQL credentials successfully added.` - ); - } catch (error: any) { - global.ERROR_CALLBACK?.( - `Error Setting SQL credentials`, - error as Error - ); - } - } -} - -setSQLCredentials(); diff --git a/package-shared/shell/test-external-server.ts b/package-shared/shell/test-external-server.ts index b453ef0..38ba677 100644 --- a/package-shared/shell/test-external-server.ts +++ b/package-shared/shell/test-external-server.ts @@ -21,16 +21,13 @@ import grabDSQLConnection from "../utils/grab-dsql-connection"; * @description If a database is provided, switch to it */ try { - const result = await CONNECTION.query("SHOW DATABASES"); + const [result] = await CONNECTION.query("SHOW DATABASES"); const parsedResults = JSON.parse(JSON.stringify(result)); console.log("parsedResults =>", parsedResults); } catch (error: any) { - global.ERROR_CALLBACK?.( - `Error Testing External Server`, - error as Error - ); + console.log("Error =\u003e", error.message); } finally { await CONNECTION?.end(); process.exit(); diff --git a/package-shared/shell/testSQLEscape.ts b/package-shared/shell/testSQLEscape.ts deleted file mode 100644 index 4772757..0000000 --- a/package-shared/shell/testSQLEscape.ts +++ /dev/null @@ -1,73 +0,0 @@ -require("dotenv").config({ path: "./../.env" }); -import generator from "generate-password"; -import noDatabaseDbHandler from "./utils/noDatabaseDbHandler"; -import dbHandler from "../functions/backend/dbHandler"; -import encrypt from "../functions/dsql/encrypt"; -import grabSQLKeyName from "../utils/grab-sql-key-name"; - -/** - * # Test SQL Escape - */ -export default async function testSQLEscape() { - const users = (await dbHandler({ - query: `SELECT * FROM users`, - })) as any[]; - - if (!users) { - process.exit(); - } - - for (let i = 0; i < users.length; i++) { - const user = users[i]; - - if (!user) continue; - - const defaultMariadbUserHost = process.env.DSQL_DB_HOST || "127.0.0.1"; - - try { - const username = grabSQLKeyName({ type: "user", userId: user.id }); - const password = generator.generate({ - length: 16, - numbers: true, - symbols: true, - uppercase: true, - exclude: "*#.'`\"", - }); - const encryptedPassword = encrypt({ data: password }); - - await noDatabaseDbHandler( - `DROP USER '${username}'@'${defaultMariadbUserHost}'` - ); - - await noDatabaseDbHandler( - `CREATE USER IF NOT EXISTS '${username}'@'${defaultMariadbUserHost}' IDENTIFIED BY '${password}'` - ); - - await noDatabaseDbHandler( - `GRANT ALL PRIVILEGES ON \`datasquirel\\_user\\_${user.id}\\_%\`.* TO '${username}'@'${defaultMariadbUserHost}'` - ); - - await noDatabaseDbHandler(`FLUSH PRIVILEGES`); - - const updateUser = await dbHandler({ - query: `UPDATE users SET mariadb_user = ?, mariadb_host = ? mariadb_pass = ? WHERE id = ?`, - values: [ - username, - defaultMariadbUserHost, - encryptedPassword, - user.id, - ], - }); - - console.log( - `User ${user.id}: ${user.first_name} ${user.last_name} SQL credentials successfully added.` - ); - } catch (error: any) { - global.ERROR_CALLBACK?.(`Error Testing SQL Escape`, error as Error); - } - } - - process.exit(); -} - -testSQLEscape(); diff --git a/package-shared/shell/updateChildrenTablesOnDb.ts b/package-shared/shell/updateChildrenTablesOnDb.ts index 5cd61cf..c05c491 100644 --- a/package-shared/shell/updateChildrenTablesOnDb.ts +++ b/package-shared/shell/updateChildrenTablesOnDb.ts @@ -1,4 +1,4 @@ -import DB_HANDLER from "../utils/backend/global-db/DB_HANDLER"; +import dbHandler from "../functions/backend/dbHandler"; import fs from "fs"; require("dotenv").config({ path: "./../.env" }); @@ -31,25 +31,20 @@ async function updateChildrenTablesOnDb() { const WHERE_CLAUSE = `WHERE user_id='${userId}' AND db_slug='${db.dbSlug}' AND table_slug='${table.tableName}'`; - const existingTableInDb = await DB_HANDLER( - `SELECT * FROM user_database_tables ${WHERE_CLAUSE}` - ); + const existingTableInDb = (await dbHandler({ + query: `SELECT * FROM user_database_tables ${WHERE_CLAUSE}`, + })) as any[]; - if (existingTableInDb && existingTableInDb[0]) { - const updateChildrenTablesInfo = await DB_HANDLER( - `UPDATE user_database_tables SET child_table='1',child_table_parent_database='${originDbName}',child_table_parent_table='${originTableName}' WHERE id='${existingTableInDb[0].id}'` - ); + if (existingTableInDb?.[0]) { + const updateChildrenTablesInfo = await dbHandler({ + query: `UPDATE user_database_tables SET child_table='1',child_table_parent_database='${originDbName}',child_table_parent_table='${originTableName}' WHERE id='${existingTableInDb[0].id}'`, + }); } } } } } - } catch (error) { - global.ERROR_CALLBACK?.( - `Error Updating Children Tables on DB`, - error as Error - ); - } + } catch (error) {} process.exit(); } diff --git a/package-shared/shell/updateDateTimestamps.ts b/package-shared/shell/updateDateTimestamps.ts index c35ef25..1f0804e 100644 --- a/package-shared/shell/updateDateTimestamps.ts +++ b/package-shared/shell/updateDateTimestamps.ts @@ -1,15 +1,15 @@ require("dotenv").config({ path: "./../.env" }); -import varDatabaseDbHandler from "../functions/backend/varDatabaseDbHandler"; +import dbHandler from "../functions/backend/dbHandler"; /** * Grab Schema * * @description Grab Schema */ -varDatabaseDbHandler({ - queryString: `SELECT user_database_tables.*,user_databases.db_full_name FROM user_database_tables JOIN user_databases ON user_database_tables.db_id=user_databases.id`, +dbHandler({ + query: `SELECT user_database_tables.*,user_databases.db_full_name FROM user_database_tables JOIN user_databases ON user_database_tables.db_id=user_databases.id`, database: "datasquirel", -}).then(async (tables) => { +}).then(async (tables: any) => { for (let i = 0; i < tables.length; i++) { const table = tables[i]; const { @@ -22,16 +22,16 @@ varDatabaseDbHandler({ table_description, } = table; - const tableInfo = await varDatabaseDbHandler({ - queryString: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`, + const tableInfo = await dbHandler({ + query: `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='${db_full_name}' AND TABLE_NAME='${table_slug}'`, }); - const updateCreationDateTimestamp = await varDatabaseDbHandler({ - queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_created_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP`, + const updateCreationDateTimestamp = await dbHandler({ + query: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_created_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP`, }); - const updateDateTimestamp = await varDatabaseDbHandler({ - queryString: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_updated_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`, + const updateDateTimestamp = await dbHandler({ + query: `ALTER TABLE \`${db_full_name}\`.\`${table_slug}\` MODIFY COLUMN date_updated_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`, }); console.log("Date Updated Column updated"); diff --git a/package-shared/shell/updateDbSlugsForTableRecords.ts b/package-shared/shell/updateDbSlugsForTableRecords.ts index 35043d8..329a1c0 100644 --- a/package-shared/shell/updateDbSlugsForTableRecords.ts +++ b/package-shared/shell/updateDbSlugsForTableRecords.ts @@ -1,8 +1,7 @@ require("dotenv").config({ path: "./../.env" }); import serverError from "../functions/backend/serverError"; -import varDatabaseDbHandler from "./utils/varDatabaseDbHandler"; -import DB_HANDLER from "../utils/backend/global-db/DB_HANDLER"; +import dbHandler from "../functions/backend/dbHandler"; /** ****************************************************************************** */ /** ****************************************************************************** */ @@ -16,25 +15,22 @@ import DB_HANDLER from "../utils/backend/global-db/DB_HANDLER"; * * @description Grab Schema */ -varDatabaseDbHandler({ - queryString: `SELECT DISTINCT db_id FROM datasquirel.user_database_tables`, -}).then(async (tables) => { - // console.log(tables); - // process.exit(); - +dbHandler({ + query: `SELECT DISTINCT db_id FROM datasquirel.user_database_tables`, +}).then(async (tables: any) => { for (let i = 0; i < tables.length; i++) { const table = tables[i]; try { const { db_id } = table; - const dbSlug = await DB_HANDLER( - `SELECT db_slug FROM user_databases WHERE id='${db_id}'` - ); + const dbSlug = (await dbHandler({ + query: `SELECT db_slug FROM user_databases WHERE id='${db_id}'`, + })) as any; - const updateTableSlug = await DB_HANDLER( - `UPDATE user_database_tables SET db_slug='${dbSlug[0].db_slug}' WHERE db_id='${db_id}'` - ); + const updateTableSlug = await dbHandler({ + query: `UPDATE user_database_tables SET db_slug='${dbSlug[0].db_slug}' WHERE db_id='${db_id}'`, + }); } catch (error: any) { serverError({ component: @@ -42,11 +38,6 @@ varDatabaseDbHandler({ message: error.message, user: {}, }); - - global.ERROR_CALLBACK?.( - `Error Updating DB Slugs For Table Records`, - error as Error - ); } } diff --git a/package-shared/shell/updateSSLUsers.ts b/package-shared/shell/updateSSLUsers.ts index 6fac255..bba2877 100644 --- a/package-shared/shell/updateSSLUsers.ts +++ b/package-shared/shell/updateSSLUsers.ts @@ -17,13 +17,12 @@ import grabSQLKeyName from "../utils/grab-sql-key-name"; const CONNECTION = await grabDSQLConnection(); try { - const result = await CONNECTION.query( + const [result] = await CONNECTION.query( "SELECT user,host,ssl_type FROM mysql.user" ); - const parsedResults = JSON.parse(JSON.stringify(result)); - for (let i = 0; i < parsedResults.length; i++) { - const user = parsedResults[i]; + for (let i = 0; i < result.length; i++) { + const user = result[i]; if ( user.User !== process.env.DSQL_DB_READ_ONLY_USERNAME || @@ -39,14 +38,14 @@ import grabSQLKeyName from "../utils/grab-sql-key-name"; continue; } - const addUserSSL = await CONNECTION.query( + const [addUserSSL] = await CONNECTION.query( `ALTER USER '${User}'@'${Host}'` ); console.log(`addUserSSL => ${User}@${Host}`, addUserSSL); } } catch (error: any) { - global.ERROR_CALLBACK?.(`Error Updating SSL Users`, error as Error); + console.log("Error =\u003e", error.message); } finally { await CONNECTION?.end(); process.exit(); diff --git a/package-shared/shell/utils/create-table-handle-table-record.ts b/package-shared/shell/utils/create-table-handle-table-record.ts index 339c75a..3ba852e 100644 --- a/package-shared/shell/utils/create-table-handle-table-record.ts +++ b/package-shared/shell/utils/create-table-handle-table-record.ts @@ -1,4 +1,3 @@ -import varDatabaseDbHandler from "./varDatabaseDbHandler"; import { DSQL_TableSchemaType } from "../../types"; import { DSQL_DATASQUIREL_USER_DATABASE_TABLES, @@ -10,6 +9,7 @@ import addDbEntry from "../../functions/backend/db/addDbEntry"; import slugToNormalText from "../../utils/slug-to-normal-text"; import debugLog from "../../utils/logging/debug-log"; import _ from "lodash"; +import dbHandler from "../../functions/backend/dbHandler"; type Param = { tableSchema?: DSQL_TableSchemaType; @@ -68,13 +68,13 @@ export default async function ({ active_data: newTableSchema.updateData ? 1 : 0, }; - const existingTable = await varDatabaseDbHandler({ - queryString: `SELECT * FROM ${targetDatabase}.${targetTableName} WHERE db_id = ? AND table_slug = ?`, - queryValuesArray: [ + const existingTable = (await dbHandler({ + query: `SELECT * FROM ${targetDatabase}.${targetTableName} WHERE db_id = ? AND table_slug = ?`, + values: [ String(recordedDbEntry.id), String(newTableSchema.tableName), ], - }); + })) as any; const table: DSQL_DATASQUIREL_USER_DATABASE_TABLES = existingTable?.[0]; diff --git a/package-shared/shell/utils/createTable.ts b/package-shared/shell/utils/createTable.ts index e93f3b7..e502fc0 100644 --- a/package-shared/shell/utils/createTable.ts +++ b/package-shared/shell/utils/createTable.ts @@ -1,10 +1,10 @@ -import varDatabaseDbHandler from "./varDatabaseDbHandler"; import generateColumnDescription from "./generateColumnDescription"; import supplementTable from "./supplementTable"; import { DSQL_FieldSchemaType, DSQL_TableSchemaType } from "../../types"; import { DSQL_DATASQUIREL_USER_DATABASES } from "../../types/dsql"; import handleTableForeignKey from "./handle-table-foreign-key"; import createTableHandleTableRecord from "./create-table-handle-table-record"; +import dbHandler from "../../functions/backend/dbHandler"; type Param = { dbFullName: string; @@ -68,8 +68,8 @@ export default async function createTable({ const createTableQuery = createTableQueryArray.join("\n"); - const newTable = await varDatabaseDbHandler({ - queryString: createTableQuery, + const newTable = await dbHandler({ + query: createTableQuery, }); for (let i = 0; i < finalTable.length; i++) { diff --git a/package-shared/shell/utils/drop-all-foreign-keys.ts b/package-shared/shell/utils/drop-all-foreign-keys.ts index 7357111..d8e6ca9 100644 --- a/package-shared/shell/utils/drop-all-foreign-keys.ts +++ b/package-shared/shell/utils/drop-all-foreign-keys.ts @@ -1,5 +1,5 @@ import grabSQLKeyName from "../../utils/grab-sql-key-name"; -import varDatabaseDbHandler from "./varDatabaseDbHandler"; +import dbHandler from "../../functions/backend/dbHandler"; type Param = { dbFullName: string; @@ -29,11 +29,11 @@ export default async function dropAllForeignKeys({ // }); // } - const foreignKeys = await varDatabaseDbHandler({ - queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\` WHERE Key_name LIKE '${grabSQLKeyName( + const foreignKeys = (await dbHandler({ + query: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\` WHERE Key_name LIKE '${grabSQLKeyName( { type: "foreign_key" } )}%'`, - }); + })) as any; for (const fk of foreignKeys) { if ( @@ -41,8 +41,8 @@ export default async function dropAllForeignKeys({ new RegExp(grabSQLKeyName({ type: "foreign_key" })) ) ) { - await varDatabaseDbHandler({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${fk.Key_name}\` + await dbHandler({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${fk.Key_name}\` `, }); } diff --git a/package-shared/shell/utils/handle-table-foreign-key.ts b/package-shared/shell/utils/handle-table-foreign-key.ts index 2c9a67c..8349617 100644 --- a/package-shared/shell/utils/handle-table-foreign-key.ts +++ b/package-shared/shell/utils/handle-table-foreign-key.ts @@ -1,5 +1,5 @@ -import varDatabaseDbHandler from "./varDatabaseDbHandler"; import { DSQL_ForeignKeyType } from "../../types"; +import dbHandler from "../../functions/backend/dbHandler"; type Param = { dbFullName: string; @@ -41,9 +41,9 @@ export default async function handleTableForeignKey({ // let finalQueryString = `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` ${foreinKeyText}`; - const addForeignKey = await varDatabaseDbHandler({ - queryString: finalQueryString, - }); + const addForeignKey = (await dbHandler({ + query: finalQueryString, + })) as any; if (!addForeignKey?.serverStatus) { errorLogs?.push(addForeignKey); diff --git a/package-shared/shell/utils/noDatabaseDbHandler.ts b/package-shared/shell/utils/noDatabaseDbHandler.ts deleted file mode 100644 index 851471a..0000000 --- a/package-shared/shell/utils/noDatabaseDbHandler.ts +++ /dev/null @@ -1,19 +0,0 @@ -import dbHandler from "../../functions/backend/dbHandler"; - -export default async function noDatabaseDbHandler( - queryString: string -): Promise { - let results; - - try { - results = await dbHandler({ query: queryString }); - } catch (error: any) { - global.ERROR_CALLBACK?.(`No DB Handler Error`, error as Error); - } - - if (results) { - return results; - } else { - return null; - } -} diff --git a/package-shared/shell/utils/updateTable.ts b/package-shared/shell/utils/updateTable.ts index 0c18010..e50a637 100644 --- a/package-shared/shell/utils/updateTable.ts +++ b/package-shared/shell/utils/updateTable.ts @@ -1,5 +1,3 @@ -import varDatabaseDbHandler from "./varDatabaseDbHandler"; - import generateColumnDescription from "./generateColumnDescription"; import { DSQL_DatabaseSchemaType, @@ -19,6 +17,7 @@ import handleIndexescreateDbFromSchema from "../createDbFromSchema/handle-indexe import _ from "lodash"; import { writeUpdatedDbSchema } from "../createDbFromSchema/grab-required-database-schemas"; import normalizeText from "../../utils/normalize-text"; +import dbHandler from "../../functions/backend/dbHandler"; type Param = { dbFullName: string; @@ -105,30 +104,31 @@ export default async function updateTable({ * @description Iterate through each table index(if available) * and perform operations */ - const allExistingIndexes: DSQL_MYSQL_SHOW_INDEXES_Type[] = - await varDatabaseDbHandler({ - queryString: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\` WHERE Index_comment LIKE '%schema_index%'`, - }); + const allExistingIndexes = (await dbHandler({ + query: `SHOW INDEXES FROM \`${dbFullName}\`.\`${tableName}\` WHERE Index_comment LIKE '%schema_index%'`, + })) as DSQL_MYSQL_SHOW_INDEXES_Type[] | null; - for (let f = 0; f < allExistingIndexes.length; f++) { - const { Key_name } = allExistingIndexes[f]; + if (allExistingIndexes) { + for (let f = 0; f < allExistingIndexes.length; f++) { + const { Key_name } = allExistingIndexes[f]; - try { - const existingKeyInSchema = tableIndexes?.find( - (indexObject) => indexObject.alias === Key_name - ); - if (!existingKeyInSchema) - throw new Error( - `This Index(${Key_name}) Has been Deleted!` + try { + const existingKeyInSchema = tableIndexes?.find( + (indexObject) => indexObject.alias === Key_name ); - } catch (error) { - /** - * @description Drop Index: This happens when the MYSQL index is not - * present in the datasquirel DB schema - */ - await varDatabaseDbHandler({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${Key_name}\``, - }); + if (!existingKeyInSchema) + throw new Error( + `This Index(${Key_name}) Has been Deleted!` + ); + } catch (error) { + /** + * @description Drop Index: This happens when the MYSQL index is not + * present in the datasquirel DB schema + */ + await dbHandler({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${Key_name}\``, + }); + } } } @@ -152,10 +152,9 @@ export default async function updateTable({ * @description Iterate through each datasquirel schema * table index(if available), and perform operations */ - const allForeignKeys: DSQL_MYSQL_FOREIGN_KEYS_Type[] | null = - await varDatabaseDbHandler({ - queryString: `SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND CONSTRAINT_TYPE='FOREIGN KEY'`, - }); + const allForeignKeys = (await dbHandler({ + query: `SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND CONSTRAINT_TYPE='FOREIGN KEY'`, + })) as DSQL_MYSQL_FOREIGN_KEYS_Type[] | null; if (allForeignKeys) { for (let c = 0; c < allForeignKeys.length; c++) { @@ -170,8 +169,8 @@ export default async function updateTable({ * @description Drop all foreign Keys to avoid MYSQL errors when adding/updating * Foreign keys */ - const dropForeignKey = await varDatabaseDbHandler({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP FOREIGN KEY \`${CONSTRAINT_NAME}\``, + await dbHandler({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP FOREIGN KEY \`${CONSTRAINT_NAME}\``, }); } } @@ -182,19 +181,17 @@ export default async function updateTable({ * @description Find all existing unique field constraints * and remove them */ - const allUniqueConstraints: DSQL_MYSQL_FOREIGN_KEYS_Type[] | null = - await varDatabaseDbHandler({ - queryString: - normalizeText(`SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS \ + const allUniqueConstraints = (await dbHandler({ + query: normalizeText(`SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS \ WHERE CONSTRAINT_SCHEMA = '${dbFullName}' AND TABLE_NAME='${tableName}' AND \ CONSTRAINT_TYPE='UNIQUE'`), - }); + })) as DSQL_MYSQL_FOREIGN_KEYS_Type[] | null; if (allUniqueConstraints) { for (let c = 0; c < allUniqueConstraints.length; c++) { const { CONSTRAINT_NAME } = allUniqueConstraints[c]; - const dropUniqueConstraint = await varDatabaseDbHandler({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${CONSTRAINT_NAME}\``, + await dbHandler({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP INDEX \`${CONSTRAINT_NAME}\``, }); } } @@ -205,9 +202,9 @@ export default async function updateTable({ * @description Now handle all fields/columns */ let allExistingColumns: DSQL_MYSQL_SHOW_COLUMNS_Type[] = - await varDatabaseDbHandler({ - queryString: `SHOW COLUMNS FROM \`${dbFullName}\`.\`${tableName}\``, - }); + (await dbHandler({ + query: `SHOW COLUMNS FROM \`${dbFullName}\`.\`${tableName}\``, + })) as DSQL_MYSQL_SHOW_COLUMNS_Type[]; /** * @type {string[]} @@ -239,8 +236,8 @@ export default async function updateTable({ if (existingEntry.updatedField && existingEntry.fieldName) { updatedColumnsArray.push(existingEntry.fieldName); - const renameColumn = await varDatabaseDbHandler({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` RENAME COLUMN \`${existingEntry.originName}\` TO \`${existingEntry.fieldName}\``, + await dbHandler({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` RENAME COLUMN \`${existingEntry.originName}\` TO \`${existingEntry.fieldName}\``, }); console.log( @@ -284,9 +281,9 @@ export default async function updateTable({ }); } - allExistingColumns = await varDatabaseDbHandler({ - queryString: `SHOW COLUMNS FROM \`${dbFullName}\`.\`${tableName}\``, - }); + allExistingColumns = (await dbHandler({ + query: `SHOW COLUMNS FROM \`${dbFullName}\`.\`${tableName}\``, + })) as DSQL_MYSQL_SHOW_COLUMNS_Type[]; } catch (error: any) { console.log("Update table error =>", error.message); } @@ -300,8 +297,8 @@ export default async function updateTable({ //////////////////////////////////////// } else { - await varDatabaseDbHandler({ - queryString: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP COLUMN \`${Field}\``, + await dbHandler({ + query: `ALTER TABLE \`${dbFullName}\`.\`${tableName}\` DROP COLUMN \`${Field}\``, }); } } @@ -386,8 +383,8 @@ export default async function updateTable({ * Alter directives like "ADD COLUMN" or "MODIFY COLUMN" */ if (updateTableQueryArray.length > 1) { - const updateTable = await varDatabaseDbHandler({ - queryString: updateTableQuery, + const updateTable = await dbHandler({ + query: updateTableQuery, }); /** diff --git a/package-shared/shell/utils/varDatabaseDbHandler.ts b/package-shared/shell/utils/varDatabaseDbHandler.ts deleted file mode 100644 index d3d2457..0000000 --- a/package-shared/shell/utils/varDatabaseDbHandler.ts +++ /dev/null @@ -1,57 +0,0 @@ -import dbHandler from "../../functions/backend/dbHandler"; - -type Param = { - queryString: string; - queryValuesArray?: string[]; -}; - -/** - * # DB handler for specific database - */ -export default async function varDatabaseDbHandler({ - queryString, - queryValuesArray, -}: Param): Promise { - /** - * Declare variables - * - * @description Declare "results" variable - */ - let results; - - /** - * Fetch from db - * - * @description Fetch data from db if no cache - */ - try { - if ( - queryString && - queryValuesArray && - Array.isArray(queryValuesArray) && - queryValuesArray[0] - ) { - results = await dbHandler({ - query: queryString, - values: queryValuesArray, - }); - } else { - results = await dbHandler({ - query: queryString, - }); - } - - //////////////////////////////////////// - //////////////////////////////////////// - //////////////////////////////////////// - } catch (/** @type {any} */ error: any) { - console.log("Shell Vardb Error =>", error.message); - } - - /** - * Return results - * - * @description Return results add to cache if "req" param is passed - */ - return results; -} diff --git a/package-shared/types/dsql.ts b/package-shared/types/dsql.ts index 2e7bb02..7694388 100644 --- a/package-shared/types/dsql.ts +++ b/package-shared/types/dsql.ts @@ -1,24 +1,24 @@ export const DsqlTables = [ "users", - "mariadb_users", - "mariadb_user_databases", - "mariadb_user_tables", - "mariadb_user_privileges", "api_keys", "api_keys_scoped_resources", "invitations", - "delegated_resources", "user_databases", "user_database_tables", "user_media", "user_private_folders", "delegated_users", + "delegated_resources", + "mariadb_user_privileges", "unsubscribes", "notifications", "deleted_api_keys", "servers", "process_queue", "backups", + "mariadb_users", + "mariadb_user_databases", + "mariadb_user_tables", ] as const export type DSQL_DATASQUIREL_USERS = { @@ -51,79 +51,6 @@ export type DSQL_DATASQUIREL_USERS = { date_updated_timestamp?: string; } -export type DSQL_DATASQUIREL_MARIADB_USERS = { - id?: number; - uuid?: string; - user_id?: number; - username?: string; - host?: string; - password?: string; - primary?: number; - all_databases?: 0 | 1; - all_grants?: 0 | 1; - date_created?: string; - date_created_code?: number; - date_created_timestamp?: string; - date_updated?: string; - date_updated_code?: number; - date_updated_timestamp?: string; -} - -export type DSQL_DATASQUIREL_MARIADB_USER_DATABASES = { - id?: number; - uuid?: string; - user_id?: number; - mariadb_user_id?: number; - db_id?: number; - db_schema_id?: number; - db_slug?: string; - all_tables?: 0 | 1; - all_privileges?: 0 | 1; - date_created?: string; - date_created_code?: number; - date_created_timestamp?: string; - date_updated?: string; - date_updated_code?: number; - date_updated_timestamp?: string; -} - -export type DSQL_DATASQUIREL_MARIADB_USER_TABLES = { - id?: number; - uuid?: string; - user_id?: number; - mariadb_user_id?: number; - db_id?: number; - db_schema_id?: number; - db_slug?: string; - table_schema_id?: number; - table_slug?: string; - all_fields?: 0 | 1; - all_privileges?: 0 | 1; - date_created?: string; - date_created_code?: number; - date_created_timestamp?: string; - date_updated?: string; - date_updated_code?: number; - date_updated_timestamp?: string; -} - -export type DSQL_DATASQUIREL_MARIADB_USER_PRIVILEGES = { - id?: number; - uuid?: string; - user_id?: number; - mariadb_user_id?: number; - db_id?: number; - db_schema_id?: number; - db_slug?: string; - privilege?: "ALTER" | "ALTER ROUTINE" | "CREATE" | "CREATE ROUTINE" | "CREATE TEMPORARY TABLES" | "CREATE VIEW" | "DELETE" | "DROP" | "EVENT" | "EXECUTE" | "FILE" | "INDEX" | "INSERT" | "LOCK TABLES" | "PROCESS" | "REFERENCES" | "RELOAD" | "SELECT" | "SHOW VIEW" | "SUPER" | "TRIGGER" | "UPDATE" | "USAGE"; - date_created?: string; - date_created_code?: number; - date_created_timestamp?: string; - date_updated?: string; - date_updated_code?: number; - date_updated_timestamp?: string; -} - export type DSQL_DATASQUIREL_API_KEYS = { id?: number; uuid?: string; @@ -180,27 +107,6 @@ export type DSQL_DATASQUIREL_INVITATIONS = { date_updated_timestamp?: string; } -export type DSQL_DATASQUIREL_DELEGATED_RESOURCES = { - id?: number; - uuid?: string; - delegated_users_id?: number; - user_id?: number; - delegated_user_id?: number; - db_id?: number; - db_schema_id?: number; - db_slug?: string; - table_schema_id?: number; - table_slug?: string; - permission?: "read" | "write" | "edit" | "delete"; - all_tables?: 0 | 1; - date_created?: string; - date_created_code?: number; - date_created_timestamp?: string; - date_updated?: string; - date_updated_code?: number; - date_updated_timestamp?: string; -} - export type DSQL_DATASQUIREL_USER_DATABASES = { id?: number; uuid?: string; @@ -257,6 +163,7 @@ export type DSQL_DATASQUIREL_USER_MEDIA = { uuid?: string; user_id?: number; media_name?: string; + alias?: string; folder?: string; media_url?: string; media_thumbnail_url?: string; @@ -305,6 +212,44 @@ export type DSQL_DATASQUIREL_DELEGATED_USERS = { date_updated_timestamp?: string; } +export type DSQL_DATASQUIREL_DELEGATED_RESOURCES = { + id?: number; + uuid?: string; + delegated_users_id?: number; + user_id?: number; + delegated_user_id?: number; + db_id?: number; + db_schema_id?: number; + db_slug?: string; + table_schema_id?: number; + table_slug?: string; + permission?: "read" | "write" | "edit" | "delete"; + all_tables?: 0 | 1; + date_created?: string; + date_created_code?: number; + date_created_timestamp?: string; + date_updated?: string; + date_updated_code?: number; + date_updated_timestamp?: string; +} + +export type DSQL_DATASQUIREL_MARIADB_USER_PRIVILEGES = { + id?: number; + uuid?: string; + user_id?: number; + mariadb_user_id?: number; + db_id?: number; + db_schema_id?: number; + db_slug?: string; + privilege?: "ALTER" | "ALTER ROUTINE" | "CREATE" | "CREATE ROUTINE" | "CREATE TEMPORARY TABLES" | "CREATE VIEW" | "DELETE" | "DROP" | "EVENT" | "EXECUTE" | "FILE" | "INDEX" | "INSERT" | "LOCK TABLES" | "PROCESS" | "REFERENCES" | "RELOAD" | "SELECT" | "SHOW VIEW" | "SUPER" | "TRIGGER" | "UPDATE" | "USAGE"; + date_created?: string; + date_created_code?: number; + date_created_timestamp?: string; + date_updated?: string; + date_updated_code?: number; + date_updated_timestamp?: string; +} + export type DSQL_DATASQUIREL_UNSUBSCRIBES = { id?: number; uuid?: string; @@ -391,4 +336,60 @@ export type DSQL_DATASQUIREL_BACKUPS = { date_updated?: string; date_updated_code?: number; date_updated_timestamp?: string; +} + +export type DSQL_DATASQUIREL_MARIADB_USERS = { + id?: number; + uuid?: string; + user_id?: number; + username?: string; + host?: string; + password?: string; + primary?: number; + all_databases?: 0 | 1; + all_grants?: 0 | 1; + date_created?: string; + date_created_code?: number; + date_created_timestamp?: string; + date_updated?: string; + date_updated_code?: number; + date_updated_timestamp?: string; +} + +export type DSQL_DATASQUIREL_MARIADB_USER_DATABASES = { + id?: number; + uuid?: string; + user_id?: number; + mariadb_user_id?: number; + db_id?: number; + db_schema_id?: number; + db_slug?: string; + all_tables?: 0 | 1; + all_privileges?: 0 | 1; + date_created?: string; + date_created_code?: number; + date_created_timestamp?: string; + date_updated?: string; + date_updated_code?: number; + date_updated_timestamp?: string; +} + +export type DSQL_DATASQUIREL_MARIADB_USER_TABLES = { + id?: number; + uuid?: string; + user_id?: number; + mariadb_user_id?: number; + db_id?: number; + db_schema_id?: number; + db_slug?: string; + table_schema_id?: number; + table_slug?: string; + all_fields?: 0 | 1; + all_privileges?: 0 | 1; + date_created?: string; + date_created_code?: number; + date_created_timestamp?: string; + date_updated?: string; + date_updated_code?: number; + date_updated_timestamp?: string; } \ No newline at end of file diff --git a/package-shared/types/index.ts b/package-shared/types/index.ts index 4680fe3..39a3a6b 100644 --- a/package-shared/types/index.ts +++ b/package-shared/types/index.ts @@ -14,6 +14,7 @@ import type { DSQL_DATASQUIREL_USER_MEDIA, DSQL_DATASQUIREL_USER_PRIVATE_FOLDERS, DSQL_DATASQUIREL_USERS, + DsqlTables, } from "./dsql"; import type { Editor } from "tinymce"; @@ -1139,6 +1140,7 @@ export type APICreateUserFunctionParams = { payload: any; database: string; userId?: string | number; + verify?: boolean; }; export type APICreateUserFunction = ( @@ -1588,6 +1590,8 @@ export type PagePropsType = { suDatabase?: SQLShowDatabaseObject | null; isSuperUserPage?: boolean; appVersion?: (typeof AppVersions)[number]; + isMailAvailable?: boolean; + websocketURL?: string; }; export type APIResponseObject = { @@ -1771,16 +1775,17 @@ export type AppRefObject = { }; export type DsqlAppData = { - DSQL_REMOTE_SQL_HOST?: string; - DSQL_SU_USER_ID?: string; - DSQL_HOST_ENV?: string; - DSQL_HOST?: string; - DSQL_STATIC_HOST?: string; - DSQL_GOOGLE_CLIENT_ID?: string; - DSQL_TINY_MCE_API_KEY?: string; - DSQL_WEBSOCKET_URL?: string; - DSQL_FACEBOOK_APP_ID?: string; - DSQL_GITHUB_ID?: string; + DSQL_REMOTE_SQL_HOST?: string | null; + DSQL_SU_USER_ID?: string | null; + DSQL_HOST_ENV?: string | null; + DSQL_HOST?: string | null; + DSQL_STATIC_HOST?: string | null; + DSQL_GOOGLE_CLIENT_ID?: string | null; + DSQL_TINY_MCE_API_KEY?: string | null; + DSQL_WEBSOCKET_HOST?: string | null; + DSQL_FACEBOOK_APP_ID?: string | null; + DSQL_GITHUB_ID?: string | null; + DSQL_HOST_MACHINE_IP?: string | null; }; export const MediaTypes = ["image", "file", "video"] as const; @@ -1809,10 +1814,15 @@ export const FileMimeTypes = [ "xlsx", "txt", "zip", - "xz", "tar.xz", + "xz", "yaml", "yml", + "sh", + "jsx", + "js", + "tsx", + "ts", ] as const; export const VideoMimeTypes = ["mp4", "wav"] as const; @@ -2153,7 +2163,7 @@ export type SiteConfigMaxscale = { admin_port: number; }; -export const APIParadigms = ["crud", "media", "sql"] as const; +export const APIParadigms = ["crud", "media", "sql", "schema"] as const; export const AppVersions = [ { @@ -2246,8 +2256,8 @@ export const EnvKeys = [ "DSQL_WEB_APP_FAIL_COUNTS", "NODE_ARCH", "DSQL_WEBSOCKET_PORT", - "DSQL_WEBSOCKET_URL", - "NEXT_PUBLIC_DSQL_WEBSOCKET_URL", + "DSQL_WEBSOCKET_HOST", + "NEXT_PUBLIC_DSQL_WEBSOCKET_HOST", "S3_ACCESS_KEY_ID", "S3_SECRET_ACCESS", "DSQL_ADDITIONAL_MARIADB_SERVERS", @@ -2291,3 +2301,21 @@ export type AddMediaAPIBody = { */ useDefault?: boolean; }; + +export const TargetMediaParadigms = ["info", "preview"] as const; + +export type TargetMediaDataType = { + media: DSQL_DATASQUIREL_USER_MEDIA; + paradigm: (typeof TargetMediaParadigms)[number]; +}; + +export type GrabUserResourceParams = { + query?: DsqlCrudQueryObject; + userId?: string | number; + tableName: (typeof DsqlTables)[number]; + count?: boolean; + countOnly?: boolean; + noLimit?: boolean; + isSuperUser?: boolean; + targetID?: string | number; +}; diff --git a/package-shared/utils/backend/global-db/DB_HANDLER.ts b/package-shared/utils/backend/global-db/DB_HANDLER.ts deleted file mode 100644 index 01ef2a4..0000000 --- a/package-shared/utils/backend/global-db/DB_HANDLER.ts +++ /dev/null @@ -1,30 +0,0 @@ -import grabDSQLConnection from "../../grab-dsql-connection"; - -/** - * # DSQL user read-only DB handler - * @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database - */ -export default async function DB_HANDLER(query: string, values?: any[]) { - const CONNECTION = await grabDSQLConnection(); - - try { - if (!CONNECTION) - throw new Error("No Connection provided to DB_HANDLER function!"); - - const results = await CONNECTION.query(query, values); - - if (Array.isArray(results)) { - return Array.from(results); - } else { - return results; - } - } catch (error: any) { - global.ERROR_CALLBACK?.(`DB_HANDLER Error`, error as Error); - return { - success: false, - error: error.message, - }; - } finally { - await CONNECTION?.end(); - } -} diff --git a/package-shared/utils/backend/global-db/DSQL_USER_DB_HANDLER.ts b/package-shared/utils/backend/global-db/DSQL_USER_DB_HANDLER.ts deleted file mode 100644 index 3840ebf..0000000 --- a/package-shared/utils/backend/global-db/DSQL_USER_DB_HANDLER.ts +++ /dev/null @@ -1,31 +0,0 @@ -import connDbHandler from "../../db/conn-db-handler"; -import grabDSQLConnection from "../../grab-dsql-connection"; - -type Param = { - paradigm: "Full Access" | "FA" | "Read Only"; - queryString: string; - queryValues?: string[]; -}; - -/** - * # DSQL user read-only DB handler - */ -export default async function DSQL_USER_DB_HANDLER({ - paradigm, - queryString, - queryValues, -}: Param) { - const CONNECTION = - paradigm == "Read Only" - ? await grabDSQLConnection({ ro: true }) - : await grabDSQLConnection({ fa: true }); - - try { - return await connDbHandler(CONNECTION, queryString, queryValues); - } catch (error: any) { - global.ERROR_CALLBACK?.(`DSQL_USER_DB_HANDLER Error`, error as Error); - return null; - } finally { - await CONNECTION?.end(); - } -} diff --git a/package-shared/utils/backend/global-db/LOCAL_DB_HANDLER.ts b/package-shared/utils/backend/global-db/LOCAL_DB_HANDLER.ts deleted file mode 100644 index 760f3e2..0000000 --- a/package-shared/utils/backend/global-db/LOCAL_DB_HANDLER.ts +++ /dev/null @@ -1,26 +0,0 @@ -import grabDSQLConnection from "../../grab-dsql-connection"; - -/** - * # DSQL user read-only DB handler - */ -export default async function LOCAL_DB_HANDLER(query: string, values?: any[]) { - const CONNECTION = await grabDSQLConnection(); - - try { - const results = await CONNECTION.query(query, values); - - if (Array.isArray(results)) { - return Array.from(results); - } else { - return results; - } - } catch (error: any) { - global.ERROR_CALLBACK?.(`LOCAL_DB_HANDLER Error`, error as Error); - return { - success: false, - error: error.message, - }; - } finally { - await CONNECTION?.end(); - } -} diff --git a/package-shared/utils/backend/global-db/NO_DB_HANDLER.ts b/package-shared/utils/backend/global-db/NO_DB_HANDLER.ts deleted file mode 100644 index 9c4aa3e..0000000 --- a/package-shared/utils/backend/global-db/NO_DB_HANDLER.ts +++ /dev/null @@ -1,36 +0,0 @@ -import grabDSQLConnection from "../../grab-dsql-connection"; - -/** - * # DSQL user read-only DB handler - */ -export default async function NO_DB_HANDLER(query: string, values?: any[]) { - const CONNECTION = await grabDSQLConnection(); - - try { - return new Promise((resolve, reject) => { - CONNECTION.query(query, values) - .then(async (results) => { - if (Array.isArray(results)) { - resolve(Array.from(results)); - } else { - resolve(results); - } - }) - .catch(async (err) => { - resolve({ - error: err.message, - sql: err.sql, - }); - }) - .finally(async () => { - await CONNECTION?.end(); - }); - }); - } catch (error: any) { - global.ERROR_CALLBACK?.(`NO_DB_HANDLER Error`, error as Error); - return { - success: false, - error: error.message, - }; - } -} diff --git a/package-shared/utils/backend/grabDbSSL.ts b/package-shared/utils/backend/grabDbSSL.ts index 04667dc..16ec654 100644 --- a/package-shared/utils/backend/grabDbSSL.ts +++ b/package-shared/utils/backend/grabDbSSL.ts @@ -8,20 +8,21 @@ type Return = ConnectionConfig["ssl"] | undefined; * # Grab SSL */ export default function grabDbSSL(): Return { - const { maxscaleSSLDir } = grabDirNames(); - if (!maxscaleSSLDir?.match(/./)) { + const { maxscaleSSLCaCertFile } = grabDirNames(); + + const caFilePath = process.env.DSQL_SSL_CA_CERT || maxscaleSSLCaCertFile; + + if (!caFilePath?.match(/./)) { return undefined; } - const caFilePath = `${maxscaleSSLDir}/ca-cert.pem`; - if (!fs.existsSync(caFilePath)) { console.log(`${caFilePath} does not exist`); return undefined; } return { - ca: fs.readFileSync(`${maxscaleSSLDir}/ca-cert.pem`), + ca: fs.readFileSync(caFilePath), rejectUnauthorized: false, }; } diff --git a/package-shared/utils/backend/import-mariadb-database.ts b/package-shared/utils/backend/import-mariadb-database.ts index 0483243..253dad4 100644 --- a/package-shared/utils/backend/import-mariadb-database.ts +++ b/package-shared/utils/backend/import-mariadb-database.ts @@ -27,10 +27,7 @@ export default async function importMariadbDatabase({ const finalMariadbHost = mariadbHost || process.env.DSQL_DB_HOST; const finalMariadbPass = mariadbPass || process.env.DSQL_DB_PASSWORD; - await connDbHandler( - global.DSQL_DB_CONN, - `CREATE DATABASE IF NOT EXISTS ${dbFullName}` - ); + await connDbHandler(null, `CREATE DATABASE IF NOT EXISTS ${dbFullName}`); const cmd = `${mysqlPath} -u ${finalMariadbUser} -h ${finalMariadbHost} -p"${finalMariadbPass}" ${dbFullName} < ${targetFilePath}`; diff --git a/package-shared/utils/backend/names/grab-dir-names.ts b/package-shared/utils/backend/names/grab-dir-names.ts index e285ffb..c182643 100644 --- a/package-shared/utils/backend/names/grab-dir-names.ts +++ b/package-shared/utils/backend/names/grab-dir-names.ts @@ -45,11 +45,43 @@ export default function grabDirNames(param?: Param) { const appSSLDir = path.join(appDir, "ssl"); const mainSSLDir = path.join(DATA_DIR, "ssl"); + const installScriptFile = path.join( + appDir, + "scripts", + "shell", + "installation", + "install.sh" + ); + const updateScriptFile = path.join( + appDir, + "scripts", + "shell", + "installation", + "update.sh" + ); + + const installTypescriptFile = path.join( + appDir, + "scripts", + "shell", + "installation", + "install.ts" + ); + const updateTypescriptFile = path.join( + appDir, + "scripts", + "shell", + "installation", + "update.ts" + ); + const maxscaleSSLDir = path.join(mainSSLDir, "maxscale"); const mainDBSSLDir = path.join(mainSSLDir, "main"); const replica1DBSSLDir = path.join(mainSSLDir, "replica-1"); const replica2DBSSLDir = path.join(mainSSLDir, "replica-2"); + const maxscaleSSLCaCertFile = path.join(maxscaleSSLDir, "ca-cert.pem"); + const privateDataDir = path.join(DATA_DIR, "private"); /** @@ -158,15 +190,32 @@ export default function grabDirNames(param?: Param) { let dockerComposeFile = path.join(appDir, "docker-compose.yml"); let dockerComposeFileAlt = path.join(appDir, "docker-compose.yaml"); + const dbDockerComposeFileName = "db.docker-compose.yml"; + const dbDockerComposeFileNameAlt = "db.docker-compose.yaml"; const dsqlDockerComposeFileName = "dsql.docker-compose.yml"; const dsqlDockerComposeFileNameAlt = "dsql.docker-compose.yaml"; + const dsqlDbDockerComposeFileName = "dsql-db.docker-compose.yml"; + const dsqlDbDockerComposeFileNameAlt = "dsql-db.docker-compose.yaml"; + const dsqlDockerComposeFile = path.join(appDir, dsqlDockerComposeFileName); const dsqlDockerComposeFileAlt = path.join( appDir, dsqlDockerComposeFileNameAlt ); - const dbDockerComposeFile = path.join(appDir, "db.docker-compose.yml"); - const dbDockerComposeFileAlt = path.join(appDir, "db.docker-compose.yaml"); + const dbDockerComposeFile = path.join(appDir, dbDockerComposeFileName); + const dbDockerComposeFileAlt = path.join( + appDir, + dbDockerComposeFileNameAlt + ); + const dsqlDbDockerComposeFile = path.join( + appDir, + dsqlDbDockerComposeFileName + ); + const dsqlDbDockerComposeFileAlt = path.join( + appDir, + dsqlDbDockerComposeFileNameAlt + ); + const extraDockerComposeFile = path.join( appDir, "extra.docker-compose.yml" @@ -282,6 +331,7 @@ export default function grabDirNames(param?: Param) { schemasBackupDirName, userMainShemaJSONFilePath, maxscaleSSLDir, + maxscaleSSLCaCertFile, mainDBSSLDir, replica1DBSSLDir, replica2DBSSLDir, @@ -304,5 +354,13 @@ export default function grabDirNames(param?: Param) { distroEnterpriseExportTarName, communityDistroTempDir, communityDistroDir, + installScriptFile, + updateScriptFile, + installTypescriptFile, + updateTypescriptFile, + dsqlDbDockerComposeFile, + dsqlDbDockerComposeFileAlt, + dsqlDbDockerComposeFileName, + dsqlDbDockerComposeFileNameAlt, }; } diff --git a/package-shared/utils/backend/names/grab-ip-addresses.ts b/package-shared/utils/backend/names/grab-ip-addresses.ts index ffcc67e..7ad8741 100644 --- a/package-shared/utils/backend/names/grab-ip-addresses.ts +++ b/package-shared/utils/backend/names/grab-ip-addresses.ts @@ -2,6 +2,7 @@ import grabDockerResourceIPNumbers from "../../grab-docker-resource-ip-numbers"; export default function grabIPAddresses() { const globalIPPrefix = process.env.DSQL_NETWORK_IP_PREFIX || "172.72.0"; + const { cron, db, @@ -19,6 +20,7 @@ export default function grabIPAddresses() { const maxScaleIP = `${globalIPPrefix}.${maxscale}`; const mainDBIP = `${globalIPPrefix}.${db}`; const webSocketIP = `${globalIPPrefix}.${websocket}`; + const dbCronIP = `${globalIPPrefix}.${db_cron}`; const localHostIP = `${globalIPPrefix}.1`; return { @@ -29,5 +31,6 @@ export default function grabIPAddresses() { localHostIP, globalIPPrefix, webSocketIP, + dbCronIP, }; } diff --git a/package-shared/utils/backend/parseCookies.ts b/package-shared/utils/backend/parseCookies.ts index 37392b2..5e3c021 100644 --- a/package-shared/utils/backend/parseCookies.ts +++ b/package-shared/utils/backend/parseCookies.ts @@ -45,7 +45,6 @@ export default function parseCookies({ return cookieObject; } catch (error: any) { - global.ERROR_CALLBACK?.(`Parse Cookies Error`, error as Error); return {}; } } diff --git a/package-shared/utils/check-if-is-master.ts b/package-shared/utils/check-if-is-master.ts index b2f7703..96809ae 100644 --- a/package-shared/utils/check-if-is-master.ts +++ b/package-shared/utils/check-if-is-master.ts @@ -6,8 +6,6 @@ type Param = { export default function checkIfIsMaster({ dbContext, dbFullName }: Param) { return dbContext?.match(/dsql.user/i) ? false - : global.DSQL_USE_LOCAL - ? true : dbFullName && !dbFullName.match(/^datasquirel$/) ? false : true; diff --git a/package-shared/utils/data-fetching/crud.ts b/package-shared/utils/data-fetching/crud.ts index 130bac1..ee943b6 100644 --- a/package-shared/utils/data-fetching/crud.ts +++ b/package-shared/utils/data-fetching/crud.ts @@ -33,8 +33,6 @@ export default async function dsqlCrud< sanitize ? sanitize({ batchData }) : batchData ) as T[]; - const DB_CONN = global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN; - switch (action) { case "get": return await dsqlCrudGet(params); @@ -79,7 +77,7 @@ export default async function dsqlCrud< }); const res = (await connDbHandler( - DB_CONN, + undefined, deleteQuery?.query, deleteQuery?.values )) as PostInsertReturn; diff --git a/package-shared/utils/data-fetching/method-crud.ts b/package-shared/utils/data-fetching/method-crud.ts index 83c31a3..d1d45ea 100644 --- a/package-shared/utils/data-fetching/method-crud.ts +++ b/package-shared/utils/data-fetching/method-crud.ts @@ -213,7 +213,6 @@ export default async function dsqlMethodCrud< } return result; } catch (error) { - global.ERROR_CALLBACK?.(`Method Crud Error`, error as Error); return result; } } diff --git a/package-shared/utils/db/conn-db-handler.ts b/package-shared/utils/db/conn-db-handler.ts index cceb9ec..944a7f1 100644 --- a/package-shared/utils/db/conn-db-handler.ts +++ b/package-shared/utils/db/conn-db-handler.ts @@ -23,7 +23,7 @@ export default async function connDbHandler( /** * MariaDB Connection */ - conn?: mariadb.Connection, + conn?: mariadb.Connection | null, /** * String Or `ConnDBHandlerQueryObject` Array */ @@ -43,21 +43,20 @@ export default async function connDbHandler( let queryErrorArray: DSQLErrorObject[] = []; if (typeof query == "string") { - const res = await finalConnection.query(trimQuery(query), values); + const [results] = await finalConnection.query( + trimQuery(query), + values + ); if (debug) { debugLog({ - log: res, + log: results, addTime: true, label: "res", }); } - if (Array.isArray(res)) { - return Array.from(res); - } - - return res; + return results; } else if (typeof query == "object") { const resArray = []; @@ -75,25 +74,18 @@ export default async function connDbHandler( queryObj.values ); + const results = queryObjRes[0]; + if (debug) { debugLog({ - log: queryObjRes, + log: results, addTime: true, label: "queryObjRes", }); } - if (Array.isArray(queryObjRes)) { - resArray.push(Array.from(queryObjRes)); - } else { - resArray.push(queryObjRes); - } + resArray.push(results); } catch (error: any) { - global.ERROR_CALLBACK?.( - `Connection DB Handler Query Error`, - error as Error - ); - console.log("query", query); resArray.push(null); @@ -121,8 +113,6 @@ export default async function connDbHandler( return null; } } catch (error: any) { - global.ERROR_CALLBACK?.(`Connection DB Handler Error`, error as Error); - if (debug) { debugLog({ log: `Connection DB Handler Error: ${error.message}`, diff --git a/package-shared/utils/docker-test-db-connection.ts b/package-shared/utils/docker-test-db-connection.ts new file mode 100644 index 0000000..84b7063 --- /dev/null +++ b/package-shared/utils/docker-test-db-connection.ts @@ -0,0 +1,40 @@ +import debugLog from "./logging/debug-log"; +import mariaDBlocalQuery from "./mariadb-local-query"; + +let checkDbRetries = 0; +const MAX_CHECK_DB_RETRIES = 10; +const DEFAULT_SLEEP_TIME = 3000; + +type Params = { + maxRetries?: number; + sleepTime?: number; +}; + +export default async function dockerTestDbConnection(params?: Params) { + const maxRetries = params?.maxRetries || MAX_CHECK_DB_RETRIES; + const sleepTime = params?.sleepTime || DEFAULT_SLEEP_TIME; + + while (true) { + if (checkDbRetries > maxRetries) { + debugLog({ + log: `Max Retries for checking Database. Exiting ...`, + addTime: true, + label: "MaxRetries", + }); + process.exit(1); + } + + const checkDb = mariaDBlocalQuery(`SHOW DATABASES`); + + const isDbReady = + typeof checkDb == "string" && + Boolean(checkDb.match(/\ninformation_schema\n/)); + + if (isDbReady) { + break; + } else { + checkDbRetries++; + await Bun.sleep(sleepTime); + } + } +} diff --git a/package-shared/utils/docker-test-maxscale-connection.ts b/package-shared/utils/docker-test-maxscale-connection.ts new file mode 100644 index 0000000..290b861 --- /dev/null +++ b/package-shared/utils/docker-test-maxscale-connection.ts @@ -0,0 +1,40 @@ +import debugLog from "./logging/debug-log"; +import mariaDBlocalQuery from "./mariadb-local-query"; + +let checkDbRetries = 0; +const MAX_CHECK_DB_RETRIES = 10; +const DEFAULT_SLEEP_TIME = 3000; + +type Params = { + maxRetries?: number; + sleepTime?: number; +}; + +export default async function dockerTestMaxscaleConnection(params?: Params) { + const maxRetries = params?.maxRetries || MAX_CHECK_DB_RETRIES; + const sleepTime = params?.sleepTime || DEFAULT_SLEEP_TIME; + + // while (true) { + // if (checkDbRetries > maxRetries) { + // debugLog({ + // log: `Max Retries for checking Database. Exiting ...`, + // addTime: true, + // label: "MaxRetries", + // }); + // process.exit(1); + // } + + // const checkDb = mariaDBlocalQuery(`SHOW DATABASES`); + + // const isDbReady = + // typeof checkDb == "string" && + // Boolean(checkDb.match(/\ninformation_schema\n/)); + + // if (isDbReady) { + // break; + // } else { + // checkDbRetries++; + // await Bun.sleep(sleepTime); + // } + // } +} diff --git a/package-shared/utils/execute.ts b/package-shared/utils/execute.ts new file mode 100644 index 0000000..e2131f5 --- /dev/null +++ b/package-shared/utils/execute.ts @@ -0,0 +1,44 @@ +import { ExecOptions, execSync, ExecSyncOptions } from "child_process"; + +export default function execute( + cmd: string | string[], + options?: ExecSyncOptions +): string | (string | undefined)[] | undefined { + function runCmd(cmd: string) { + try { + const res = execSync(cmd, { + encoding: "utf-8", + ...options, + }); + + if (typeof res == "string") { + return res.trim(); + } else { + return undefined; + } + } catch (error: any) { + console.log(`Execute Run Error =>`, error.message); + console.log(`Execute CMD =>`, cmd); + return undefined; + } + } + + try { + if (typeof cmd == "string") { + return runCmd(cmd); + } else if (Array.isArray(cmd)) { + let resArr: (string | undefined)[] = []; + + for (let i = 0; i < cmd.length; i++) { + const singleCmd = cmd[i]; + const res = runCmd(singleCmd); + resArr.push(res); + } + + return resArr; + } + } catch (error: any) { + console.log(`Execute Error =>`, error.message); + return undefined; + } +} diff --git a/package-shared/utils/grab-api-key.ts b/package-shared/utils/grab-api-key.ts new file mode 100644 index 0000000..04a7f28 --- /dev/null +++ b/package-shared/utils/grab-api-key.ts @@ -0,0 +1,8 @@ +export default function grabAPIKey(key?: string) { + return ( + key || + process.env.DSQL_API_KEY || + process.env.DSQL_FULL_ACCESS_API_KEY || + process.env.DSQL_READ_ONLY_API_KEY + ); +} diff --git a/package-shared/utils/grab-dsql-connection.ts b/package-shared/utils/grab-dsql-connection.ts index 0f35710..bb4fecc 100644 --- a/package-shared/utils/grab-dsql-connection.ts +++ b/package-shared/utils/grab-dsql-connection.ts @@ -1,23 +1,19 @@ -import mariadb, { Connection, Pool } from "mariadb"; +import mariadb, { Connection, ConnectionConfig } from "mariadb"; import grabDbSSL from "./backend/grabDbSSL"; type Param = { - /** - * Read Only? - */ - ro?: boolean; - /** - * Full Access? - */ - fa?: boolean; /** * No Database Connection */ noDb?: boolean; /** - * Is this a local connection? + * Database Name */ - local?: boolean; + database?: string; + /** + * Debug + */ + config?: ConnectionConfig; }; /** @@ -26,94 +22,106 @@ type Param = { export default async function grabDSQLConnection( param?: Param ): Promise { - return await mariadb.createConnection({ + const config: ConnectionConfig = { host: process.env.DSQL_DB_HOST, user: process.env.DSQL_DB_USERNAME, password: process.env.DSQL_DB_PASSWORD, - database: param?.noDb ? undefined : process.env.DSQL_DB_NAME, + database: + param?.database || + (param?.noDb ? undefined : process.env.DSQL_DB_NAME), port: process.env.DSQL_DB_PORT ? Number(process.env.DSQL_DB_PORT) : undefined, charset: "utf8mb4", ssl: grabDbSSL(), + bigIntAsNumber: true, supportBigNumbers: true, bigNumberStrings: false, dateStrings: true, - }); + metaAsArray: true, + ...param?.config, + }; - if (global.DSQL_USE_LOCAL || param?.local) { - return ( - global.DSQL_DB_CONN || - (await mariadb.createConnection({ - host: process.env.DSQL_DB_HOST, - user: process.env.DSQL_DB_USERNAME, - password: process.env.DSQL_DB_PASSWORD, - database: param?.noDb ? undefined : process.env.DSQL_DB_NAME, - port: process.env.DSQL_DB_PORT - ? Number(process.env.DSQL_DB_PORT) - : undefined, - charset: "utf8mb4", - ssl: grabDbSSL(), - supportBigNumbers: true, - bigNumberStrings: false, - dateStrings: true, - })) - ); + try { + return await mariadb.createConnection(config); + } catch (error) { + console.log(`Error Grabbing DSQL Connection =>`, config); + throw error; } - if (param?.ro) { - return ( - global.DSQL_READ_ONLY_DB_CONN || - (await mariadb.createConnection({ - host: process.env.DSQL_DB_HOST, - user: process.env.DSQL_DB_READ_ONLY_USERNAME, - password: process.env.DSQL_DB_READ_ONLY_PASSWORD, - port: process.env.DSQL_DB_PORT - ? Number(process.env.DSQL_DB_PORT) - : undefined, - charset: "utf8mb4", - ssl: grabDbSSL(), - supportBigNumbers: true, - bigNumberStrings: false, - dateStrings: true, - })) - ); - } + // if (global.DSQL_USE_LOCAL || param?.local) { + // return ( + // global.DSQL_DB_CONN || + // (await mariadb.createConnection({ + // host: process.env.DSQL_DB_HOST, + // user: process.env.DSQL_DB_USERNAME, + // password: process.env.DSQL_DB_PASSWORD, + // database: param?.noDb ? undefined : process.env.DSQL_DB_NAME, + // port: process.env.DSQL_DB_PORT + // ? Number(process.env.DSQL_DB_PORT) + // : undefined, + // charset: "utf8mb4", + // ssl: grabDbSSL(), + // supportBigNumbers: true, + // bigNumberStrings: false, + // dateStrings: true, + // })) + // ); + // } - if (param?.fa) { - return ( - global.DSQL_FULL_ACCESS_DB_CONN || - (await mariadb.createConnection({ - host: process.env.DSQL_DB_HOST, - user: process.env.DSQL_DB_FULL_ACCESS_USERNAME, - password: process.env.DSQL_DB_FULL_ACCESS_PASSWORD, - port: process.env.DSQL_DB_PORT - ? Number(process.env.DSQL_DB_PORT) - : undefined, - charset: "utf8mb4", - ssl: grabDbSSL(), - supportBigNumbers: true, - bigNumberStrings: false, - dateStrings: true, - })) - ); - } + // if (param?.ro) { + // return ( + // global.DSQL_READ_ONLY_DB_CONN || + // (await mariadb.createConnection({ + // host: process.env.DSQL_DB_HOST, + // user: process.env.DSQL_DB_READ_ONLY_USERNAME, + // password: process.env.DSQL_DB_READ_ONLY_PASSWORD, + // port: process.env.DSQL_DB_PORT + // ? Number(process.env.DSQL_DB_PORT) + // : undefined, + // charset: "utf8mb4", + // ssl: grabDbSSL(), + // supportBigNumbers: true, + // bigNumberStrings: false, + // dateStrings: true, + // })) + // ); + // } - return ( - global.DSQL_DB_CONN || - (await mariadb.createConnection({ - host: process.env.DSQL_DB_HOST, - user: process.env.DSQL_DB_USERNAME, - password: process.env.DSQL_DB_PASSWORD, - database: param?.noDb ? undefined : process.env.DSQL_DB_NAME, - port: process.env.DSQL_DB_PORT - ? Number(process.env.DSQL_DB_PORT) - : undefined, - charset: "utf8mb4", - ssl: grabDbSSL(), - supportBigNumbers: true, - bigNumberStrings: false, - dateStrings: true, - })) - ); + // if (param?.fa) { + // return ( + // global.DSQL_FULL_ACCESS_DB_CONN || + // (await mariadb.createConnection({ + // host: process.env.DSQL_DB_HOST, + // user: process.env.DSQL_DB_FULL_ACCESS_USERNAME, + // password: process.env.DSQL_DB_FULL_ACCESS_PASSWORD, + // port: process.env.DSQL_DB_PORT + // ? Number(process.env.DSQL_DB_PORT) + // : undefined, + // charset: "utf8mb4", + // ssl: grabDbSSL(), + // supportBigNumbers: true, + // bigNumberStrings: false, + // dateStrings: true, + // })) + // ); + // } + + // return ( + // global.DSQL_DB_CONN || + // (await mariadb.createConnection({ + // host: process.env.DSQL_DB_HOST, + // user: process.env.DSQL_DB_USERNAME, + // password: process.env.DSQL_DB_PASSWORD, + // database: param?.noDb ? undefined : process.env.DSQL_DB_NAME, + // port: process.env.DSQL_DB_PORT + // ? Number(process.env.DSQL_DB_PORT) + // : undefined, + // charset: "utf8mb4", + // ssl: grabDbSSL(), + // supportBigNumbers: true, + // bigNumberStrings: false, + // dateStrings: true, + // })) + // ); } diff --git a/package-shared/utils/grab-remote-urls.ts b/package-shared/utils/grab-remote-urls.ts new file mode 100644 index 0000000..f891d75 --- /dev/null +++ b/package-shared/utils/grab-remote-urls.ts @@ -0,0 +1,16 @@ +export default function grabDSQLRemoteURLs() { + const communityTarballURL = + "https://static.datasquirel.com/images/user-images/user-2/dsql/distro/dsql-community.tar.xz"; + const communityTarballShortURL = + "https://datasquirel.com/api/media/dsql-community"; + + const installScriptURL = "https://datasquirel.com/api/media/install"; + const updateScriptURL = "https://datasquirel.com/api/media/update"; + + return { + communityTarballURL, + communityTarballShortURL, + installScriptURL, + updateScriptURL, + }; +} diff --git a/package-shared/utils/mariadb-local-query.ts b/package-shared/utils/mariadb-local-query.ts new file mode 100644 index 0000000..f9ca4d9 --- /dev/null +++ b/package-shared/utils/mariadb-local-query.ts @@ -0,0 +1,26 @@ +import grabDockerStackServicesNames from "@/package-shared/utils/backend/names/grab-docker-stack-services-names"; +import normalizeText from "@/package-shared/utils/normalize-text"; +import execute from "./execute"; + +export default function mariaDBlocalQuery(query: string | string[]) { + const { dbServiceName, maxScaleServiceName } = + grabDockerStackServicesNames(); + + const MARIADB_CMD_PREFIX = `docker exec ${dbServiceName} mariadb -u root -p"${process.env.DSQL_MARIADB_ROOT_PASSWORD}"`; + + function grabMariadbDockerCmd(cmd: string) { + return `${MARIADB_CMD_PREFIX} -e "${removeQueryDoubleQuotes( + normalizeText(cmd) + )}"`; + } + + const finalQuery = Array.isArray(query) + ? query.map((qry) => grabMariadbDockerCmd(qry)) + : grabMariadbDockerCmd(query); + + return execute(finalQuery); +} + +export function removeQueryDoubleQuotes(query: string) { + return query.replace(/\"/gm, '\\"'); +} diff --git a/package-shared/utils/setup-db.ts b/package-shared/utils/setup-db.ts index 1087ec1..f6dfd85 100644 --- a/package-shared/utils/setup-db.ts +++ b/package-shared/utils/setup-db.ts @@ -8,14 +8,7 @@ type Params = { connectionLimit?: number; }; -export default async function setupDSQLDb({ - useLocal, - dbConfig, - ssl, - connectionLimit = 20, -}: Params) { - global.DSQL_USE_LOCAL = useLocal || true; - +export default async function setupDSQLDb({ dbConfig, ssl }: Params) { const conn = await mariadb.createConnection({ host: process.env.DSQL_DB_HOST, user: process.env.DSQL_DB_USERNAME, @@ -27,6 +20,8 @@ export default async function setupDSQLDb({ supportBigNumbers: true, bigNumberStrings: false, dateStrings: true, + bigIntAsNumber: true, + metaAsArray: true, }); // const conn = mariadb.createPool({ @@ -43,8 +38,6 @@ export default async function setupDSQLDb({ // dateStrings: true, // }); - global.DSQL_DB_CONN = conn; - // let readOnlyConnection; // if (addReadOnlyConn) { diff --git a/package-shared/utils/setup-global-network.ts b/package-shared/utils/setup-global-network.ts index c1fadce..f3cd565 100644 --- a/package-shared/utils/setup-global-network.ts +++ b/package-shared/utils/setup-global-network.ts @@ -18,5 +18,8 @@ export default function setupGlobalNetwork() { newNtwkCmd += ` ${globalNetworkName}`; execSync(newNtwkCmd); - } catch (error) {} + } catch (error) { + console.log(`Failed to create global network ${globalNetworkName}`); + console.log(globalIPPrefix); + } } diff --git a/package-shared/utils/test-db-connection.ts b/package-shared/utils/test-db-connection.ts new file mode 100644 index 0000000..2e804a2 --- /dev/null +++ b/package-shared/utils/test-db-connection.ts @@ -0,0 +1,43 @@ +import dbHandler from "../functions/backend/dbHandler"; + +let testDbConnRetries = 0; +const MAX_TEST_DB_CONN_RETRIES = 10; +const SLEEP_TIME = 2000; + +type Params = { + maxRetries?: number; + sleepTime?: number; +}; + +export default async function testDbConnection(params?: Params) { + console.log("Testing Database Connection ...", testDbConnRetries); + + while (true) { + testDbConnRetries++; + + try { + const res = (await dbHandler({ query: `SHOW DATABASES` })) as + | any[] + | null; + + if (res?.[0]) { + console.log("Database Connection Complete!"); + break; + } + + await Bun.sleep(params?.sleepTime || SLEEP_TIME); + + if ( + testDbConnRetries > + (params?.maxRetries || MAX_TEST_DB_CONN_RETRIES) + ) { + console.log("Database Connection Failed!"); + process.exit(1); + } + } catch (error) { + await Bun.sleep(params?.sleepTime || SLEEP_TIME); + } + } + + return true; +} diff --git a/package.json b/package.json index ddf4257..34c0519 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "4.8.9", + "version": "4.9.0", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": {