Initial commit
This commit is contained in:
84
node_modules/knex/lib/formatter/rawFormatter.js
generated
vendored
Executable file
84
node_modules/knex/lib/formatter/rawFormatter.js
generated
vendored
Executable file
@@ -0,0 +1,84 @@
|
||||
const { columnize } = require('./wrappingFormatter');
|
||||
|
||||
function replaceRawArrBindings(raw, client) {
|
||||
const bindingsHolder = {
|
||||
bindings: [],
|
||||
};
|
||||
const builder = raw;
|
||||
|
||||
const expectedBindings = raw.bindings.length;
|
||||
const values = raw.bindings;
|
||||
let index = 0;
|
||||
|
||||
const sql = raw.sql.replace(/\\?\?\??/g, function (match) {
|
||||
if (match === '\\?') {
|
||||
return match;
|
||||
}
|
||||
|
||||
const value = values[index++];
|
||||
|
||||
if (match === '??') {
|
||||
return columnize(value, builder, client, bindingsHolder);
|
||||
}
|
||||
return client.parameter(value, builder, bindingsHolder);
|
||||
});
|
||||
|
||||
if (expectedBindings !== index) {
|
||||
throw new Error(`Expected ${expectedBindings} bindings, saw ${index}`);
|
||||
}
|
||||
|
||||
return {
|
||||
method: 'raw',
|
||||
sql,
|
||||
bindings: bindingsHolder.bindings,
|
||||
};
|
||||
}
|
||||
|
||||
function replaceKeyBindings(raw, client) {
|
||||
const bindingsHolder = {
|
||||
bindings: [],
|
||||
};
|
||||
const builder = raw;
|
||||
|
||||
const values = raw.bindings;
|
||||
const regex = /\\?(:(\w+):(?=::)|:(\w+):(?!:)|:(\w+))/g;
|
||||
|
||||
const sql = raw.sql.replace(regex, function (match, p1, p2, p3, p4) {
|
||||
if (match !== p1) {
|
||||
return p1;
|
||||
}
|
||||
|
||||
const part = p2 || p3 || p4;
|
||||
const key = match.trim();
|
||||
const isIdentifier = key[key.length - 1] === ':';
|
||||
const value = values[part];
|
||||
|
||||
if (value === undefined) {
|
||||
if (Object.prototype.hasOwnProperty.call(values, part)) {
|
||||
bindingsHolder.bindings.push(value);
|
||||
}
|
||||
|
||||
return match;
|
||||
}
|
||||
|
||||
if (isIdentifier) {
|
||||
return match.replace(
|
||||
p1,
|
||||
columnize(value, builder, client, bindingsHolder)
|
||||
);
|
||||
}
|
||||
|
||||
return match.replace(p1, client.parameter(value, builder, bindingsHolder));
|
||||
});
|
||||
|
||||
return {
|
||||
method: 'raw',
|
||||
sql,
|
||||
bindings: bindingsHolder.bindings,
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
replaceKeyBindings,
|
||||
replaceRawArrBindings,
|
||||
};
|
||||
Reference in New Issue
Block a user