node_modules ignore

This commit is contained in:
2025-05-08 23:43:47 +02:00
parent e19d52f172
commit 4574544c9f
65041 changed files with 10593536 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
import _ from 'lodash/fp';
import { isScalarAttribute, isString, isNumber } from '../../utils/types.mjs';
import { toColumnName } from './transform.mjs';
const applySearch = (knex, query, ctx)=>{
const { qb, uid, db } = ctx;
const meta = db.metadata.get(uid);
const { attributes } = meta;
const searchColumns = [
'id'
];
const stringColumns = Object.keys(attributes).filter((attributeName)=>{
const attribute = attributes[attributeName];
return isScalarAttribute(attribute) && isString(attribute.type) && attribute.searchable !== false;
});
searchColumns.push(...stringColumns);
if (!_.isNaN(_.toNumber(query))) {
const numberColumns = Object.keys(attributes).filter((attributeName)=>{
const attribute = attributes[attributeName];
return isScalarAttribute(attribute) && isNumber(attribute.type) && attribute.searchable !== false;
});
searchColumns.push(...numberColumns);
}
switch(db.dialect.client){
case 'postgres':
{
searchColumns.forEach((attr)=>{
const columnName = toColumnName(meta, attr);
return knex.orWhereRaw(`??::text ILIKE ?`, [
qb.aliasColumn(columnName),
`%${escapeQuery(query, '*%\\')}%`
]);
});
break;
}
case 'sqlite':
{
searchColumns.forEach((attr)=>{
const columnName = toColumnName(meta, attr);
return knex.orWhereRaw(`?? LIKE ? ESCAPE '\\'`, [
qb.aliasColumn(columnName),
`%${escapeQuery(query, '*%\\')}%`
]);
});
break;
}
case 'mysql':
{
searchColumns.forEach((attr)=>{
const columnName = toColumnName(meta, attr);
return knex.orWhereRaw(`?? LIKE ?`, [
qb.aliasColumn(columnName),
`%${escapeQuery(query, '*%\\')}%`
]);
});
break;
}
}
};
const escapeQuery = (query, charsToEscape, escapeChar = '\\')=>{
return query.split('').reduce((escapedQuery, char)=>charsToEscape.includes(char) ? `${escapedQuery}${escapeChar}${char}` : `${escapedQuery}${char}`, '');
};
export { applySearch };
//# sourceMappingURL=search.mjs.map