This commit is contained in:
Benjamin Toby
2025-07-09 20:30:45 +01:00
parent ccb5605b58
commit c37d105dee
264 changed files with 2389 additions and 3743 deletions
+20 -88
View File
@@ -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<T extends { [key: string]: any } = { [key: string]: any }> = {
query: string | ApiGetQueryObject<T>;
queryValues?: (string | number)[];
query: DsqlCrudQueryObject<T>;
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<T>): Promise<import("../../../types").GetReturn> {
const queryAndValues = apiGetGrabQueryAndValues({
query,
values: queryValues,
}: Param<T>): Promise<GetReturn> {
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;
}
@@ -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<PostReturn> {
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,