151 lines
4.5 KiB
JavaScript
151 lines
4.5 KiB
JavaScript
const queryFormatter=(querys)=>{
|
|
|
|
var _query={};
|
|
for (const key in querys) {
|
|
|
|
if(typeof(querys[key]) === 'object'){
|
|
let valueKey = Object.keys(querys[key])[0];
|
|
let value = querys[key][valueKey]
|
|
if(querys[key].hasOwnProperty('ne')){
|
|
_query[key] = { $ne: value } ;
|
|
}else if(querys[key].hasOwnProperty('lt')){
|
|
_query[key] = { $lt: value } ;
|
|
}else if(querys[key].hasOwnProperty('gt')){
|
|
_query[key] = { $gt: value } ;
|
|
}else if(querys[key].hasOwnProperty('lte')){
|
|
_query[key] = { $lte: value } ;
|
|
}else if(querys[key].hasOwnProperty('gte')){
|
|
_query[key] = { $gte: value } ;
|
|
}else if(querys[key].hasOwnProperty('startsWith')){
|
|
_query[key] = new RegExp('^'+value,'i');
|
|
}else if(querys[key].hasOwnProperty('endsWith')){
|
|
_query[key] = new RegExp(value+'$','i');
|
|
}else if(querys[key].hasOwnProperty('contains')){
|
|
_query[key] = new RegExp(value,'i');
|
|
}else if(querys[key].hasOwnProperty('notContains')){
|
|
_query[key] = {$not: new RegExp(value,'i')} ;
|
|
}
|
|
}else if(typeof(querys[key]) === 'string' || typeof(querys[key]) === 'number'){
|
|
_query[key] = querys[key] ;
|
|
}
|
|
|
|
}
|
|
return _query
|
|
}
|
|
|
|
const queryBuilder_string=(query,name)=>{
|
|
let value= query[name];
|
|
let mode_name = name+"_mode";
|
|
let _query = {};
|
|
if(query.hasOwnProperty(mode_name)){
|
|
const mode = query[mode_name];
|
|
if(mode=="startsWith"){
|
|
_query[name] = new RegExp('^'+value,'i');
|
|
}else if(mode=="equals"){
|
|
_query[name] =value;
|
|
}else if(mode=="notEquals"){
|
|
_query[name] = { $ne: value } ;
|
|
}else if(mode=="endsWith"){
|
|
_query[name] = new RegExp(value+'$','i');
|
|
}else if(mode=="notContains"){
|
|
_query[name] = {$not: new RegExp(value,'i')} ;
|
|
}else if(mode=="contains"){
|
|
_query[name] = new RegExp(value,'i');
|
|
}
|
|
}else{
|
|
_query[name] = new RegExp(value,'i');
|
|
}
|
|
return _query;
|
|
}
|
|
const queryBuilder_number=(query,name)=>{
|
|
let value= query[name];
|
|
let mode_name = name+"_mode";
|
|
let _query = {};
|
|
|
|
if(value!=null ){
|
|
if(!isNaN(value)){
|
|
if(query.hasOwnProperty(mode_name)){
|
|
const mode = query[mode_name];
|
|
if(mode=="equals"){
|
|
_query[name] = value;
|
|
}else if(mode=="notEquals"){
|
|
_query[name] ={ $ne:value} ;
|
|
}else if(mode=="lt"){
|
|
_query[name] ={ $lt:value} ;
|
|
}else if(mode=="lte"){
|
|
_query[name] ={ $lte:value} ;
|
|
}else if(mode=="gte"){
|
|
_query[name] ={ $gte:value} ;
|
|
}else if(mode=="gt"){
|
|
_query[name] ={ $gt:value} ;
|
|
}
|
|
}else{
|
|
_query[name] = value ;
|
|
}
|
|
}
|
|
}
|
|
return _query;
|
|
}
|
|
const queryBuilder_date=(query,name)=>{
|
|
let value= query[name];
|
|
let mode_name = name+"_mode";
|
|
let _query = {};
|
|
if(value){
|
|
if(query.hasOwnProperty(mode_name)){
|
|
const mode = query[mode_name];
|
|
if(mode=="dateIs"){
|
|
_query[name] = value;
|
|
}else if(mode=="dateIsNot"){
|
|
_query[name] = { $ne: value} ;
|
|
}else if(mode=="dateBefore"){
|
|
_query[name] = { $lt:value}
|
|
}else if(mode=="dateAfter"){
|
|
_query[name]= { $gt:value}
|
|
}
|
|
}else{
|
|
_query[name]= value;
|
|
}
|
|
|
|
}
|
|
return _query;
|
|
}
|
|
const queryBuilder_array=(query,name)=>{
|
|
let value= query[name];
|
|
let _query = {};
|
|
if(value){
|
|
if(Array.isArray(value)){
|
|
_query[name] = { $in: value}
|
|
}else{
|
|
_query[name]= { $in: [value] }
|
|
}
|
|
}
|
|
return _query;
|
|
}
|
|
const queryBuilder_range_array=(query,name,type)=>{
|
|
let array_qry=name+"_array";
|
|
let value= query[array_qry];
|
|
let _query = {};
|
|
if(value){
|
|
if(Array.isArray(value)){
|
|
if(type=="date" && value.length==2 ){
|
|
_query[name] = { $gte: new Date(value[0]),$lte: new Date(value[1])}
|
|
}else{
|
|
_query[name] ={ $in: value}
|
|
}
|
|
}
|
|
}
|
|
return _query;
|
|
}
|
|
module.exports = {
|
|
queryFormatter,
|
|
queryBuilder_string,
|
|
queryBuilder_number,
|
|
queryBuilder_date,
|
|
queryBuilder_array,
|
|
queryBuilder_range_array
|
|
}
|
|
|
|
|
|
|
|
|