ts-sql-query
Version:
Type-safe SQL query builder like QueryDSL or JOOQ in Java or Linq in .Net for TypeScript with MariaDB, MySql, Oracle, PostgreSql, Sqlite and SqlServer support.
64 lines (63 loc) • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isSelectPageCountQuery = exports.getFunctionExecutingQuery = exports.getQueryExecutionStack = exports.getQueryExecutionMetadata = exports.getQueryExecutionName = void 0;
function getQueryExecutionName(query, params) {
query;
return params.$metadata?.queryExecutionName;
}
exports.getQueryExecutionName = getQueryExecutionName;
function getQueryExecutionMetadata(query, params) {
query;
return params.$metadata?.queryExecutionMetadata;
}
exports.getQueryExecutionMetadata = getQueryExecutionMetadata;
function getQueryExecutionStack(query, params) {
query;
const source = params.$source;
return source?.stack;
}
exports.getQueryExecutionStack = getQueryExecutionStack;
function getFunctionExecutingQuery(query, params) {
const stack = getQueryExecutionStack(query, params);
if (!stack) {
return undefined;
}
const lineRegex = /^.+?\n.+?\n\s+?at(?: async)? (.+?)(?: (?:\((.+?)\)))?\n/m;
const lineMatch = stack.match(lineRegex);
if (!lineMatch) {
return undefined;
}
let functionName = lineMatch[1];
if (!functionName) {
return undefined;
}
let file = lineMatch[2];
if (!file) {
file = functionName;
functionName = undefined;
}
if (functionName === '<anonymous>') {
functionName = undefined;
}
if (file === '<anonymous>') {
return undefined;
}
const fileRegex = /^(.+?)(?:\:(\d+?)(?:\:(\d+?))?)?$/;
const fileMatch = file.match(fileRegex);
if (!fileMatch) {
return { functionName };
}
const result = {
functionName,
fileName: fileMatch[1],
lineNumber: fileMatch[2],
positionNumber: fileMatch[3]
};
return result;
}
exports.getFunctionExecutingQuery = getFunctionExecutingQuery;
function isSelectPageCountQuery(query, params) {
query;
return !!params.$isSelectPageCountQuery;
}
exports.isSelectPageCountQuery = isSelectPageCountQuery;