primer cambio
This commit is contained in:
74
node_modules/sequelize/lib/dialects/postgres/range.js
generated
vendored
Normal file
74
node_modules/sequelize/lib/dialects/postgres/range.js
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
"use strict";
|
||||
const _ = require("lodash");
|
||||
function stringifyRangeBound(bound) {
|
||||
if (bound === null) {
|
||||
return "";
|
||||
}
|
||||
if (bound === Infinity || bound === -Infinity) {
|
||||
return bound.toString().toLowerCase();
|
||||
}
|
||||
return JSON.stringify(bound);
|
||||
}
|
||||
function parseRangeBound(bound, parseType) {
|
||||
if (!bound) {
|
||||
return null;
|
||||
}
|
||||
if (bound === "infinity") {
|
||||
return Infinity;
|
||||
}
|
||||
if (bound === "-infinity") {
|
||||
return -Infinity;
|
||||
}
|
||||
return parseType(bound);
|
||||
}
|
||||
function stringify(data) {
|
||||
if (data === null)
|
||||
return null;
|
||||
if (!Array.isArray(data))
|
||||
throw new Error("range must be an array");
|
||||
if (!data.length)
|
||||
return "empty";
|
||||
if (data.length !== 2)
|
||||
throw new Error("range array length must be 0 (empty) or 2 (lower and upper bounds)");
|
||||
if (Object.prototype.hasOwnProperty.call(data, "inclusive")) {
|
||||
if (data.inclusive === false)
|
||||
data.inclusive = [false, false];
|
||||
else if (!data.inclusive)
|
||||
data.inclusive = [true, false];
|
||||
else if (data.inclusive === true)
|
||||
data.inclusive = [true, true];
|
||||
} else {
|
||||
data.inclusive = [true, false];
|
||||
}
|
||||
_.each(data, (value, index) => {
|
||||
if (_.isObject(value)) {
|
||||
if (Object.prototype.hasOwnProperty.call(value, "inclusive"))
|
||||
data.inclusive[index] = !!value.inclusive;
|
||||
if (Object.prototype.hasOwnProperty.call(value, "value"))
|
||||
data[index] = value.value;
|
||||
}
|
||||
});
|
||||
const lowerBound = stringifyRangeBound(data[0]);
|
||||
const upperBound = stringifyRangeBound(data[1]);
|
||||
return `${(data.inclusive[0] ? "[" : "(") + lowerBound},${upperBound}${data.inclusive[1] ? "]" : ")"}`;
|
||||
}
|
||||
exports.stringify = stringify;
|
||||
function parse(value, parser) {
|
||||
if (value === null)
|
||||
return null;
|
||||
if (value === "empty") {
|
||||
return [];
|
||||
}
|
||||
let result = value.substring(1, value.length - 1).split(",", 2);
|
||||
if (result.length !== 2)
|
||||
return value;
|
||||
result = result.map((item, index) => {
|
||||
return {
|
||||
value: parseRangeBound(item, parser),
|
||||
inclusive: index === 0 ? value[0] === "[" : value[value.length - 1] === "]"
|
||||
};
|
||||
});
|
||||
return result;
|
||||
}
|
||||
exports.parse = parse;
|
||||
//# sourceMappingURL=range.js.map
|
||||
Reference in New Issue
Block a user