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 { ServerQueryParam } from "../../../types";
type Param = {
query: string | {
query: ServerQueryParam;
table: string;
};
import { ApiGetQueryObject } from "../../../types";
type Param<T extends {
[key: string]: any;
} = {
[key: string]: any;
}> = {
query: string | ApiGetQueryObject<T>;
queryValues?: (string | number)[];
dbFullName: string;
tableName?: string;
@ -15,5 +16,9 @@ type Param = {
/**
* # 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 {};

View File

@ -1,6 +1,10 @@
import { ServerQueryParam } from "../../../types";
type Param = {
genObject?: ServerQueryParam;
type Param<T extends {
[key: string]: any;
} = {
[key: string]: any;
}> = {
genObject?: ServerQueryParam<T>;
tableName: string;
dbFullName?: string;
};
@ -12,5 +16,9 @@ type Return = {
* # SQL Query Generator
* @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 {};

View File

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

View File

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

View File

@ -13,7 +13,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = dsqlMethodCrud;
const deserialize_query_1 = __importDefault(require("../deserialize-query"));
const ejson_1 = __importDefault(require("../ejson"));
const numberfy_1 = __importDefault(require("../numberfy"));
const crud_1 = __importDefault(require("./crud"));
function dsqlMethodCrud(_a) {
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 {
let finalBody = body;
let finalQuery = query;
let finalQuery = (0, deserialize_query_1.default)(query);
let LIMIT = 10;
let PAGE = 1;
let OFFSET = (PAGE - 1) * LIMIT;
@ -39,8 +41,10 @@ function dsqlMethodCrud(_a) {
finalQuery[key] = false;
}
});
LIMIT = finalQuery.limit || 10;
PAGE = finalQuery.page || 1;
if (finalQuery.limit)
LIMIT = (0, numberfy_1.default)(finalQuery.limit);
if (finalQuery.page)
PAGE = (0, numberfy_1.default)(finalQuery.page);
OFFSET = (PAGE - 1) * LIMIT;
}
let finalData = finalBody

View File

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

View File

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

View File

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

View File

@ -1098,15 +1098,16 @@ export type ServerQueryParam<
selectFields?: string[];
query?: ServerQueryQueryObject<T>;
limit?: number;
page?: number;
offset?: number;
order?: {
field: string;
field: keyof T;
strategy: "ASC" | "DESC";
};
searchOperator?: (typeof ServerQueryOperators)[number];
searchEquality?: (typeof ServerQueryEqualities)[number];
addUserId?: {
fieldName: string;
fieldName: keyof T;
};
join?: ServerQueryParamsJoin[];
[key: string]: any;
@ -1500,7 +1501,7 @@ export const DsqlCrudActions = ["insert", "update", "delete", "get"] as const;
export type DsqlCrudQueryObject<
T extends { [key: string]: any } = { [key: string]: any }
> = ServerQueryParam & {
> = ServerQueryParam<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 numberfy from "../numberfy";
import dsqlCrud from "./crud";
export type APIDataCrudQuery = ServerQueryParam & {
@ -35,7 +41,9 @@ export default async function dsqlMethodCrud<
try {
let finalBody = body;
let finalQuery = query;
let finalQuery = deserializeQuery(query as any) as
| DsqlCrudQueryObject<T>
| undefined;
let LIMIT = 10;
let PAGE = 1;
@ -55,8 +63,8 @@ export default async function dsqlMethodCrud<
}
});
LIMIT = finalQuery.limit || 10;
PAGE = finalQuery.page || 1;
if (finalQuery.limit) LIMIT = numberfy(finalQuery.limit);
if (finalQuery.page) PAGE = numberfy(finalQuery.page);
OFFSET = (PAGE - 1) * LIMIT;
}

View File

@ -1,11 +1,13 @@
import sqlGenerator from "../functions/dsql/sql/sql-generator";
import { ApiGetQueryObject } from "../types";
type Param = {
query: string | ApiGetQueryObject;
type Param<T extends { [key: string]: any } = { [key: string]: any }> = {
query: string | ApiGetQueryObject<T>;
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 =
typeof query == "string"
? undefined

View File

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