完成条件的解析
							parent
							
								
									b5330c859c
								
							
						
					
					
						commit
						041e633849
					
				| 
						 | 
					@ -75,7 +75,7 @@ class Method {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let sql = parser.select(select)
 | 
					    let sql = parser.select(select)
 | 
				
			||||||
    sql += `FROM \`${table}\` `
 | 
					    sql += `FROM ${table} `
 | 
				
			||||||
    if (leftJoin) {
 | 
					    if (leftJoin) {
 | 
				
			||||||
      sql += parser.leftJoin(leftJoin)
 | 
					      sql += parser.leftJoin(leftJoin)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -130,7 +130,7 @@ class Method {
 | 
				
			||||||
      return Promise.reject('Insert Error: empty table')
 | 
					      return Promise.reject('Insert Error: empty table')
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let sql = `INSERT INTO \`${table}\` `
 | 
					    let sql = `INSERT INTO ${table} `
 | 
				
			||||||
    let keys = []
 | 
					    let keys = []
 | 
				
			||||||
    let vals = []
 | 
					    let vals = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,38 +6,6 @@
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
const { escape } = require('mysql')
 | 
					const { escape } = require('mysql')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * [parseWhere 格式化where条件]
 | 
					 | 
				
			||||||
 * @param  [array] arr [条件数组]
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*function parseWhere(arr) {
 | 
					 | 
				
			||||||
  if (typeof arr === 'string' && !!arr) {
 | 
					 | 
				
			||||||
    return ' WHERE ' + arr
 | 
					 | 
				
			||||||
  } else if (Array.isArray(arr) && arr.length > 0) {
 | 
					 | 
				
			||||||
    let where = ''
 | 
					 | 
				
			||||||
    for (let it of arr) {
 | 
					 | 
				
			||||||
      it.join = it.join || 'AND'
 | 
					 | 
				
			||||||
      it.op = it.op || '='
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      let fixVal = it.val
 | 
					 | 
				
			||||||
      if (
 | 
					 | 
				
			||||||
        !/(^\(SELECT\s+.*\)$)|^`/.test(it.val) &&
 | 
					 | 
				
			||||||
        !['IN', 'BETWEEN'].includes(it.op)
 | 
					 | 
				
			||||||
      ) {
 | 
					 | 
				
			||||||
        fixVal = escape(it.val)
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      where += `${it.join.toUpperCase()} ${it.key} ${it.op} ${fixVal} `
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    where = ' WHERE ' + where.trim().replace(/^(AND|OR)/, ' ') + ' '
 | 
					 | 
				
			||||||
    return where
 | 
					 | 
				
			||||||
  } else {
 | 
					 | 
				
			||||||
    return ' '
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function getType(val) {
 | 
					function getType(val) {
 | 
				
			||||||
  if (val === null) {
 | 
					  if (val === null) {
 | 
				
			||||||
    return String(val)
 | 
					    return String(val)
 | 
				
			||||||
| 
						 | 
					@ -87,7 +55,7 @@ function parse$opt(opt) {
 | 
				
			||||||
          break
 | 
					          break
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (tmp.$sql) {
 | 
					        if (tmp.$sql) {
 | 
				
			||||||
          sql += ` ${k} IN ${tmp.$sql} `
 | 
					          sql += ` ${k} ${tmp.$sql} `
 | 
				
			||||||
          break
 | 
					          break
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,6 +66,33 @@ function parse$opt(opt) {
 | 
				
			||||||
          sql += ` ${k} IN (${list.join(',')}) `
 | 
					          sql += ` ${k} IN (${list.join(',')}) `
 | 
				
			||||||
          break
 | 
					          break
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (tmp.$between) {
 | 
				
			||||||
 | 
					          if (tmp.$between.length < 2) {
 | 
				
			||||||
 | 
					            throw new Error(`Array $between's length must be 2.`)
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          let list = tmp.$between.map(it => {
 | 
				
			||||||
 | 
					            return escape(it)
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
 | 
					          sql += ` ${k} BETWEEN ${list[0]} AND ${list[1]} `
 | 
				
			||||||
 | 
					          break
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        // 比较
 | 
				
			||||||
 | 
					        if (tmp.$lt || tmp.$lte) {
 | 
				
			||||||
 | 
					          sql += ` ${k} <${tmp.$lte ? '=' : ''} ${tmp.$lt || tmp.$lte} `
 | 
				
			||||||
 | 
					          if (tmp.$gt || tmp.$gte) {
 | 
				
			||||||
 | 
					            sql += ` AND ${k} >${tmp.$gte ? '=' : ''} ${tmp.$gt || tmp.$gte} `
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          break
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (tmp.$gt || tmp.$gte) {
 | 
				
			||||||
 | 
					          sql += ` ${k} >${tmp.$gte ? '=' : ''} ${tmp.$gt || tmp.$gte} `
 | 
				
			||||||
 | 
					          break
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (tmp.$eq) {
 | 
				
			||||||
 | 
					          sql += ` ${k} = ${tmp.$eq} `
 | 
				
			||||||
 | 
					          break
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      default:
 | 
					      default:
 | 
				
			||||||
        sql += ` ${k} = ${escape(tmp)}`
 | 
					        sql += ` ${k} = ${escape(tmp)}`
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -145,7 +140,7 @@ const Parser = {
 | 
				
			||||||
      } else if (opt.$or) {
 | 
					      } else if (opt.$or) {
 | 
				
			||||||
        return parse$or(opt.$or)
 | 
					        return parse$or(opt.$or)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      return parse$opt(opt)
 | 
					      return ` WHERE ${parse$opt(opt)}`
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return ' '
 | 
					    return ' '
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue