This commit is contained in:
Benjamin Toby
2025-01-15 23:11:00 +01:00
parent b18ec506b3
commit 982149f759
11 changed files with 290 additions and 48 deletions
@@ -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,
};
}
+23 -39
View File
@@ -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,
};