builder method

Map<String, dynamic> builder()

Implementation

Map<String, dynamic> builder() {
  Map<String, dynamic> _where = {};
  _where.addAll(
      {for (var key in _whereTable.keys) key: _whereTable[key].value});

  _where.addAll(
      {for (var key in _whereGeoPoint.keys) key: _whereGeoPoint[key].value});

  _where.addAll(
      {for (var key in _whereBasic.keys) key: _whereBasic[key].value});

  if (_orBasic.isNotEmpty || _orGeoPoint.isNotEmpty || _orTable.isNotEmpty) {
    var or = [];
    for (var map in _orBasic) {
      or.add({for (var key in map.keys) key: map[key].value});
    }
    for (var map in _orGeoPoint) {
      or.add({for (var key in map.keys) key: map[key].value});
    }
    for (var map in _orTable) {
      or.add({for (var key in map.keys) key: map[key].value});
    }
    _where['\$or'] = or;
  }
  if (_andBasic.isNotEmpty ||
      _andGeoPoint.isNotEmpty ||
      _andTable.isNotEmpty) {
    var and = [];
    for (var map in _andBasic) {
      and.add({for (var key in map.keys) key: map[key].value});
    }
    for (var map in _andGeoPoint) {
      and.add({for (var key in map.keys) key: map[key].value});
    }
    for (var map in _andTable) {
      and.add({for (var key in map.keys) key: map[key].value});
    }
    _where['\$and'] = and;
  }

  return {
    'count': true,
    if (_where.isNotEmpty) ...{'where': jsonEncode(_where)},
    if (_groupCount) ...{'groupcount': _groupCount},
    if (_groupBy.isNotEmpty) ...{'groupby': _groupBy.join(',')},
    if (_include.isNotEmpty) ...{'include': _include.join(',')},
    if (_sum.isNotEmpty) ...{'sum': _sum.join(',')},
    if (_min.isNotEmpty) ...{'min': _min.join(',')},
    if (_max.isNotEmpty) ...{'max': _max.join(',')},
    if (_average.isNotEmpty) ...{'average': _average.join(',')},
    if (_having.isNotEmpty) ...{'having': jsonEncode(_having)},
    if (_order.isNotEmpty) ...{'order': _order.join(',')},
    if (_keys.isNotEmpty) ...{'keys': _keys.join(',')},
    if (_limit != null) ...{'limit': _limit},
    if (_skip != null) ...{'skip': _skip},
  };
}