Updates
This commit is contained in:
parent
b18ec506b3
commit
982149f759
@ -17,11 +17,16 @@ 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/get/(utils)/grab-query-and-values"));
|
||||
/**
|
||||
* # Get Function FOr API
|
||||
*/
|
||||
function apiGet(_a) {
|
||||
return __awaiter(this, arguments, void 0, function* ({ query, dbFullName, queryValues, tableName, dbSchema, useLocal, debug, }) {
|
||||
const queryAndValues = (0, grab_query_and_values_1.default)({
|
||||
query,
|
||||
values: queryValues,
|
||||
});
|
||||
if (typeof query == "string" &&
|
||||
query.match(/^alter|^delete|information_schema|databases|^create/i)) {
|
||||
return { success: false, msg: "Wrong Input." };
|
||||
@ -30,8 +35,8 @@ function apiGet(_a) {
|
||||
try {
|
||||
let { result, error } = yield (0, runQuery_1.default)({
|
||||
dbFullName: dbFullName,
|
||||
query: query,
|
||||
queryValuesArray: queryValues,
|
||||
query: queryAndValues.query,
|
||||
queryValuesArray: queryAndValues.values,
|
||||
readOnly: true,
|
||||
dbSchema,
|
||||
tableName,
|
||||
|
8
dist/package-shared/types/index.d.ts
vendored
8
dist/package-shared/types/index.d.ts
vendored
@ -917,9 +917,13 @@ export type FetchApiReturn = {
|
||||
};
|
||||
export declare const ServerQueryOperators: readonly ["AND", "OR"];
|
||||
export declare const ServerQueryEqualities: readonly ["EQUAL", "LIKE", "NOT EQUAL"];
|
||||
export type ServerQueryParam = {
|
||||
export type ServerQueryParam<T extends {
|
||||
[k: string]: any;
|
||||
} = {
|
||||
[k: string]: any;
|
||||
}> = {
|
||||
selectFields?: string[];
|
||||
query?: ServerQueryQueryObject;
|
||||
query?: ServerQueryQueryObject<T>;
|
||||
limit?: number;
|
||||
offset?: number;
|
||||
order?: {
|
||||
|
11
dist/utils/get/(utils)/grab-query-and-values.d.ts
vendored
Normal file
11
dist/utils/get/(utils)/grab-query-and-values.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
import { ApiGetQueryObject } from "..";
|
||||
type Param = {
|
||||
query: string | ApiGetQueryObject;
|
||||
values?: (string | number)[];
|
||||
};
|
||||
export default function apiGetGrabQueryAndValues({ query, values }: Param): {
|
||||
query: string;
|
||||
values: (string | number)[] | undefined;
|
||||
valuesString: string | undefined;
|
||||
};
|
||||
export {};
|
29
dist/utils/get/(utils)/grab-query-and-values.js
vendored
Normal file
29
dist/utils/get/(utils)/grab-query-and-values.js
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = apiGetGrabQueryAndValues;
|
||||
const sql_generator_1 = __importDefault(require("../../../package-shared/functions/dsql/sql/sql-generator"));
|
||||
function apiGetGrabQueryAndValues({ query, values }) {
|
||||
const queryGenObject = typeof query == "string"
|
||||
? undefined
|
||||
: (0, sql_generator_1.default)({
|
||||
tableName: query.table,
|
||||
genObject: query.query,
|
||||
dbFullName: query.dbFullName || "__db",
|
||||
});
|
||||
return {
|
||||
query: typeof query == "string"
|
||||
? String(query.replace(/\n|\r|\n\r/g, "").replace(/ {2,}/g, " "))
|
||||
: (queryGenObject === null || queryGenObject === void 0 ? void 0 : queryGenObject.string) || "",
|
||||
values: values || (queryGenObject === null || queryGenObject === void 0 ? void 0 : queryGenObject.values),
|
||||
valuesString: typeof query == "string"
|
||||
? values
|
||||
? JSON.stringify(values)
|
||||
: undefined
|
||||
: (queryGenObject === null || queryGenObject === void 0 ? void 0 : queryGenObject.values)
|
||||
? JSON.stringify(queryGenObject.values)
|
||||
: undefined,
|
||||
};
|
||||
}
|
34
dist/utils/get/index.d.ts
vendored
Normal file
34
dist/utils/get/index.d.ts
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
import { GetReturn, ServerQueryParam } 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 {
|
||||
[k: string]: any;
|
||||
} = {
|
||||
[k: string]: any;
|
||||
}> = {
|
||||
key?: string;
|
||||
db?: string;
|
||||
query: string | ApiGetQueryObject<T>;
|
||||
queryValues?: string[];
|
||||
tableName?: string;
|
||||
useLocal?: boolean;
|
||||
user_id?: string | number;
|
||||
debug?: boolean;
|
||||
};
|
||||
export type ApiGetParams = Param;
|
||||
/**
|
||||
* # Make a get request to Datasquirel API
|
||||
*/
|
||||
export default function get<T extends {
|
||||
[k: string]: any;
|
||||
} = {
|
||||
[k: string]: any;
|
||||
}>({ key, db, query, queryValues, tableName, useLocal, user_id, debug, }: Param<T>): Promise<GetReturn>;
|
||||
export {};
|
132
dist/utils/get/index.js
vendored
Normal file
132
dist/utils/get/index.js
vendored
Normal file
@ -0,0 +1,132 @@
|
||||
"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 = get;
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const fs_1 = __importDefault(require("fs"));
|
||||
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 serialize_query_1 = __importDefault(require("../../package-shared/utils/serialize-query"));
|
||||
const grab_query_and_values_1 = __importDefault(require("./(utils)/grab-query-and-values"));
|
||||
/**
|
||||
* # Make a get request to Datasquirel API
|
||||
*/
|
||||
function get(_a) {
|
||||
return __awaiter(this, arguments, void 0, function* ({ key, db, query, queryValues, tableName, useLocal, user_id, debug, }) {
|
||||
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(/./)) &&
|
||||
useLocal) {
|
||||
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) {
|
||||
console.log("apiGet:Running Locally ...");
|
||||
}
|
||||
return yield (0, get_1.default)({
|
||||
dbFullName: DSQL_DB_NAME,
|
||||
query,
|
||||
queryValues,
|
||||
tableName,
|
||||
dbSchema,
|
||||
useLocal,
|
||||
debug,
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Make https request
|
||||
*
|
||||
* @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) {
|
||||
console.log("apiGet:queryObject", queryObject);
|
||||
}
|
||||
const queryString = (0, serialize_query_1.default)(Object.assign({}, queryObject));
|
||||
if (debug) {
|
||||
console.log("apiGet:queryString", queryString);
|
||||
}
|
||||
let path = `/api/query/${user_id || grabedHostNames.user_id}/get${queryString}`;
|
||||
if (debug) {
|
||||
console.log("apiGet:path", path);
|
||||
}
|
||||
const requestObject = {
|
||||
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,
|
||||
},
|
||||
port,
|
||||
hostname: host,
|
||||
path,
|
||||
};
|
||||
scheme
|
||||
.request(requestObject,
|
||||
/**
|
||||
* Callback Function
|
||||
*
|
||||
* @description https request callback
|
||||
*/
|
||||
(response) => {
|
||||
var str = "";
|
||||
response.on("data", function (chunk) {
|
||||
str += chunk;
|
||||
});
|
||||
response.on("end", function () {
|
||||
try {
|
||||
resolve(JSON.parse(str));
|
||||
}
|
||||
catch ( /** @type {any} */error) {
|
||||
reject({
|
||||
error: error.message,
|
||||
result: str,
|
||||
});
|
||||
}
|
||||
});
|
||||
response.on("error", (err) => {
|
||||
console.log("DSQL get Error,", err.message);
|
||||
resolve(null);
|
||||
});
|
||||
})
|
||||
.end();
|
||||
});
|
||||
return httpResponse;
|
||||
});
|
||||
}
|
@ -8,6 +8,7 @@ import {
|
||||
GetReturn,
|
||||
ServerQueryParam,
|
||||
} from "../../../types";
|
||||
import apiGetGrabQueryAndValues from "../../../../utils/get/(utils)/grab-query-and-values";
|
||||
|
||||
type Param = {
|
||||
query:
|
||||
@ -36,6 +37,11 @@ export default async function apiGet({
|
||||
useLocal,
|
||||
debug,
|
||||
}: Param): Promise<import("../../../types").GetReturn> {
|
||||
const queryAndValues = apiGetGrabQueryAndValues({
|
||||
query,
|
||||
values: queryValues,
|
||||
});
|
||||
|
||||
if (
|
||||
typeof query == "string" &&
|
||||
query.match(/^alter|^delete|information_schema|databases|^create/i)
|
||||
@ -48,8 +54,8 @@ export default async function apiGet({
|
||||
try {
|
||||
let { result, error } = await runQuery({
|
||||
dbFullName: dbFullName,
|
||||
query: query,
|
||||
queryValuesArray: queryValues,
|
||||
query: queryAndValues.query,
|
||||
queryValuesArray: queryAndValues.values,
|
||||
readOnly: true,
|
||||
dbSchema,
|
||||
tableName,
|
||||
|
@ -1084,9 +1084,11 @@ export type FetchApiReturn = {
|
||||
export const ServerQueryOperators = ["AND", "OR"] as const;
|
||||
export const ServerQueryEqualities = ["EQUAL", "LIKE", "NOT EQUAL"] as const;
|
||||
|
||||
export type ServerQueryParam = {
|
||||
export type ServerQueryParam<
|
||||
T extends { [k: string]: any } = { [k: string]: any }
|
||||
> = {
|
||||
selectFields?: string[];
|
||||
query?: ServerQueryQueryObject;
|
||||
query?: ServerQueryQueryObject<T>;
|
||||
limit?: number;
|
||||
offset?: number;
|
||||
order?: {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@moduletrace/datasquirel",
|
||||
"version": "3.6.8",
|
||||
"version": "3.7.0",
|
||||
"description": "Cloud-based SQL data management tool",
|
||||
"main": "dist/index.js",
|
||||
"bin": {
|
||||
|
35
utils/get/(utils)/grab-query-and-values.ts
Normal file
35
utils/get/(utils)/grab-query-and-values.ts
Normal file
@ -0,0 +1,35 @@
|
||||
import { ApiGetQueryObject } from "..";
|
||||
import sqlGenerator from "../../../package-shared/functions/dsql/sql/sql-generator";
|
||||
|
||||
type Param = {
|
||||
query: string | ApiGetQueryObject;
|
||||
values?: (string | number)[];
|
||||
};
|
||||
export default function apiGetGrabQueryAndValues({ query, values }: Param) {
|
||||
const queryGenObject =
|
||||
typeof query == "string"
|
||||
? undefined
|
||||
: sqlGenerator({
|
||||
tableName: query.table,
|
||||
genObject: query.query,
|
||||
dbFullName: query.dbFullName || "__db",
|
||||
});
|
||||
|
||||
return {
|
||||
query:
|
||||
typeof query == "string"
|
||||
? String(
|
||||
query.replace(/\n|\r|\n\r/g, "").replace(/ {2,}/g, " ")
|
||||
)
|
||||
: queryGenObject?.string || "",
|
||||
values: values || queryGenObject?.values,
|
||||
valuesString:
|
||||
typeof query == "string"
|
||||
? values
|
||||
? JSON.stringify(values)
|
||||
: undefined
|
||||
: queryGenObject?.values
|
||||
? JSON.stringify(queryGenObject.values)
|
||||
: undefined,
|
||||
};
|
||||
}
|
@ -1,26 +1,29 @@
|
||||
import https from "node:https";
|
||||
import path from "path";
|
||||
import fs from "fs";
|
||||
import grabHostNames from "../package-shared/utils/grab-host-names";
|
||||
import apiGet from "../package-shared/functions/api/query/get";
|
||||
import serializeQuery from "../package-shared/utils/serialize-query";
|
||||
import grabHostNames from "../../package-shared/utils/grab-host-names";
|
||||
import apiGet from "../../package-shared/functions/api/query/get";
|
||||
import serializeQuery from "../../package-shared/utils/serialize-query";
|
||||
import {
|
||||
DSQL_DatabaseSchemaType,
|
||||
GetReqQueryObject,
|
||||
GetReturn,
|
||||
ServerQueryParam,
|
||||
} from "../package-shared/types";
|
||||
import sqlGenerator from "../package-shared/functions/dsql/sql/sql-generator";
|
||||
} from "../../package-shared/types";
|
||||
import apiGetGrabQueryAndValues from "./(utils)/grab-query-and-values";
|
||||
|
||||
export type ApiGetQueryObject = {
|
||||
query: ServerQueryParam;
|
||||
export type ApiGetQueryObject<
|
||||
T extends { [k: string]: any } = { [k: string]: any }
|
||||
> = {
|
||||
query: ServerQueryParam<T>;
|
||||
table: string;
|
||||
dbFullName?: string;
|
||||
};
|
||||
|
||||
type Param = {
|
||||
type Param<T extends { [k: string]: any } = { [k: string]: any }> = {
|
||||
key?: string;
|
||||
db?: string;
|
||||
query: string | ApiGetQueryObject;
|
||||
query: string | ApiGetQueryObject<T>;
|
||||
queryValues?: string[];
|
||||
tableName?: string;
|
||||
useLocal?: boolean;
|
||||
@ -33,7 +36,9 @@ export type ApiGetParams = Param;
|
||||
/**
|
||||
* # Make a get request to Datasquirel API
|
||||
*/
|
||||
export default async function get({
|
||||
export default async function get<
|
||||
T extends { [k: string]: any } = { [k: string]: any }
|
||||
>({
|
||||
key,
|
||||
db,
|
||||
query,
|
||||
@ -42,7 +47,7 @@ export default async function get({
|
||||
useLocal,
|
||||
user_id,
|
||||
debug,
|
||||
}: Param): Promise<GetReturn> {
|
||||
}: Param<T>): Promise<GetReturn> {
|
||||
const grabedHostNames = grabHostNames();
|
||||
const { host, port, scheme } = grabedHostNames;
|
||||
|
||||
@ -61,10 +66,7 @@ export default async function get({
|
||||
DSQL_DB_NAME?.match(/./) &&
|
||||
useLocal
|
||||
) {
|
||||
/** @type {import("../package-shared/types").DSQL_DatabaseSchemaType | undefined} */
|
||||
let dbSchema:
|
||||
| import("../package-shared/types").DSQL_DatabaseSchemaType
|
||||
| undefined;
|
||||
let dbSchema: DSQL_DatabaseSchemaType | undefined;
|
||||
|
||||
try {
|
||||
const localDbSchemaPath = path.resolve(
|
||||
@ -95,33 +97,15 @@ export default async function get({
|
||||
* @description make a request to datasquirel.com
|
||||
*/
|
||||
const httpResponse = await new Promise((resolve, reject) => {
|
||||
const queryGenObject =
|
||||
typeof query == "string"
|
||||
? undefined
|
||||
: sqlGenerator({
|
||||
tableName: query.table,
|
||||
genObject: query.query,
|
||||
dbFullName: query.dbFullName || "__db",
|
||||
});
|
||||
const queryAndValues = apiGetGrabQueryAndValues({
|
||||
query,
|
||||
values: queryValues,
|
||||
});
|
||||
|
||||
const queryObject: GetReqQueryObject = {
|
||||
db: process.env.DSQL_API_DB_NAME || String(db),
|
||||
query:
|
||||
typeof query == "string"
|
||||
? String(
|
||||
query
|
||||
.replace(/\n|\r|\n\r/g, "")
|
||||
.replace(/ {2,}/g, " ")
|
||||
)
|
||||
: queryGenObject?.string || "",
|
||||
queryValues:
|
||||
typeof query == "string"
|
||||
? queryValues
|
||||
? JSON.stringify(queryValues)
|
||||
: undefined
|
||||
: queryGenObject?.values
|
||||
? JSON.stringify(queryGenObject.values)
|
||||
: undefined,
|
||||
query: queryAndValues.query,
|
||||
queryValues: queryAndValues.valuesString,
|
||||
tableName,
|
||||
debug,
|
||||
};
|
Loading…
Reference in New Issue
Block a user