tg-knex-query-resolver
Version:
TeselaGen's Knex based query resolver
135 lines (132 loc) • 4.49 kB
JavaScript
module.exports = {
greaterThan: ">",
greaterThanOrEqual: '>=',
lessThan: "<",
lessThanOrEqual: "<=",
equals: "=",
notEquals:"<>",
notNull: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereNotNull" : "whereNotNull",
args: [filter.field]
}
},
isNull: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereNull" : "whereNull",
args: [filter.field]
}
},
inList: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereIn" : "whereIn",
args: [filter.field, filter.args[0]]
}
},
notInList: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereNotIn" : "whereNotIn",
args: [filter.field, filter.args[0]]
}
},
between: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereBetween" : "whereBetween",
args: [filter.field, [filter.args[0],filter.args[1]]]
};
},
startsWithExactly: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhere" : "where",
args: [filter.field,'LIKE',filter.args[0]+"%"]
};
},
endsWithExactly: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhere" : "where",
args: [filter.field,'LIKE',"%"+filter.args[0]]
};
},
containsExactly: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhere" : "where",
args: [filter.field,'LIKE',"%"+filter.args[0]+"%"]
};
},
startsWith: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereRaw" : "whereRaw",
args: ['UPPER(??) LIKE ?', [filter.field, filter.args[0].toUpperCase()+"%"]]
};
},
notStartsWith: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereRaw" : "whereRaw",
args: ['UPPER(??) NOT LIKE ?', [filter.field, filter.args[0].toUpperCase()+"%"]]
};
},
endsWith: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereRaw" : "whereRaw",
args: ['UPPER(??) LIKE ?', [filter.field, "%"+filter.args[0].toUpperCase()]]
};
},
notEndsWith: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereRaw" : "whereRaw",
args: ['UPPER(??) NOT LIKE ?', [filter.field, "%"+filter.args[0].toUpperCase()]]
};
},
contains: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereRaw" : "whereRaw",
args: ['UPPER(??) LIKE ?', [filter.field, "%"+filter.args[0].toUpperCase()+"%"]]
};
},
notContains: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereRaw" : "whereRaw",
args: ['UPPER(??) NOT LIKE ?', [filter.field, "%"+filter.args[0].toUpperCase()+"%"]]
};
},
upperCase: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereRaw" : "whereRaw",
args: ["UPPER(??) = UPPER(?)", [filter.field, filter.args[0]]]
};
},
lowerCase: (filter, chainOperator) => {
return {
op: chainOperator === 'or' ? "orWhereRaw" : "whereRaw",
args: ["LOWER(??) = LOWER(?)", [filter.field, filter.args[0]]]
};
},
matchesRegex: (filter, chainOperator) => {
return {
op: 'matchesRegex',
isDialectSpecific: true,
postgres: {
op: chainOperator === 'or' ? "orWhere" : "where",
args: [filter.field,'~*',filter.args[0]]
},
oracle: {
op: chainOperator === 'or' ? "orWhereRaw" : "whereRaw",
args: ['REGEXP_LIKE(??, ?)',[filter.field, filter.args[0]]]
}
};
},
//'dateOnly',
//'subString':""
};
/*
startsWith: (filter, chainOperator) => {
return {
op: "where",
args: [filter.field,'LIKE',filter.args[0]]
}
// return {
// op: "whereRaw",
// args: [`${filter.field} LIKE ${filter.args[0]}%`]
// }
},
*/