diff --git a/src/grammar/select.pegjs b/src/grammar/select.pegjs index 4f81608..b320c80 100644 --- a/src/grammar/select.pegjs +++ b/src/grammar/select.pegjs @@ -1,25 +1,21 @@ selectQuery = SELECT _+ ("*"_+)? as: asQuery? aggr:aggregateQry? FROM _ table:tableName _* join:joinQry* _* where:whereQry? _* -option:(skip/limit/distinct/orderBy/groupBy)* { - var skip=null; - var limit=null; - var distinct = false; - var order = null; - var groupBy = null; - option.forEach(val=>{ +options:(skip/limit/distinct/orderBy/groupBy)* { + const option = {}; + options.forEach(val=>{ var key = Object.keys(val)[0]; switch(key){ case 'skip': - skip= val[key]; break; + option.skip= val[key]; break; case 'limit': - limit= val[key]; break; + option.limit= val[key]; break; case 'distinct': - distinct = val[key]; break; + option.distinct = val[key]; break; case 'order': - order = val[key]; break; + option.order = val[key]; break; case 'groupBy': - groupBy = val[key]; break; + option.groupBy = val[key]; break; } }); let modifiedWhere ; @@ -66,11 +62,7 @@ option:(skip/limit/distinct/orderBy/groupBy)* { data:{ from:table, where:modifiedWhere, - skip:skip, - limit:limit, - distinct : distinct, - order:order, - groupBy:groupBy, + ...option, aggregate : aggr, join:join.length===0?null:join }