Updates
This commit is contained in:
parent
0da68e30b8
commit
ac489ce443
@ -11,7 +11,6 @@ const sql_gen_operator_gen_1 = __importDefault(require("./sql-gen-operator-gen")
|
||||
* @description Generates an SQL Query for node module `mysql` or `serverless-mysql`
|
||||
*/
|
||||
function sqlGenerator({ tableName, genObject, dbFullName, count }) {
|
||||
var _a;
|
||||
const finalQuery = (genObject === null || genObject === void 0 ? void 0 : genObject.query) ? genObject.query : undefined;
|
||||
const queryKeys = finalQuery ? Object.keys(finalQuery) : undefined;
|
||||
const sqlSearhValues = [];
|
||||
@ -300,10 +299,37 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) {
|
||||
queryString += `${isSearchStr ? " AND" : " WHERE"} ${fullTextMatchStr}`;
|
||||
sqlSearhValues.push(fullTextSearchStr);
|
||||
}
|
||||
if ((_a = genObject === null || genObject === void 0 ? void 0 : genObject.group) === null || _a === void 0 ? void 0 : _a[0]) {
|
||||
queryString += ` GROUP BY ${genObject.group
|
||||
.map((g) => `\`${g.toString()}\``)
|
||||
.join(",")}`;
|
||||
if (genObject === null || genObject === void 0 ? void 0 : genObject.group) {
|
||||
let group_by_txt = ``;
|
||||
if (typeof genObject.group == "string") {
|
||||
group_by_txt = genObject.group;
|
||||
}
|
||||
else if (Array.isArray(genObject.group)) {
|
||||
for (let i = 0; i < genObject.group.length; i++) {
|
||||
const group = genObject.group[i];
|
||||
if (typeof group == "string") {
|
||||
group_by_txt += `\`${group.toString()}\``;
|
||||
}
|
||||
else if (typeof group == "object" && group.table) {
|
||||
group_by_txt += `${group.table}.${String(group.field)}`;
|
||||
}
|
||||
else if (typeof group == "object") {
|
||||
group_by_txt += `${String(group.field)}`;
|
||||
}
|
||||
if (i < genObject.group.length - 1) {
|
||||
group_by_txt += ",";
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof genObject.group == "object") {
|
||||
if (genObject.group.table) {
|
||||
group_by_txt = `${genObject.group.table}.${String(genObject.group.field)}`;
|
||||
}
|
||||
else {
|
||||
group_by_txt = `${String(genObject.group.field)}`;
|
||||
}
|
||||
}
|
||||
queryString += ` GROUP BY ${group_by_txt}`;
|
||||
}
|
||||
function grabOrderString(order) {
|
||||
let orderFields = [];
|
||||
|
||||
12
dist/package-shared/types/index.d.ts
vendored
12
dist/package-shared/types/index.d.ts
vendored
@ -909,18 +909,26 @@ export type ServerQueryParam<T extends {
|
||||
limit?: number;
|
||||
page?: number;
|
||||
offset?: number;
|
||||
order?: ServerQueryParamOrder | ServerQueryParamOrder[];
|
||||
order?: ServerQueryParamOrder<T> | ServerQueryParamOrder<T>[];
|
||||
searchOperator?: (typeof ServerQueryOperators)[number];
|
||||
searchEquality?: (typeof ServerQueryEqualities)[number];
|
||||
addUserId?: {
|
||||
fieldName: keyof T;
|
||||
};
|
||||
join?: (ServerQueryParamsJoin<K> | ServerQueryParamsJoin<K>[] | undefined)[];
|
||||
group?: (keyof T)[];
|
||||
group?: keyof T | ServerQueryParamGroupBy<T> | (keyof T | ServerQueryParamGroupBy<T>)[];
|
||||
countSubQueries?: ServerQueryParamsCount[];
|
||||
fullTextSearch?: ServerQueryParamFullTextSearch<T>;
|
||||
[key: string]: any;
|
||||
};
|
||||
export type ServerQueryParamGroupBy<T extends {
|
||||
[k: string]: any;
|
||||
} = {
|
||||
[k: string]: any;
|
||||
}> = {
|
||||
field: keyof T;
|
||||
table?: string;
|
||||
};
|
||||
export type ServerQueryParamOrder<T extends {
|
||||
[k: string]: any;
|
||||
} = {
|
||||
|
||||
@ -26,7 +26,7 @@ type Return = {
|
||||
* @description Generates an SQL Query for node module `mysql` or `serverless-mysql`
|
||||
*/
|
||||
export default function sqlGenerator<
|
||||
T extends { [key: string]: any } = { [key: string]: any }
|
||||
T extends { [key: string]: any } = { [key: string]: any },
|
||||
>({ tableName, genObject, dbFullName, count }: Param<T>): Return {
|
||||
const finalQuery = genObject?.query ? genObject.query : undefined;
|
||||
|
||||
@ -69,10 +69,10 @@ export default function sqlGenerator<
|
||||
typeof valueParsed == "string"
|
||||
? valueParsed
|
||||
: valueParsed
|
||||
? valueParsed.fieldName && valueParsed.tableName
|
||||
? `${valueParsed.tableName}.${valueParsed.fieldName}`
|
||||
: valueParsed.value?.toString()
|
||||
: undefined;
|
||||
? valueParsed.fieldName && valueParsed.tableName
|
||||
? `${valueParsed.tableName}.${valueParsed.fieldName}`
|
||||
: valueParsed.value?.toString()
|
||||
: undefined;
|
||||
|
||||
const valueEquality =
|
||||
typeof valueParsed == "object"
|
||||
@ -86,8 +86,8 @@ export default function sqlGenerator<
|
||||
value: valueString?.toString() || "",
|
||||
isValueFieldValue: Boolean(
|
||||
typeof valueParsed == "object" &&
|
||||
valueParsed.fieldName &&
|
||||
valueParsed.tableName
|
||||
valueParsed.fieldName &&
|
||||
valueParsed.tableName,
|
||||
),
|
||||
});
|
||||
|
||||
@ -144,7 +144,7 @@ export default function sqlGenerator<
|
||||
|
||||
function generateJoinStr(
|
||||
mtch: ServerQueryParamsJoinMatchObject,
|
||||
join: ServerQueryParamsJoin
|
||||
join: ServerQueryParamsJoin,
|
||||
) {
|
||||
return `${finalDbName}${
|
||||
typeof mtch.source == "object" ? mtch.source.tableName : tableName
|
||||
@ -182,7 +182,7 @@ export default function sqlGenerator<
|
||||
let fullTextMatchStr = genObject?.fullTextSearch
|
||||
? ` MATCH(${genObject.fullTextSearch.fields
|
||||
.map((f) =>
|
||||
genObject.join ? `${tableName}.${String(f)}` : `${String(f)}`
|
||||
genObject.join ? `${tableName}.${String(f)}` : `${String(f)}`,
|
||||
)
|
||||
.join(",")}) AGAINST (? IN BOOLEAN MODE)`
|
||||
: undefined;
|
||||
@ -206,7 +206,7 @@ export default function sqlGenerator<
|
||||
typeof fld == "object"
|
||||
? `${finalDbName}${tableName}.${fld.fieldName.toString()}` +
|
||||
(fld.alias ? ` as ${fld.alias}` : ``)
|
||||
: `${finalDbName}${tableName}.${String(fld)}`
|
||||
: `${finalDbName}${tableName}.${String(fld)}`,
|
||||
)
|
||||
.join(",")}`;
|
||||
} else {
|
||||
@ -215,7 +215,7 @@ export default function sqlGenerator<
|
||||
typeof fld == "object"
|
||||
? `${fld.fieldName.toString()}` +
|
||||
(fld.alias ? ` as ${fld.alias}` : ``)
|
||||
: fld
|
||||
: fld,
|
||||
)
|
||||
.join(",")}`;
|
||||
}
|
||||
@ -340,12 +340,12 @@ export default function sqlGenerator<
|
||||
"(" +
|
||||
join.match
|
||||
.map((mtch) =>
|
||||
generateJoinStr(mtch, join)
|
||||
generateJoinStr(mtch, join),
|
||||
)
|
||||
.join(
|
||||
join.operator
|
||||
? ` ${join.operator} `
|
||||
: " AND "
|
||||
: " AND ",
|
||||
) +
|
||||
")"
|
||||
);
|
||||
@ -394,7 +394,7 @@ export default function sqlGenerator<
|
||||
});
|
||||
|
||||
const cleanedUpSearchStr = sqlSearhString?.filter(
|
||||
(str) => typeof str == "string"
|
||||
(str) => typeof str == "string",
|
||||
);
|
||||
|
||||
const isSearchStr =
|
||||
@ -403,7 +403,7 @@ export default function sqlGenerator<
|
||||
if (isSearchStr) {
|
||||
const stringOperator = genObject?.searchOperator || "AND";
|
||||
queryString += ` WHERE ${cleanedUpSearchStr.join(
|
||||
` ${stringOperator} `
|
||||
` ${stringOperator} `,
|
||||
)}`;
|
||||
}
|
||||
|
||||
@ -412,10 +412,36 @@ export default function sqlGenerator<
|
||||
sqlSearhValues.push(fullTextSearchStr);
|
||||
}
|
||||
|
||||
if (genObject?.group?.[0]) {
|
||||
queryString += ` GROUP BY ${genObject.group
|
||||
.map((g) => `\`${g.toString()}\``)
|
||||
.join(",")}`;
|
||||
if (genObject?.group) {
|
||||
let group_by_txt = ``;
|
||||
|
||||
if (typeof genObject.group == "string") {
|
||||
group_by_txt = genObject.group;
|
||||
} else if (Array.isArray(genObject.group)) {
|
||||
for (let i = 0; i < genObject.group.length; i++) {
|
||||
const group = genObject.group[i];
|
||||
|
||||
if (typeof group == "string") {
|
||||
group_by_txt += `\`${group.toString()}\``;
|
||||
} else if (typeof group == "object" && group.table) {
|
||||
group_by_txt += `${group.table}.${String(group.field)}`;
|
||||
} else if (typeof group == "object") {
|
||||
group_by_txt += `${String(group.field)}`;
|
||||
}
|
||||
|
||||
if (i < genObject.group.length - 1) {
|
||||
group_by_txt += ",";
|
||||
}
|
||||
}
|
||||
} else if (typeof genObject.group == "object") {
|
||||
if (genObject.group.table) {
|
||||
group_by_txt = `${genObject.group.table}.${String(genObject.group.field)}`;
|
||||
} else {
|
||||
group_by_txt = `${String(genObject.group.field)}`;
|
||||
}
|
||||
}
|
||||
|
||||
queryString += ` GROUP BY ${group_by_txt}`;
|
||||
}
|
||||
|
||||
function grabOrderString(order: ServerQueryParamOrder<T>) {
|
||||
@ -426,7 +452,7 @@ export default function sqlGenerator<
|
||||
orderFields.push(genObject.fullTextSearch.scoreAlias);
|
||||
} else if (genObject?.join) {
|
||||
orderFields.push(
|
||||
`${finalDbName}${tableName}.${String(order.field)}`
|
||||
`${finalDbName}${tableName}.${String(order.field)}`,
|
||||
);
|
||||
} else {
|
||||
orderFields.push(order.field);
|
||||
|
||||
@ -1101,7 +1101,7 @@ export type ServerQueryParam<
|
||||
limit?: number;
|
||||
page?: number;
|
||||
offset?: number;
|
||||
order?: ServerQueryParamOrder | ServerQueryParamOrder[];
|
||||
order?: ServerQueryParamOrder<T> | ServerQueryParamOrder<T>[];
|
||||
searchOperator?: (typeof ServerQueryOperators)[number];
|
||||
searchEquality?: (typeof ServerQueryEqualities)[number];
|
||||
addUserId?: {
|
||||
@ -1112,12 +1112,22 @@ export type ServerQueryParam<
|
||||
| ServerQueryParamsJoin<K>[]
|
||||
| undefined
|
||||
)[];
|
||||
group?: (keyof T)[];
|
||||
group?:
|
||||
| keyof T
|
||||
| ServerQueryParamGroupBy<T>
|
||||
| (keyof T | ServerQueryParamGroupBy<T>)[];
|
||||
countSubQueries?: ServerQueryParamsCount[];
|
||||
fullTextSearch?: ServerQueryParamFullTextSearch<T>;
|
||||
[key: string]: any;
|
||||
};
|
||||
|
||||
export type ServerQueryParamGroupBy<
|
||||
T extends { [k: string]: any } = { [k: string]: any },
|
||||
> = {
|
||||
field: keyof T;
|
||||
table?: string;
|
||||
};
|
||||
|
||||
export type ServerQueryParamOrder<
|
||||
T extends { [k: string]: any } = { [k: string]: any },
|
||||
> = {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@moduletrace/datasquirel",
|
||||
"version": "5.7.52",
|
||||
"version": "5.7.53",
|
||||
"description": "Cloud-based SQL data management tool",
|
||||
"main": "dist/index.js",
|
||||
"bin": {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user