This commit is contained in:
Benjamin Toby 2025-01-21 18:43:03 +01:00
parent 9f773de1a1
commit 1db9c3a2e7
37 changed files with 244 additions and 311 deletions

2
dist/index.d.ts vendored
View File

@ -8,7 +8,7 @@ declare global {
/** /**
* Imports * Imports
*/ */
import get from "./utils/get/index"; import get from "./utils/get";
import post from "./utils/post"; import post from "./utils/post";
import getSchema from "./utils/get-schema"; import getSchema from "./utils/get-schema";
import uploadImage from "./utils/upload-image"; import uploadImage from "./utils/upload-image";

4
dist/index.js vendored
View File

@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
/** /**
* Imports * Imports
*/ */
const index_1 = __importDefault(require("./utils/get/index")); const get_1 = __importDefault(require("./utils/get"));
const post_1 = __importDefault(require("./utils/post")); const post_1 = __importDefault(require("./utils/post"));
const get_schema_1 = __importDefault(require("./utils/get-schema")); const get_schema_1 = __importDefault(require("./utils/get-schema"));
const upload_image_1 = __importDefault(require("./utils/upload-image")); const upload_image_1 = __importDefault(require("./utils/upload-image"));
@ -82,7 +82,7 @@ const sql = {
* Main Export * Main Export
*/ */
const datasquirel = { const datasquirel = {
get: index_1.default, get: get_1.default,
post: post_1.default, post: post_1.default,
media, media,
user, user,

View File

@ -1,3 +1,4 @@
import { DbContextsArray } from "../../backend/db/runQuery";
import { ServerQueryParam } from "../../../types"; import { ServerQueryParam } from "../../../types";
type Param = { type Param = {
query: string | { query: string | {
@ -9,9 +10,10 @@ type Param = {
tableName?: string; tableName?: string;
dbSchema?: import("../../../types").DSQL_DatabaseSchemaType; dbSchema?: import("../../../types").DSQL_DatabaseSchemaType;
debug?: boolean; debug?: boolean;
dbContext?: (typeof DbContextsArray)[number];
}; };
/** /**
* # Get Function FOr API * # Get Function FOr API
*/ */
export default function apiGet({ query, dbFullName, queryValues, tableName, dbSchema, debug, }: Param): Promise<import("../../../types").GetReturn>; export default function apiGet({ query, dbFullName, queryValues, tableName, dbSchema, debug, dbContext, }: Param): Promise<import("../../../types").GetReturn>;
export {}; export {};

View File

@ -17,12 +17,12 @@ exports.default = apiGet;
const lodash_1 = __importDefault(require("lodash")); const lodash_1 = __importDefault(require("lodash"));
const serverError_1 = __importDefault(require("../../backend/serverError")); const serverError_1 = __importDefault(require("../../backend/serverError"));
const runQuery_1 = __importDefault(require("../../backend/db/runQuery")); const runQuery_1 = __importDefault(require("../../backend/db/runQuery"));
const grab_query_and_values_1 = __importDefault(require("../../../../utils/get/(utils)/grab-query-and-values")); const grab_query_and_values_1 = __importDefault(require("../../../utils/grab-query-and-values"));
/** /**
* # Get Function FOr API * # Get Function FOr API
*/ */
function apiGet(_a) { function apiGet(_a) {
return __awaiter(this, arguments, void 0, function* ({ query, dbFullName, queryValues, tableName, dbSchema, debug, }) { return __awaiter(this, arguments, void 0, function* ({ query, dbFullName, queryValues, tableName, dbSchema, debug, dbContext, }) {
const queryAndValues = (0, grab_query_and_values_1.default)({ const queryAndValues = (0, grab_query_and_values_1.default)({
query, query,
values: queryValues, values: queryValues,
@ -40,6 +40,8 @@ function apiGet(_a) {
readOnly: true, readOnly: true,
dbSchema, dbSchema,
tableName, tableName,
dbContext,
debug,
}); });
if (debug && global.DSQL_USE_LOCAL) { if (debug && global.DSQL_USE_LOCAL) {
console.log("apiGet:result", result); console.log("apiGet:result", result);

View File

@ -1,3 +1,4 @@
import { DbContextsArray } from "../../backend/db/runQuery";
import { DSQL_DatabaseSchemaType, PostReturn } from "../../../types"; import { DSQL_DatabaseSchemaType, PostReturn } from "../../../types";
type Param = { type Param = {
query: any; query: any;
@ -5,9 +6,10 @@ type Param = {
dbFullName: string; dbFullName: string;
tableName?: string; tableName?: string;
dbSchema?: DSQL_DatabaseSchemaType; dbSchema?: DSQL_DatabaseSchemaType;
dbContext?: (typeof DbContextsArray)[number];
}; };
/** /**
* # Post Function For API * # Post Function For API
*/ */
export default function apiPost({ query, dbFullName, queryValues, tableName, dbSchema, }: Param): Promise<PostReturn>; export default function apiPost({ query, dbFullName, queryValues, tableName, dbSchema, dbContext, }: Param): Promise<PostReturn>;
export {}; export {};

View File

@ -20,7 +20,7 @@ const runQuery_1 = __importDefault(require("../../backend/db/runQuery"));
* # Post Function For API * # Post Function For API
*/ */
function apiPost(_a) { function apiPost(_a) {
return __awaiter(this, arguments, void 0, function* ({ query, dbFullName, queryValues, tableName, dbSchema, }) { return __awaiter(this, arguments, void 0, function* ({ query, dbFullName, queryValues, tableName, dbSchema, dbContext, }) {
var _b; var _b;
if (typeof query === "string" && (query === null || query === void 0 ? void 0 : query.match(/^create |^alter |^drop /i))) { if (typeof query === "string" && (query === null || query === void 0 ? void 0 : query.match(/^create |^alter |^drop /i))) {
return { success: false, msg: "Wrong Input" }; return { success: false, msg: "Wrong Input" };
@ -43,6 +43,7 @@ function apiPost(_a) {
dbSchema: dbSchema, dbSchema: dbSchema,
queryValuesArray: queryValues, queryValuesArray: queryValues,
tableName, tableName,
dbContext,
}); });
results = result; results = result;
if (error) if (error)

View File

@ -1,5 +1,6 @@
import { DbContextsArray } from "./runQuery";
type Param = { type Param = {
dbContext?: "Master" | "Dsql User"; dbContext?: (typeof DbContextsArray)[number];
paradigm?: "Read Only" | "Full Access"; paradigm?: "Read Only" | "Full Access";
dbFullName?: string; dbFullName?: string;
tableName: string; tableName: string;

View File

@ -1,5 +1,4 @@
"use strict"; "use strict";
// @ts-check
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) { return new (P || (P = Promise))(function (resolve, reject) {
@ -17,10 +16,9 @@ exports.default = addDbEntry;
const sanitize_html_1 = __importDefault(require("sanitize-html")); const sanitize_html_1 = __importDefault(require("sanitize-html"));
const sanitizeHtmlOptions_1 = __importDefault(require("../html/sanitizeHtmlOptions")); const sanitizeHtmlOptions_1 = __importDefault(require("../html/sanitizeHtmlOptions"));
const updateDbEntry_1 = __importDefault(require("./updateDbEntry")); const updateDbEntry_1 = __importDefault(require("./updateDbEntry"));
const DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/DB_HANDLER"));
const DSQL_USER_DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/DSQL_USER_DB_HANDLER"));
const encrypt_1 = __importDefault(require("../../dsql/encrypt")); const encrypt_1 = __importDefault(require("../../dsql/encrypt"));
const LOCAL_DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/LOCAL_DB_HANDLER")); const conn_db_handler_1 = __importDefault(require("../../../utils/db/conn-db-handler"));
const check_if_is_master_1 = __importDefault(require("../../../utils/check-if-is-master"));
/** /**
* Add a db Entry Function * Add a db Entry Function
*/ */
@ -30,19 +28,13 @@ function addDbEntry(_a) {
/** /**
* Initialize variables * Initialize variables
*/ */
const isMaster = global.DSQL_USE_LOCAL const isMaster = (0, check_if_is_master_1.default)({ dbContext, dbFullName });
? true const DB_CONN = isMaster
: (dbContext === null || dbContext === void 0 ? void 0 : dbContext.match(/dsql.user/i)) ? global.DSQL_DB_CONN
? false : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
: dbFullName && !dbFullName.match(/^datasquirel$/) const DB_RO_CONN = isMaster
? false ? global.DSQL_DB_CONN
: true; : global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
/** @type { any } */
const dbHandler = global.DSQL_USE_LOCAL
? LOCAL_DB_HANDLER_1.default
: isMaster
? DB_HANDLER_1.default
: DSQL_USER_DB_HANDLER_1.default;
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
@ -61,24 +53,15 @@ function addDbEntry(_a) {
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
/**
* Handle function logic
*/
if (duplicateColumnName && typeof duplicateColumnName === "string") { if (duplicateColumnName && typeof duplicateColumnName === "string") {
const duplicateValue = isMaster const checkDuplicateQuery = `SELECT * FROM ${isMaster ? "" : `\`${dbFullName}\`.`}\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`;
? yield dbHandler(`SELECT * FROM \`${tableName}\` WHERE \`${duplicateColumnName}\`=?`, [duplicateColumnValue]) const duplicateValue = yield (0, conn_db_handler_1.default)(DB_RO_CONN, checkDuplicateQuery, [duplicateColumnValue]);
: yield dbHandler({
paradigm: "Read Only",
queryString: `SELECT * FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`,
queryValues: [duplicateColumnValue],
});
if ((duplicateValue === null || duplicateValue === void 0 ? void 0 : duplicateValue[0]) && !update) { if ((duplicateValue === null || duplicateValue === void 0 ? void 0 : duplicateValue[0]) && !update) {
return null; return null;
} }
else if (duplicateValue && duplicateValue[0] && update) { else if (duplicateValue && duplicateValue[0] && update) {
return yield (0, updateDbEntry_1.default)({ return yield (0, updateDbEntry_1.default)({
dbContext, dbContext,
paradigm,
dbFullName, dbFullName,
tableName, tableName,
data, data,
@ -145,7 +128,7 @@ function addDbEntry(_a) {
insertValuesArray.push(value); insertValuesArray.push(value);
} }
} }
catch ( /** @type {any} */error) { catch (error) {
console.log("DSQL: Error in parsing data keys =>", error.message); console.log("DSQL: Error in parsing data keys =>", error.message);
continue; continue;
} }
@ -169,15 +152,11 @@ function addDbEntry(_a) {
insertValuesArray.push(Date.now()); insertValuesArray.push(Date.now());
} }
//////////////////////////////////////// ////////////////////////////////////////
const query = `INSERT INTO \`${dbFullName}\`.\`${tableName}\` (${insertKeysArray.join(",")}) VALUES (${insertValuesArray.map(() => "?").join(",")})`; const query = `INSERT INTO ${isMaster ? "" : `\`${dbFullName}\`.`}\`${tableName}\` (${insertKeysArray.join(",")}) VALUES (${insertValuesArray
.map(() => "?")
.join(",")})`;
const queryValuesArray = insertValuesArray; const queryValuesArray = insertValuesArray;
const newInsert = isMaster const newInsert = yield (0, conn_db_handler_1.default)(DB_CONN, query, queryValuesArray);
? yield dbHandler(query, queryValuesArray)
: yield dbHandler({
paradigm,
queryString: query,
queryValues: queryValuesArray,
});
/** /**
* Return statement * Return statement
*/ */

View File

@ -1,6 +1,6 @@
import { DbContextsArray } from "./runQuery";
type Param = { type Param = {
dbContext?: string; dbContext?: (typeof DbContextsArray)[number];
paradigm?: "Read Only" | "Full Access";
dbFullName: string; dbFullName: string;
tableName: string; tableName: string;
tableSchema?: import("../../../types").DSQL_TableSchemaType; tableSchema?: import("../../../types").DSQL_TableSchemaType;
@ -11,5 +11,5 @@ type Param = {
* # Delete DB Entry Function * # Delete DB Entry Function
* @description * @description
*/ */
export default function deleteDbEntry({ dbContext, paradigm, dbFullName, tableName, identifierColumnName, identifierValue, }: Param): Promise<object | null>; export default function deleteDbEntry({ dbContext, dbFullName, tableName, identifierColumnName, identifierValue, }: Param): Promise<object | null>;
export {}; export {};

View File

@ -13,41 +13,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.default = deleteDbEntry; exports.default = deleteDbEntry;
const DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/DB_HANDLER")); const check_if_is_master_1 = __importDefault(require("../../../utils/check-if-is-master"));
const DSQL_USER_DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/DSQL_USER_DB_HANDLER")); const conn_db_handler_1 = __importDefault(require("../../../utils/db/conn-db-handler"));
const LOCAL_DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/LOCAL_DB_HANDLER"));
/** /**
* # Delete DB Entry Function * # Delete DB Entry Function
* @description * @description
*/ */
function deleteDbEntry(_a) { function deleteDbEntry(_a) {
return __awaiter(this, arguments, void 0, function* ({ dbContext, paradigm, dbFullName, tableName, identifierColumnName, identifierValue, }) { return __awaiter(this, arguments, void 0, function* ({ dbContext, dbFullName, tableName, identifierColumnName, identifierValue, }) {
try { try {
const isMaster = global.DSQL_USE_LOCAL const isMaster = (0, check_if_is_master_1.default)({ dbContext, dbFullName });
? true const DB_CONN = isMaster
: (dbContext === null || dbContext === void 0 ? void 0 : dbContext.match(/dsql.user/i)) ? global.DSQL_DB_CONN
? false : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
: dbFullName && !dbFullName.match(/^datasquirel$/) const DB_RO_CONN = isMaster
? false ? global.DSQL_DB_CONN
: true; : global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
const dbHandler = global.DSQL_USE_LOCAL
? LOCAL_DB_HANDLER_1.default
: isMaster
? DB_HANDLER_1.default
: DSQL_USER_DB_HANDLER_1.default;
/** /**
* Execution * Execution
* *
* @description * @description
*/ */
const query = `DELETE FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${identifierColumnName}\`=?`; const query = `DELETE FROM ${isMaster ? "" : `\`${dbFullName}\`.`}\`${tableName}\` WHERE \`${identifierColumnName}\`=?`;
const deletedEntry = isMaster const deletedEntry = yield (0, conn_db_handler_1.default)(DB_CONN, query, [
? yield dbHandler(query, [identifierValue]) identifierValue,
: yield dbHandler({ ]);
paradigm,
queryString: query,
queryValues: [identifierValue],
});
/** /**
* Return statement * Return statement
*/ */

View File

@ -1,4 +1,6 @@
export declare const DbContextsArray: readonly ["Master", "Dsql User"];
type Param = { type Param = {
dbContext?: (typeof DbContextsArray)[number];
dbFullName: string; dbFullName: string;
query: string | any; query: string | any;
readOnly?: boolean; readOnly?: boolean;
@ -10,5 +12,5 @@ type Param = {
/** /**
* # Run DSQL users queries * # Run DSQL users queries
*/ */
export default function runQuery({ dbFullName, query, readOnly, dbSchema, queryValuesArray, tableName, debug, }: Param): Promise<any>; export default function runQuery({ dbFullName, query, readOnly, dbSchema, queryValuesArray, tableName, debug, dbContext, }: Param): Promise<any>;
export {}; export {};

View File

@ -12,6 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.DbContextsArray = void 0;
exports.default = runQuery; exports.default = runQuery;
const fullAccessDbHandler_1 = __importDefault(require("../fullAccessDbHandler")); const fullAccessDbHandler_1 = __importDefault(require("../fullAccessDbHandler"));
const varReadOnlyDatabaseDbHandler_1 = __importDefault(require("../varReadOnlyDatabaseDbHandler")); const varReadOnlyDatabaseDbHandler_1 = __importDefault(require("../varReadOnlyDatabaseDbHandler"));
@ -20,11 +21,12 @@ const addDbEntry_1 = __importDefault(require("./addDbEntry"));
const updateDbEntry_1 = __importDefault(require("./updateDbEntry")); const updateDbEntry_1 = __importDefault(require("./updateDbEntry"));
const deleteDbEntry_1 = __importDefault(require("./deleteDbEntry")); const deleteDbEntry_1 = __importDefault(require("./deleteDbEntry"));
const trim_sql_1 = __importDefault(require("../../../utils/trim-sql")); const trim_sql_1 = __importDefault(require("../../../utils/trim-sql"));
exports.DbContextsArray = ["Master", "Dsql User"];
/** /**
* # Run DSQL users queries * # Run DSQL users queries
*/ */
function runQuery(_a) { function runQuery(_a) {
return __awaiter(this, arguments, void 0, function* ({ dbFullName, query, readOnly, dbSchema, queryValuesArray, tableName, debug, }) { return __awaiter(this, arguments, void 0, function* ({ dbFullName, query, readOnly, dbSchema, queryValuesArray, tableName, debug, dbContext, }) {
/** /**
* Declare variables * Declare variables
* *
@ -95,10 +97,7 @@ function runQuery(_a) {
switch (action.toLowerCase()) { switch (action.toLowerCase()) {
case "insert": case "insert":
result = yield (0, addDbEntry_1.default)({ result = yield (0, addDbEntry_1.default)({
dbContext: global.DSQL_USE_LOCAL dbContext,
? "Master"
: "Dsql User",
paradigm: "Full Access",
dbFullName: dbFullName, dbFullName: dbFullName,
tableName: table, tableName: table,
data: data, data: data,
@ -113,10 +112,7 @@ function runQuery(_a) {
break; break;
case "update": case "update":
result = yield (0, updateDbEntry_1.default)({ result = yield (0, updateDbEntry_1.default)({
dbContext: global.DSQL_USE_LOCAL dbContext,
? "Master"
: "Dsql User",
paradigm: "Full Access",
dbFullName: dbFullName, dbFullName: dbFullName,
tableName: table, tableName: table,
data: data, data: data,
@ -127,10 +123,7 @@ function runQuery(_a) {
break; break;
case "delete": case "delete":
result = yield (0, deleteDbEntry_1.default)({ result = yield (0, deleteDbEntry_1.default)({
dbContext: global.DSQL_USE_LOCAL dbContext,
? "Master"
: "Dsql User",
paradigm: "Full Access",
dbFullName: dbFullName, dbFullName: dbFullName,
tableName: table, tableName: table,
identifierColumnName, identifierColumnName,

View File

@ -1,6 +1,6 @@
import { DbContextsArray } from "./runQuery";
type Param = { type Param = {
dbContext?: "Master" | "Dsql User"; dbContext?: (typeof DbContextsArray)[number];
paradigm?: "Read Only" | "Full Access";
dbFullName?: string; dbFullName?: string;
tableName: string; tableName: string;
encryptionKey?: string; encryptionKey?: string;
@ -14,5 +14,5 @@ type Param = {
* # Update DB Function * # Update DB Function
* @description * @description
*/ */
export default function updateDbEntry({ dbContext, paradigm, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, }: Param): Promise<object | null>; export default function updateDbEntry({ dbContext, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, }: Param): Promise<object | null>;
export {}; export {};

View File

@ -15,35 +15,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.default = updateDbEntry; exports.default = updateDbEntry;
const sanitize_html_1 = __importDefault(require("sanitize-html")); const sanitize_html_1 = __importDefault(require("sanitize-html"));
const sanitizeHtmlOptions_1 = __importDefault(require("../html/sanitizeHtmlOptions")); const sanitizeHtmlOptions_1 = __importDefault(require("../html/sanitizeHtmlOptions"));
const DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/DB_HANDLER"));
const DSQL_USER_DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/DSQL_USER_DB_HANDLER"));
const encrypt_1 = __importDefault(require("../../dsql/encrypt")); const encrypt_1 = __importDefault(require("../../dsql/encrypt"));
const LOCAL_DB_HANDLER_1 = __importDefault(require("../../../utils/backend/global-db/LOCAL_DB_HANDLER")); const check_if_is_master_1 = __importDefault(require("../../../utils/check-if-is-master"));
const conn_db_handler_1 = __importDefault(require("../../../utils/db/conn-db-handler"));
/** /**
* # Update DB Function * # Update DB Function
* @description * @description
*/ */
function updateDbEntry(_a) { function updateDbEntry(_a) {
return __awaiter(this, arguments, void 0, function* ({ dbContext, paradigm, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, }) { return __awaiter(this, arguments, void 0, function* ({ dbContext, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, }) {
var _b; var _b;
/** /**
* Check if data is valid * Check if data is valid
*/ */
if (!data || !Object.keys(data).length) if (!data || !Object.keys(data).length)
return null; return null;
const isMaster = global.DSQL_USE_LOCAL const isMaster = (0, check_if_is_master_1.default)({ dbContext, dbFullName });
? true const DB_CONN = isMaster
: (dbContext === null || dbContext === void 0 ? void 0 : dbContext.match(/dsql.user/i)) ? global.DSQL_DB_CONN
? false : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
: dbFullName && !dbFullName.match(/^datasquirel$/) const DB_RO_CONN = isMaster
? false ? global.DSQL_DB_CONN
: true; : global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
/** @type {(a1:any, a2?:any)=> any } */
const dbHandler = global.DSQL_USE_LOCAL
? LOCAL_DB_HANDLER_1.default
: isMaster
? DB_HANDLER_1.default
: DSQL_USER_DB_HANDLER_1.default;
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
@ -126,15 +119,9 @@ function updateDbEntry(_a) {
updateKeyValueArray.push(`date_updated_code='${Date.now()}'`); updateKeyValueArray.push(`date_updated_code='${Date.now()}'`);
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
const query = `UPDATE \`${dbFullName}\`.\`${tableName}\` SET ${updateKeyValueArray.join(",")} WHERE \`${identifierColumnName}\`=?`; const query = `UPDATE ${isMaster ? "" : `\`${dbFullName}\`.`}\`${tableName}\` SET ${updateKeyValueArray.join(",")} WHERE \`${identifierColumnName}\`=?`;
updateValues.push(identifierValue); updateValues.push(identifierValue);
const updatedEntry = isMaster const updatedEntry = yield (0, conn_db_handler_1.default)(DB_CONN, query, updateValues);
? yield dbHandler(query, updateValues)
: yield dbHandler({
paradigm,
queryString: query,
queryValues: updateValues,
});
/** /**
* Return statement * Return statement
*/ */

View File

@ -1,5 +1,4 @@
"use strict"; "use strict";
// @ts-check
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) { return new (P || (P = Promise))(function (resolve, reject) {
@ -14,8 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.default = fullAccessDbHandler; exports.default = fullAccessDbHandler;
const DSQL_USER_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/DSQL_USER_DB_HANDLER")); const conn_db_handler_1 = __importDefault(require("../../utils/db/conn-db-handler"));
const LOCAL_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/LOCAL_DB_HANDLER"));
const parseDbResults_1 = __importDefault(require("./parseDbResults")); const parseDbResults_1 = __importDefault(require("./parseDbResults"));
const serverError_1 = __importDefault(require("./serverError")); const serverError_1 = __importDefault(require("./serverError"));
/** /**
@ -29,23 +27,17 @@ function fullAccessDbHandler(_a) {
* @description Declare "results" variable * @description Declare "results" variable
*/ */
let results; let results;
const DB_CONN = global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
/** /**
* Fetch from db * Fetch from db
* *
* @description Fetch data from db if no cache * @description Fetch data from db if no cache
*/ */
try { try {
/** ********************* Run Query */ results = yield (0, conn_db_handler_1.default)(DB_CONN, queryString, queryValuesArray);
results = global.DSQL_USE_LOCAL
? yield (0, LOCAL_DB_HANDLER_1.default)(queryString, queryValuesArray)
: yield (0, DSQL_USER_DB_HANDLER_1.default)({
paradigm: "Full Access",
queryString,
queryValues: queryValuesArray,
});
//////////////////////////////////////// ////////////////////////////////////////
} }
catch ( /** @type {any} */error) { catch (error) {
//////////////////////////////////////// ////////////////////////////////////////
(0, serverError_1.default)({ (0, serverError_1.default)({
component: "fullAccessDbHandler", component: "fullAccessDbHandler",
@ -56,6 +48,9 @@ function fullAccessDbHandler(_a) {
*/ */
return error.message; return error.message;
} }
finally {
DB_CONN === null || DB_CONN === void 0 ? void 0 : DB_CONN.end();
}
/** /**
* Return results * Return results
* *

View File

@ -1,5 +1,4 @@
"use strict"; "use strict";
// @ts-check
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) { return new (P || (P = Promise))(function (resolve, reject) {
@ -16,8 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.default = varReadOnlyDatabaseDbHandler; exports.default = varReadOnlyDatabaseDbHandler;
const serverError_1 = __importDefault(require("./serverError")); const serverError_1 = __importDefault(require("./serverError"));
const parseDbResults_1 = __importDefault(require("./parseDbResults")); const parseDbResults_1 = __importDefault(require("./parseDbResults"));
const DSQL_USER_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/DSQL_USER_DB_HANDLER")); const conn_db_handler_1 = __importDefault(require("../../utils/db/conn-db-handler"));
const LOCAL_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/LOCAL_DB_HANDLER"));
/** /**
* # Read Only Db Handler with Varaibles * # Read Only Db Handler with Varaibles
* @returns * @returns
@ -30,22 +28,17 @@ function varReadOnlyDatabaseDbHandler(_a) {
* @description Declare "results" variable * @description Declare "results" variable
*/ */
let results; let results;
const DB_CONN = global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
/** /**
* Fetch from db * Fetch from db
* *
* @description Fetch data from db if no cache * @description Fetch data from db if no cache
*/ */
try { try {
results = global.DSQL_USE_LOCAL results = yield (0, conn_db_handler_1.default)(DB_CONN, queryString, queryValuesArray);
? yield (0, LOCAL_DB_HANDLER_1.default)(queryString, queryValuesArray)
: yield (0, DSQL_USER_DB_HANDLER_1.default)({
paradigm: "Read Only",
queryString,
queryValues: queryValuesArray,
});
//////////////////////////////////////// ////////////////////////////////////////
} }
catch ( /** @type {any} */error) { catch (error) {
//////////////////////////////////////// ////////////////////////////////////////
(0, serverError_1.default)({ (0, serverError_1.default)({
component: "varReadOnlyDatabaseDbHandler", component: "varReadOnlyDatabaseDbHandler",
@ -57,6 +50,9 @@ function varReadOnlyDatabaseDbHandler(_a) {
*/ */
return error.message; return error.message;
} }
finally {
DB_CONN === null || DB_CONN === void 0 ? void 0 : DB_CONN.end();
}
/** /**
* Return results * Return results
* *

View File

@ -1256,4 +1256,13 @@ export type HttpFunctionResponse<ResObj extends {
str?: string; str?: string;
requestedPath?: string; requestedPath?: string;
}; };
export type ApiGetQueryObject<T extends {
[k: string]: any;
} = {
[k: string]: any;
}> = {
query: ServerQueryParam<T>;
table: string;
dbFullName?: string;
};
export {}; export {};

View File

@ -0,0 +1,6 @@
type Param = {
dbContext?: "Master" | "Dsql User";
dbFullName?: string;
};
export default function checkIfIsMaster({ dbContext, dbFullName }: Param): boolean;
export {};

View File

@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
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;
}

View File

@ -1,4 +1,4 @@
import { ApiGetQueryObject } from ".."; import { ApiGetQueryObject } from "../types";
type Param = { type Param = {
query: string | ApiGetQueryObject; query: string | ApiGetQueryObject;
values?: (string | number)[]; values?: (string | number)[];

View File

@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.default = apiGetGrabQueryAndValues; exports.default = apiGetGrabQueryAndValues;
const sql_generator_1 = __importDefault(require("../../../package-shared/functions/dsql/sql/sql-generator")); const sql_generator_1 = __importDefault(require("../functions/dsql/sql/sql-generator"));
function apiGetGrabQueryAndValues({ query, values }) { function apiGetGrabQueryAndValues({ query, values }) {
const queryGenObject = typeof query == "string" const queryGenObject = typeof query == "string"
? undefined ? undefined

View File

@ -1,13 +1,4 @@
import { GetReturn, ServerQueryParam } from "../../package-shared/types"; import { ApiGetQueryObject, GetReturn } from "../package-shared/types";
export type ApiGetQueryObject<T extends {
[k: string]: any;
} = {
[k: string]: any;
}> = {
query: ServerQueryParam<T>;
table: string;
dbFullName?: string;
};
type Param<T extends { type Param<T extends {
[k: string]: any; [k: string]: any;
} = { } = {

View File

@ -15,10 +15,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.default = get; exports.default = get;
const path_1 = __importDefault(require("path")); const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs")); const fs_1 = __importDefault(require("fs"));
const grab_host_names_1 = __importDefault(require("../../package-shared/utils/grab-host-names")); const grab_host_names_1 = __importDefault(require("../package-shared/utils/grab-host-names"));
const get_1 = __importDefault(require("../../package-shared/functions/api/query/get")); const get_1 = __importDefault(require("../package-shared/functions/api/query/get"));
const serialize_query_1 = __importDefault(require("../../package-shared/utils/serialize-query")); const serialize_query_1 = __importDefault(require("../package-shared/utils/serialize-query"));
const grab_query_and_values_1 = __importDefault(require("./(utils)/grab-query-and-values")); const grab_query_and_values_1 = __importDefault(require("../package-shared/utils/grab-query-and-values"));
/** /**
* # Make a get request to Datasquirel API * # Make a get request to Datasquirel API
*/ */

View File

@ -10,7 +10,7 @@ declare global {
/** /**
* Imports * Imports
*/ */
import get from "./utils/get/index"; import get from "./utils/get";
import post from "./utils/post"; import post from "./utils/post";
import getSchema from "./utils/get-schema"; import getSchema from "./utils/get-schema";

View File

@ -2,13 +2,13 @@
import _ from "lodash"; import _ from "lodash";
import serverError from "../../backend/serverError"; import serverError from "../../backend/serverError";
import runQuery from "../../backend/db/runQuery"; import runQuery, { DbContextsArray } from "../../backend/db/runQuery";
import { import {
DSQL_TableSchemaType, DSQL_TableSchemaType,
GetReturn, GetReturn,
ServerQueryParam, ServerQueryParam,
} from "../../../types"; } from "../../../types";
import apiGetGrabQueryAndValues from "../../../../utils/get/(utils)/grab-query-and-values"; import apiGetGrabQueryAndValues from "../../../utils/grab-query-and-values";
type Param = { type Param = {
query: query:
@ -22,6 +22,7 @@ type Param = {
tableName?: string; tableName?: string;
dbSchema?: import("../../../types").DSQL_DatabaseSchemaType; dbSchema?: import("../../../types").DSQL_DatabaseSchemaType;
debug?: boolean; debug?: boolean;
dbContext?: (typeof DbContextsArray)[number];
}; };
/** /**
@ -34,6 +35,7 @@ export default async function apiGet({
tableName, tableName,
dbSchema, dbSchema,
debug, debug,
dbContext,
}: Param): Promise<import("../../../types").GetReturn> { }: Param): Promise<import("../../../types").GetReturn> {
const queryAndValues = apiGetGrabQueryAndValues({ const queryAndValues = apiGetGrabQueryAndValues({
query, query,
@ -57,6 +59,8 @@ export default async function apiGet({
readOnly: true, readOnly: true,
dbSchema, dbSchema,
tableName, tableName,
dbContext,
debug,
}); });
if (debug && global.DSQL_USE_LOCAL) { if (debug && global.DSQL_USE_LOCAL) {

View File

@ -1,6 +1,6 @@
import _ from "lodash"; import _ from "lodash";
import serverError from "../../backend/serverError"; import serverError from "../../backend/serverError";
import runQuery from "../../backend/db/runQuery"; import runQuery, { DbContextsArray } from "../../backend/db/runQuery";
import { DSQL_DatabaseSchemaType, PostReturn } from "../../../types"; import { DSQL_DatabaseSchemaType, PostReturn } from "../../../types";
type Param = { type Param = {
@ -9,6 +9,7 @@ type Param = {
dbFullName: string; dbFullName: string;
tableName?: string; tableName?: string;
dbSchema?: DSQL_DatabaseSchemaType; dbSchema?: DSQL_DatabaseSchemaType;
dbContext?: (typeof DbContextsArray)[number];
}; };
/** /**
@ -20,6 +21,7 @@ export default async function apiPost({
queryValues, queryValues,
tableName, tableName,
dbSchema, dbSchema,
dbContext,
}: Param): Promise<PostReturn> { }: Param): Promise<PostReturn> {
if (typeof query === "string" && query?.match(/^create |^alter |^drop /i)) { if (typeof query === "string" && query?.match(/^create |^alter |^drop /i)) {
return { success: false, msg: "Wrong Input" }; return { success: false, msg: "Wrong Input" };
@ -47,6 +49,7 @@ export default async function apiPost({
dbSchema: dbSchema, dbSchema: dbSchema,
queryValuesArray: queryValues, queryValuesArray: queryValues,
tableName, tableName,
dbContext,
}); });
results = result; results = result;

View File

@ -1,16 +1,14 @@
// @ts-check
import sanitizeHtml from "sanitize-html"; import sanitizeHtml from "sanitize-html";
import sanitizeHtmlOptions from "../html/sanitizeHtmlOptions"; import sanitizeHtmlOptions from "../html/sanitizeHtmlOptions";
import updateDbEntry from "./updateDbEntry"; import updateDbEntry from "./updateDbEntry";
import _ from "lodash"; import _ from "lodash";
import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER";
import DSQL_USER_DB_HANDLER from "../../../utils/backend/global-db/DSQL_USER_DB_HANDLER";
import encrypt from "../../dsql/encrypt"; import encrypt from "../../dsql/encrypt";
import LOCAL_DB_HANDLER from "../../../utils/backend/global-db/LOCAL_DB_HANDLER"; import connDbHandler from "../../../utils/db/conn-db-handler";
import checkIfIsMaster from "../../../utils/check-if-is-master";
import { DbContextsArray } from "./runQuery";
type Param = { type Param = {
dbContext?: "Master" | "Dsql User"; dbContext?: (typeof DbContextsArray)[number];
paradigm?: "Read Only" | "Full Access"; paradigm?: "Read Only" | "Full Access";
dbFullName?: string; dbFullName?: string;
tableName: string; tableName: string;
@ -42,20 +40,14 @@ export default async function addDbEntry({
/** /**
* Initialize variables * Initialize variables
*/ */
const isMaster = global.DSQL_USE_LOCAL const isMaster = checkIfIsMaster({ dbContext, dbFullName });
? true
: dbContext?.match(/dsql.user/i)
? false
: dbFullName && !dbFullName.match(/^datasquirel$/)
? false
: true;
/** @type { any } */ const DB_CONN = isMaster
const dbHandler: any = global.DSQL_USE_LOCAL ? global.DSQL_DB_CONN
? LOCAL_DB_HANDLER : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
: isMaster const DB_RO_CONN = isMaster
? DB_HANDLER ? global.DSQL_DB_CONN
: DSQL_USER_DB_HANDLER; : global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
@ -72,28 +64,22 @@ export default async function addDbEntry({
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
/**
* Handle function logic
*/
if (duplicateColumnName && typeof duplicateColumnName === "string") { if (duplicateColumnName && typeof duplicateColumnName === "string") {
const duplicateValue = isMaster const checkDuplicateQuery = `SELECT * FROM ${
? await dbHandler( isMaster ? "" : `\`${dbFullName}\`.`
`SELECT * FROM \`${tableName}\` WHERE \`${duplicateColumnName}\`=?`, }\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`;
const duplicateValue = await connDbHandler(
DB_RO_CONN,
checkDuplicateQuery,
[duplicateColumnValue] [duplicateColumnValue]
) );
: await dbHandler({
paradigm: "Read Only",
queryString: `SELECT * FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`,
queryValues: [duplicateColumnValue],
});
if (duplicateValue?.[0] && !update) { if (duplicateValue?.[0] && !update) {
return null; return null;
} else if (duplicateValue && duplicateValue[0] && update) { } else if (duplicateValue && duplicateValue[0] && update) {
return await updateDbEntry({ return await updateDbEntry({
dbContext, dbContext,
paradigm,
dbFullName, dbFullName,
tableName, tableName,
data, data,
@ -178,7 +164,7 @@ export default async function addDbEntry({
} else { } else {
insertValuesArray.push(value); insertValuesArray.push(value);
} }
} catch (/** @type {any} */ error: any) { } catch (error: any) {
console.log("DSQL: Error in parsing data keys =>", error.message); console.log("DSQL: Error in parsing data keys =>", error.message);
continue; continue;
} }
@ -210,18 +196,14 @@ export default async function addDbEntry({
//////////////////////////////////////// ////////////////////////////////////////
const query = `INSERT INTO \`${dbFullName}\`.\`${tableName}\` (${insertKeysArray.join( const query = `INSERT INTO ${
"," isMaster ? "" : `\`${dbFullName}\`.`
)}) VALUES (${insertValuesArray.map(() => "?").join(",")})`; }\`${tableName}\` (${insertKeysArray.join(",")}) VALUES (${insertValuesArray
.map(() => "?")
.join(",")})`;
const queryValuesArray = insertValuesArray; const queryValuesArray = insertValuesArray;
const newInsert = isMaster const newInsert = await connDbHandler(DB_CONN, query, queryValuesArray);
? await dbHandler(query, queryValuesArray)
: await dbHandler({
paradigm,
queryString: query,
queryValues: queryValuesArray,
});
/** /**
* Return statement * Return statement

View File

@ -1,10 +1,9 @@
import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER"; import checkIfIsMaster from "../../../utils/check-if-is-master";
import DSQL_USER_DB_HANDLER from "../../../utils/backend/global-db/DSQL_USER_DB_HANDLER"; import connDbHandler from "../../../utils/db/conn-db-handler";
import LOCAL_DB_HANDLER from "../../../utils/backend/global-db/LOCAL_DB_HANDLER"; import { DbContextsArray } from "./runQuery";
type Param = { type Param = {
dbContext?: string; dbContext?: (typeof DbContextsArray)[number];
paradigm?: "Read Only" | "Full Access";
dbFullName: string; dbFullName: string;
tableName: string; tableName: string;
tableSchema?: import("../../../types").DSQL_TableSchemaType; tableSchema?: import("../../../types").DSQL_TableSchemaType;
@ -18,41 +17,33 @@ type Param = {
*/ */
export default async function deleteDbEntry({ export default async function deleteDbEntry({
dbContext, dbContext,
paradigm,
dbFullName, dbFullName,
tableName, tableName,
identifierColumnName, identifierColumnName,
identifierValue, identifierValue,
}: Param): Promise<object | null> { }: Param): Promise<object | null> {
try { try {
const isMaster = global.DSQL_USE_LOCAL const isMaster = checkIfIsMaster({ dbContext, dbFullName });
? true
: dbContext?.match(/dsql.user/i)
? false
: dbFullName && !dbFullName.match(/^datasquirel$/)
? false
: true;
const dbHandler: (a1: any, a2?: any) => any = global.DSQL_USE_LOCAL const DB_CONN = isMaster
? LOCAL_DB_HANDLER ? global.DSQL_DB_CONN
: isMaster : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
? DB_HANDLER const DB_RO_CONN = isMaster
: DSQL_USER_DB_HANDLER; ? global.DSQL_DB_CONN
: global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
/** /**
* Execution * Execution
* *
* @description * @description
*/ */
const query = `DELETE FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${identifierColumnName}\`=?`; const query = `DELETE FROM ${
isMaster ? "" : `\`${dbFullName}\`.`
}\`${tableName}\` WHERE \`${identifierColumnName}\`=?`;
const deletedEntry = isMaster const deletedEntry = await connDbHandler(DB_CONN, query, [
? await dbHandler(query, [identifierValue]) identifierValue,
: await dbHandler({ ]);
paradigm,
queryString: query,
queryValues: [identifierValue],
});
/** /**
* Return statement * Return statement

View File

@ -7,7 +7,10 @@ import deleteDbEntry from "./deleteDbEntry";
import trimSql from "../../../utils/trim-sql"; import trimSql from "../../../utils/trim-sql";
import { DSQL_TableSchemaType } from "../../../types"; import { DSQL_TableSchemaType } from "../../../types";
export const DbContextsArray = ["Master", "Dsql User"] as const;
type Param = { type Param = {
dbContext?: (typeof DbContextsArray)[number];
dbFullName: string; dbFullName: string;
query: string | any; query: string | any;
readOnly?: boolean; readOnly?: boolean;
@ -28,6 +31,7 @@ export default async function runQuery({
queryValuesArray, queryValuesArray,
tableName, tableName,
debug, debug,
dbContext,
}: Param): Promise<any> { }: Param): Promise<any> {
/** /**
* Declare variables * Declare variables
@ -117,10 +121,7 @@ export default async function runQuery({
switch (action.toLowerCase()) { switch (action.toLowerCase()) {
case "insert": case "insert":
result = await addDbEntry({ result = await addDbEntry({
dbContext: global.DSQL_USE_LOCAL dbContext,
? "Master"
: "Dsql User",
paradigm: "Full Access",
dbFullName: dbFullName, dbFullName: dbFullName,
tableName: table, tableName: table,
data: data, data: data,
@ -138,10 +139,7 @@ export default async function runQuery({
case "update": case "update":
result = await updateDbEntry({ result = await updateDbEntry({
dbContext: global.DSQL_USE_LOCAL dbContext,
? "Master"
: "Dsql User",
paradigm: "Full Access",
dbFullName: dbFullName, dbFullName: dbFullName,
tableName: table, tableName: table,
data: data, data: data,
@ -154,10 +152,7 @@ export default async function runQuery({
case "delete": case "delete":
result = await deleteDbEntry({ result = await deleteDbEntry({
dbContext: global.DSQL_USE_LOCAL dbContext,
? "Master"
: "Dsql User",
paradigm: "Full Access",
dbFullName: dbFullName, dbFullName: dbFullName,
tableName: table, tableName: table,
identifierColumnName, identifierColumnName,

View File

@ -1,13 +1,12 @@
import sanitizeHtml from "sanitize-html"; import sanitizeHtml from "sanitize-html";
import sanitizeHtmlOptions from "../html/sanitizeHtmlOptions"; import sanitizeHtmlOptions from "../html/sanitizeHtmlOptions";
import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER";
import DSQL_USER_DB_HANDLER from "../../../utils/backend/global-db/DSQL_USER_DB_HANDLER";
import encrypt from "../../dsql/encrypt"; import encrypt from "../../dsql/encrypt";
import LOCAL_DB_HANDLER from "../../../utils/backend/global-db/LOCAL_DB_HANDLER"; import checkIfIsMaster from "../../../utils/check-if-is-master";
import connDbHandler from "../../../utils/db/conn-db-handler";
import { DbContextsArray } from "./runQuery";
type Param = { type Param = {
dbContext?: "Master" | "Dsql User"; dbContext?: (typeof DbContextsArray)[number];
paradigm?: "Read Only" | "Full Access";
dbFullName?: string; dbFullName?: string;
tableName: string; tableName: string;
encryptionKey?: string; encryptionKey?: string;
@ -24,7 +23,6 @@ type Param = {
*/ */
export default async function updateDbEntry({ export default async function updateDbEntry({
dbContext, dbContext,
paradigm,
dbFullName, dbFullName,
tableName, tableName,
data, data,
@ -39,20 +37,14 @@ export default async function updateDbEntry({
*/ */
if (!data || !Object.keys(data).length) return null; if (!data || !Object.keys(data).length) return null;
const isMaster = global.DSQL_USE_LOCAL const isMaster = checkIfIsMaster({ dbContext, dbFullName });
? true
: dbContext?.match(/dsql.user/i)
? false
: dbFullName && !dbFullName.match(/^datasquirel$/)
? false
: true;
/** @type {(a1:any, a2?:any)=> any } */ const DB_CONN = isMaster
const dbHandler: (a1: any, a2?: any) => any = global.DSQL_USE_LOCAL ? global.DSQL_DB_CONN
? LOCAL_DB_HANDLER : global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
: isMaster const DB_RO_CONN = isMaster
? DB_HANDLER ? global.DSQL_DB_CONN
: DSQL_USER_DB_HANDLER; : global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
@ -162,19 +154,15 @@ export default async function updateDbEntry({
//////////////////////////////////////// ////////////////////////////////////////
//////////////////////////////////////// ////////////////////////////////////////
const query = `UPDATE \`${dbFullName}\`.\`${tableName}\` SET ${updateKeyValueArray.join( const query = `UPDATE ${
isMaster ? "" : `\`${dbFullName}\`.`
}\`${tableName}\` SET ${updateKeyValueArray.join(
"," ","
)} WHERE \`${identifierColumnName}\`=?`; )} WHERE \`${identifierColumnName}\`=?`;
updateValues.push(identifierValue); updateValues.push(identifierValue);
const updatedEntry = isMaster const updatedEntry = await connDbHandler(DB_CONN, query, updateValues);
? await dbHandler(query, updateValues)
: await dbHandler({
paradigm,
queryString: query,
queryValues: updateValues,
});
/** /**
* Return statement * Return statement

View File

@ -1,7 +1,4 @@
// @ts-check import connDbHandler from "../../utils/db/conn-db-handler";
import DSQL_USER_DB_HANDLER from "../../utils/backend/global-db/DSQL_USER_DB_HANDLER";
import LOCAL_DB_HANDLER from "../../utils/backend/global-db/LOCAL_DB_HANDLER";
import parseDbResults from "./parseDbResults"; import parseDbResults from "./parseDbResults";
import serverError from "./serverError"; import serverError from "./serverError";
@ -26,24 +23,18 @@ export default async function fullAccessDbHandler({
*/ */
let results; let results;
const DB_CONN = global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
/** /**
* Fetch from db * Fetch from db
* *
* @description Fetch data from db if no cache * @description Fetch data from db if no cache
*/ */
try { try {
/** ********************* Run Query */ results = await connDbHandler(DB_CONN, queryString, queryValuesArray);
results = global.DSQL_USE_LOCAL
? await LOCAL_DB_HANDLER(queryString, queryValuesArray)
: await DSQL_USER_DB_HANDLER({
paradigm: "Full Access",
queryString,
queryValues: queryValuesArray,
});
//////////////////////////////////////// ////////////////////////////////////////
} catch (/** @type {any} */ error: any) { } catch (error: any) {
//////////////////////////////////////// ////////////////////////////////////////
serverError({ serverError({
@ -55,6 +46,8 @@ export default async function fullAccessDbHandler({
* Return error * Return error
*/ */
return error.message; return error.message;
} finally {
DB_CONN?.end();
} }
/** /**

View File

@ -1,10 +1,6 @@
// @ts-check
import fs from "fs";
import serverError from "./serverError"; import serverError from "./serverError";
import parseDbResults from "./parseDbResults"; import parseDbResults from "./parseDbResults";
import DSQL_USER_DB_HANDLER from "../../utils/backend/global-db/DSQL_USER_DB_HANDLER"; import connDbHandler from "../../utils/db/conn-db-handler";
import LOCAL_DB_HANDLER from "../../utils/backend/global-db/LOCAL_DB_HANDLER";
type Param = { type Param = {
queryString: string; queryString: string;
@ -28,22 +24,18 @@ export default async function varReadOnlyDatabaseDbHandler({
*/ */
let results; let results;
const DB_CONN = global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
/** /**
* Fetch from db * Fetch from db
* *
* @description Fetch data from db if no cache * @description Fetch data from db if no cache
*/ */
try { try {
results = global.DSQL_USE_LOCAL results = await connDbHandler(DB_CONN, queryString, queryValuesArray);
? await LOCAL_DB_HANDLER(queryString, queryValuesArray)
: await DSQL_USER_DB_HANDLER({
paradigm: "Read Only",
queryString,
queryValues: queryValuesArray,
});
//////////////////////////////////////// ////////////////////////////////////////
} catch (/** @type {any} */ error: any) { } catch (error: any) {
//////////////////////////////////////// ////////////////////////////////////////
serverError({ serverError({
@ -56,6 +48,8 @@ export default async function varReadOnlyDatabaseDbHandler({
* Return error * Return error
*/ */
return error.message; return error.message;
} finally {
DB_CONN?.end();
} }
/** /**

View File

@ -1446,3 +1446,11 @@ export type HttpFunctionResponse<
str?: string; str?: string;
requestedPath?: string; requestedPath?: string;
}; };
export type ApiGetQueryObject<
T extends { [k: string]: any } = { [k: string]: any }
> = {
query: ServerQueryParam<T>;
table: string;
dbFullName?: string;
};

View File

@ -0,0 +1,14 @@
type Param = {
dbContext?: "Master" | "Dsql User";
dbFullName?: string;
};
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;
}

View File

@ -1,5 +1,5 @@
import { ApiGetQueryObject } from ".."; import sqlGenerator from "../functions/dsql/sql/sql-generator";
import sqlGenerator from "../../../package-shared/functions/dsql/sql/sql-generator"; import { ApiGetQueryObject } from "../types";
type Param = { type Param = {
query: string | ApiGetQueryObject; query: string | ApiGetQueryObject;

View File

@ -1,6 +1,6 @@
{ {
"name": "@moduletrace/datasquirel", "name": "@moduletrace/datasquirel",
"version": "3.8.3", "version": "3.8.4",
"description": "Cloud-based SQL data management tool", "description": "Cloud-based SQL data management tool",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {

View File

@ -1,24 +1,17 @@
import https from "node:https"; import https from "node:https";
import path from "path"; import path from "path";
import fs from "fs"; import fs from "fs";
import grabHostNames from "../../package-shared/utils/grab-host-names"; import grabHostNames from "../package-shared/utils/grab-host-names";
import apiGet from "../../package-shared/functions/api/query/get"; import apiGet from "../package-shared/functions/api/query/get";
import serializeQuery from "../../package-shared/utils/serialize-query"; import serializeQuery from "../package-shared/utils/serialize-query";
import { import {
ApiGetQueryObject,
DSQL_DatabaseSchemaType, DSQL_DatabaseSchemaType,
GetReqQueryObject, GetReqQueryObject,
GetReturn, GetReturn,
ServerQueryParam, ServerQueryParam,
} from "../../package-shared/types"; } from "../package-shared/types";
import apiGetGrabQueryAndValues from "./(utils)/grab-query-and-values"; import apiGetGrabQueryAndValues from "../package-shared/utils/grab-query-and-values";
export type ApiGetQueryObject<
T extends { [k: string]: any } = { [k: string]: any }
> = {
query: ServerQueryParam<T>;
table: string;
dbFullName?: string;
};
type Param<T extends { [k: string]: any } = { [k: string]: any }> = { type Param<T extends { [k: string]: any } = { [k: string]: any }> = {
key?: string; key?: string;