@mando75/typeorm-graphql-loader
Version:
A dataloader which intelligently selects/joins the fields/relations from your TypeORM entities needed to resolve a GraphQL query
53 lines • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Formatter = void 0;
var __1 = require("..");
var StringUtils_1 = require("typeorm/util/StringUtils");
var Formatter = (function () {
function Formatter(_namingStrategy) {
this._namingStrategy = _namingStrategy;
this._searchMethodMapping = new Map([
[__1.LoaderSearchMethod.ANY_POSITION, function (text) { return "%".concat(text, "%"); }],
[__1.LoaderSearchMethod.STARTS_WITH, function (text) { return "".concat(text, "%"); }],
[__1.LoaderSearchMethod.ENDS_WITH, function (text) { return "%".concat(text); }],
]);
}
Formatter.prototype.columnSelection = function (alias, field) {
return "".concat(alias, ".").concat(field);
};
Formatter.prototype.aliasField = function (alias, field) {
switch (this._namingStrategy) {
case __1.LoaderNamingStrategyEnum.SNAKECASE:
return "".concat(alias, "_").concat((0, StringUtils_1.snakeCase)(field));
case __1.LoaderNamingStrategyEnum.CAMELCASE:
return "".concat(alias, "_").concat(field);
default:
return "".concat(alias, "_").concat(field);
}
};
Formatter.prototype.getSearchMethodMapping = function (method, searchText) {
return this._searchMethodMapping.get(method)(searchText);
};
Formatter.prototype.formatSearchColumns = function (searchColumns, alias, caseSensitive) {
var _this = this;
return searchColumns.map(function (field) {
if (typeof field === "string") {
var formattedColumnName = _this.columnSelection(alias, field);
return caseSensitive
? "".concat(formattedColumnName, " LIKE :searchText")
: "LOWER(".concat(formattedColumnName, ") LIKE LOWER(:searchText)");
}
else {
var joinedFields = field
.map(function (item) { return _this.columnSelection(alias, item); })
.join(" || ' ' || ");
return caseSensitive
? "".concat(joinedFields, " LIKE :searchText")
: "LOWER(".concat(joinedFields, ") LIKE LOWER(:searchText)");
}
});
};
return Formatter;
}());
exports.Formatter = Formatter;
//# sourceMappingURL=Formatter.js.map