Update Types

This commit is contained in:
Benjamin Toby 2025-01-26 07:03:38 +01:00
parent 7188fe6e2c
commit 94d15ecb30
12 changed files with 84 additions and 51 deletions

View File

@ -1,10 +1,11 @@
import { DbContextsArray } from "../../backend/db/runQuery"; import { DbContextsArray } from "../../backend/db/runQuery";
import { ServerQueryParam } from "../../../types"; import { ApiGetQueryObject } from "../../../types";
type Param = { type Param<T extends {
query: string | { [key: string]: any;
query: ServerQueryParam; } = {
table: string; [key: string]: any;
}; }> = {
query: string | ApiGetQueryObject<T>;
queryValues?: (string | number)[]; queryValues?: (string | number)[];
dbFullName: string; dbFullName: string;
tableName?: string; tableName?: string;
@ -15,5 +16,9 @@ type Param = {
/** /**
* # Get Function FOr API * # Get Function FOr API
*/ */
export default function apiGet({ query, dbFullName, queryValues, tableName, dbSchema, debug, dbContext, }: Param): Promise<import("../../../types").GetReturn>; export default function apiGet<T extends {
[key: string]: any;
} = {
[key: string]: any;
}>({ query, dbFullName, queryValues, tableName, dbSchema, debug, dbContext, }: Param<T>): Promise<import("../../../types").GetReturn>;
export {}; export {};

View File

@ -1,6 +1,10 @@
import { ServerQueryParam } from "../../../types"; import { ServerQueryParam } from "../../../types";
type Param = { type Param<T extends {
genObject?: ServerQueryParam; [key: string]: any;
} = {
[key: string]: any;
}> = {
genObject?: ServerQueryParam<T>;
tableName: string; tableName: string;
dbFullName?: string; dbFullName?: string;
}; };
@ -12,5 +16,9 @@ type Return = {
* # SQL Query Generator * # SQL Query Generator
* @description Generates an SQL Query for node module `mysql` or `serverless-mysql` * @description Generates an SQL Query for node module `mysql` or `serverless-mysql`
*/ */
export default function sqlGenerator({ tableName, genObject, dbFullName, }: Param): Return; export default function sqlGenerator<T extends {
[key: string]: any;
} = {
[key: string]: any;
}>({ tableName, genObject, dbFullName }: Param<T>): Return;
export {}; export {};

View File

@ -5,7 +5,7 @@ exports.default = sqlGenerator;
* # SQL Query Generator * # SQL Query Generator
* @description Generates an SQL Query for node module `mysql` or `serverless-mysql` * @description Generates an SQL Query for node module `mysql` or `serverless-mysql`
*/ */
function sqlGenerator({ tableName, genObject, dbFullName, }) { function sqlGenerator({ tableName, genObject, dbFullName }) {
if (!genObject) if (!genObject)
return undefined; return undefined;
const finalQuery = genObject.query ? genObject.query : undefined; const finalQuery = genObject.query ? genObject.query : undefined;
@ -201,8 +201,8 @@ function sqlGenerator({ tableName, genObject, dbFullName, }) {
} }
if (genObject.order) if (genObject.order)
queryString += ` ORDER BY ${genObject.join queryString += ` ORDER BY ${genObject.join
? `${finalDbName}${tableName}.${genObject.order.field}` ? `${finalDbName}${tableName}.${String(genObject.order.field)}`
: genObject.order.field} ${genObject.order.strategy}`; : String(genObject.order.field)} ${genObject.order.strategy}`;
if (genObject.limit) if (genObject.limit)
queryString += ` LIMIT ${genObject.limit}`; queryString += ` LIMIT ${genObject.limit}`;
if (genObject.offset) if (genObject.offset)

View File

@ -945,15 +945,16 @@ export type ServerQueryParam<T extends {
selectFields?: string[]; selectFields?: string[];
query?: ServerQueryQueryObject<T>; query?: ServerQueryQueryObject<T>;
limit?: number; limit?: number;
page?: number;
offset?: number; offset?: number;
order?: { order?: {
field: string; field: keyof T;
strategy: "ASC" | "DESC"; strategy: "ASC" | "DESC";
}; };
searchOperator?: (typeof ServerQueryOperators)[number]; searchOperator?: (typeof ServerQueryOperators)[number];
searchEquality?: (typeof ServerQueryEqualities)[number]; searchEquality?: (typeof ServerQueryEqualities)[number];
addUserId?: { addUserId?: {
fieldName: string; fieldName: keyof T;
}; };
join?: ServerQueryParamsJoin[]; join?: ServerQueryParamsJoin[];
[key: string]: any; [key: string]: any;
@ -1320,7 +1321,7 @@ export type DsqlCrudQueryObject<T extends {
[key: string]: any; [key: string]: any;
} = { } = {
[key: string]: any; [key: string]: any;
}> = ServerQueryParam & { }> = ServerQueryParam<T> & {
query?: ServerQueryQueryObject<T>; query?: ServerQueryQueryObject<T>;
}; };
export type DsqlCrudParam<T extends { export type DsqlCrudParam<T extends {

View File

@ -13,7 +13,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.default = dsqlMethodCrud; exports.default = dsqlMethodCrud;
const deserialize_query_1 = __importDefault(require("../deserialize-query"));
const ejson_1 = __importDefault(require("../ejson")); const ejson_1 = __importDefault(require("../ejson"));
const numberfy_1 = __importDefault(require("../numberfy"));
const crud_1 = __importDefault(require("./crud")); const crud_1 = __importDefault(require("./crud"));
function dsqlMethodCrud(_a) { function dsqlMethodCrud(_a) {
return __awaiter(this, arguments, void 0, function* ({ method, tableName, addUser, user, extraData, transform, existingData, body, query, targetId, sanitize, }) { return __awaiter(this, arguments, void 0, function* ({ method, tableName, addUser, user, extraData, transform, existingData, body, query, targetId, sanitize, }) {
@ -22,7 +24,7 @@ function dsqlMethodCrud(_a) {
}; };
try { try {
let finalBody = body; let finalBody = body;
let finalQuery = query; let finalQuery = (0, deserialize_query_1.default)(query);
let LIMIT = 10; let LIMIT = 10;
let PAGE = 1; let PAGE = 1;
let OFFSET = (PAGE - 1) * LIMIT; let OFFSET = (PAGE - 1) * LIMIT;
@ -39,8 +41,10 @@ function dsqlMethodCrud(_a) {
finalQuery[key] = false; finalQuery[key] = false;
} }
}); });
LIMIT = finalQuery.limit || 10; if (finalQuery.limit)
PAGE = finalQuery.page || 1; LIMIT = (0, numberfy_1.default)(finalQuery.limit);
if (finalQuery.page)
PAGE = (0, numberfy_1.default)(finalQuery.page);
OFFSET = (PAGE - 1) * LIMIT; OFFSET = (PAGE - 1) * LIMIT;
} }
let finalData = finalBody let finalData = finalBody

View File

@ -1,9 +1,17 @@
import { ApiGetQueryObject } from "../types"; import { ApiGetQueryObject } from "../types";
type Param = { type Param<T extends {
query: string | ApiGetQueryObject; [key: string]: any;
} = {
[key: string]: any;
}> = {
query: string | ApiGetQueryObject<T>;
values?: (string | number)[]; values?: (string | number)[];
}; };
export default function apiGetGrabQueryAndValues({ query, values }: Param): { export default function apiGetGrabQueryAndValues<T extends {
[key: string]: any;
} = {
[key: string]: any;
}>({ query, values }: Param<T>): {
query: string; query: string;
values: (string | number)[] | undefined; values: (string | number)[] | undefined;
valuesString: string | undefined; valuesString: string | undefined;

View File

@ -4,19 +4,15 @@ import _ from "lodash";
import serverError from "../../backend/serverError"; import serverError from "../../backend/serverError";
import runQuery, { DbContextsArray } from "../../backend/db/runQuery"; import runQuery, { DbContextsArray } from "../../backend/db/runQuery";
import { import {
ApiGetQueryObject,
DSQL_TableSchemaType, DSQL_TableSchemaType,
GetReturn, GetReturn,
ServerQueryParam, ServerQueryParam,
} from "../../../types"; } from "../../../types";
import apiGetGrabQueryAndValues from "../../../utils/grab-query-and-values"; import apiGetGrabQueryAndValues from "../../../utils/grab-query-and-values";
type Param = { type Param<T extends { [key: string]: any } = { [key: string]: any }> = {
query: query: string | ApiGetQueryObject<T>;
| string
| {
query: ServerQueryParam;
table: string;
};
queryValues?: (string | number)[]; queryValues?: (string | number)[];
dbFullName: string; dbFullName: string;
tableName?: string; tableName?: string;
@ -28,7 +24,9 @@ type Param = {
/** /**
* # Get Function FOr API * # Get Function FOr API
*/ */
export default async function apiGet({ export default async function apiGet<
T extends { [key: string]: any } = { [key: string]: any }
>({
query, query,
dbFullName, dbFullName,
queryValues, queryValues,
@ -36,7 +34,7 @@ export default async function apiGet({
dbSchema, dbSchema,
debug, debug,
dbContext, dbContext,
}: Param): Promise<import("../../../types").GetReturn> { }: Param<T>): Promise<import("../../../types").GetReturn> {
const queryAndValues = apiGetGrabQueryAndValues({ const queryAndValues = apiGetGrabQueryAndValues({
query, query,
values: queryValues, values: queryValues,

View File

@ -4,8 +4,8 @@ import {
ServerQueryQueryObject, ServerQueryQueryObject,
} from "../../../types"; } from "../../../types";
type Param = { type Param<T extends { [key: string]: any } = { [key: string]: any }> = {
genObject?: ServerQueryParam; genObject?: ServerQueryParam<T>;
tableName: string; tableName: string;
dbFullName?: string; dbFullName?: string;
}; };
@ -21,11 +21,9 @@ type Return =
* # SQL Query Generator * # SQL Query Generator
* @description Generates an SQL Query for node module `mysql` or `serverless-mysql` * @description Generates an SQL Query for node module `mysql` or `serverless-mysql`
*/ */
export default function sqlGenerator({ export default function sqlGenerator<
tableName, T extends { [key: string]: any } = { [key: string]: any }
genObject, >({ tableName, genObject, dbFullName }: Param<T>): Return {
dbFullName,
}: Param): Return {
if (!genObject) return undefined; if (!genObject) return undefined;
const finalQuery = genObject.query ? genObject.query : undefined; const finalQuery = genObject.query ? genObject.query : undefined;
@ -276,8 +274,8 @@ export default function sqlGenerator({
if (genObject.order) if (genObject.order)
queryString += ` ORDER BY ${ queryString += ` ORDER BY ${
genObject.join genObject.join
? `${finalDbName}${tableName}.${genObject.order.field}` ? `${finalDbName}${tableName}.${String(genObject.order.field)}`
: genObject.order.field : String(genObject.order.field)
} ${genObject.order.strategy}`; } ${genObject.order.strategy}`;
if (genObject.limit) queryString += ` LIMIT ${genObject.limit}`; if (genObject.limit) queryString += ` LIMIT ${genObject.limit}`;

View File

@ -1098,15 +1098,16 @@ export type ServerQueryParam<
selectFields?: string[]; selectFields?: string[];
query?: ServerQueryQueryObject<T>; query?: ServerQueryQueryObject<T>;
limit?: number; limit?: number;
page?: number;
offset?: number; offset?: number;
order?: { order?: {
field: string; field: keyof T;
strategy: "ASC" | "DESC"; strategy: "ASC" | "DESC";
}; };
searchOperator?: (typeof ServerQueryOperators)[number]; searchOperator?: (typeof ServerQueryOperators)[number];
searchEquality?: (typeof ServerQueryEqualities)[number]; searchEquality?: (typeof ServerQueryEqualities)[number];
addUserId?: { addUserId?: {
fieldName: string; fieldName: keyof T;
}; };
join?: ServerQueryParamsJoin[]; join?: ServerQueryParamsJoin[];
[key: string]: any; [key: string]: any;
@ -1500,7 +1501,7 @@ export const DsqlCrudActions = ["insert", "update", "delete", "get"] as const;
export type DsqlCrudQueryObject< export type DsqlCrudQueryObject<
T extends { [key: string]: any } = { [key: string]: any } T extends { [key: string]: any } = { [key: string]: any }
> = ServerQueryParam & { > = ServerQueryParam<T> & {
query?: ServerQueryQueryObject<T>; query?: ServerQueryQueryObject<T>;
}; };

View File

@ -1,5 +1,11 @@
import { DsqlMethodCrudParam, ServerQueryParam } from "../../types"; import {
DsqlCrudQueryObject,
DsqlMethodCrudParam,
ServerQueryParam,
} from "../../types";
import deserializeQuery from "../deserialize-query";
import EJSON from "../ejson"; import EJSON from "../ejson";
import numberfy from "../numberfy";
import dsqlCrud from "./crud"; import dsqlCrud from "./crud";
export type APIDataCrudQuery = ServerQueryParam & { export type APIDataCrudQuery = ServerQueryParam & {
@ -35,7 +41,9 @@ export default async function dsqlMethodCrud<
try { try {
let finalBody = body; let finalBody = body;
let finalQuery = query; let finalQuery = deserializeQuery(query as any) as
| DsqlCrudQueryObject<T>
| undefined;
let LIMIT = 10; let LIMIT = 10;
let PAGE = 1; let PAGE = 1;
@ -55,8 +63,8 @@ export default async function dsqlMethodCrud<
} }
}); });
LIMIT = finalQuery.limit || 10; if (finalQuery.limit) LIMIT = numberfy(finalQuery.limit);
PAGE = finalQuery.page || 1; if (finalQuery.page) PAGE = numberfy(finalQuery.page);
OFFSET = (PAGE - 1) * LIMIT; OFFSET = (PAGE - 1) * LIMIT;
} }

View File

@ -1,11 +1,13 @@
import sqlGenerator from "../functions/dsql/sql/sql-generator"; import sqlGenerator from "../functions/dsql/sql/sql-generator";
import { ApiGetQueryObject } from "../types"; import { ApiGetQueryObject } from "../types";
type Param = { type Param<T extends { [key: string]: any } = { [key: string]: any }> = {
query: string | ApiGetQueryObject; query: string | ApiGetQueryObject<T>;
values?: (string | number)[]; values?: (string | number)[];
}; };
export default function apiGetGrabQueryAndValues({ query, values }: Param) { export default function apiGetGrabQueryAndValues<
T extends { [key: string]: any } = { [key: string]: any }
>({ query, values }: Param<T>) {
const queryGenObject = const queryGenObject =
typeof query == "string" typeof query == "string"
? undefined ? undefined

View File

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