query static method

Future<List<Map<String, dynamic>>> query(
  1. String tableName, {
  2. required DatabaseQuery databaseQuery,
})

Implementation

static Future<List<Map<String, dynamic>>> query(String tableName, {required DatabaseQuery databaseQuery}) async {
  List<Map<String, dynamic>> result = [];
  final qry = databaseQuery.get ?? databaseQuery.update ?? databaseQuery.delete ?? databaseQuery.insert;
  final select = qry?.select.toString().replaceAll('[', '').replaceAll(']', '').replaceAll('{NO_SELECTED_TABLE_NAME}', tableName);
  String closeParameter = '';

  final groupBy = qry?.groupBy.toString().replaceAll('[', '').replaceAll(']', '');
  if (groupBy != 'null') {
    closeParameter += ' GROUP BY $groupBy';
  }

  if (qry?.orderBy != null) {
    // if (closeParameter != '') {
    //   closeParameter += ', ';
    // }
    closeParameter += ' ORDER BY ' + OrderBy.queryBuilder(qry!.orderBy!) + ' ';
  }

  if (databaseQuery.get != null) {
    if (qry?.limit != null) {
      closeParameter += ' LIMIT ${qry?.limit}';
    }
    result = await DatabaseConfig.get(query: 'SELECT ${select == 'null' ? '*' : select} FROM $tableName ' + (databaseQuery.get!.joinQuery).replaceAll('{NO_SELECTED_TABLE_NAME}', tableName) + Transaction.query(databaseQuery.get!) + closeParameter);
  } else if (databaseQuery.delete != null) {
    final res = await DatabaseConfig.delete(query: 'DELETE FROM $tableName ' + (databaseQuery.delete!.joinQuery).replaceAll('{NO_SELECTED_TABLE_NAME}', tableName) + Transaction.query(databaseQuery.delete!) + closeParameter);
    if (res) {
      result.add({'status': 'success', 'message': 'data has been deleted'});
    }
  } else if (databaseQuery.insert != null) {
    final res = await DatabaseConfig.insert(data: databaseQuery.insert?.listData ?? databaseQuery.insert?.data, tableName: tableName);
    if (res) {
      result.add({'status': 'success', 'message': 'data has been added'});
    }
  } else if (databaseQuery.update != null) {
    final res = await DatabaseConfig.update(data: databaseQuery.update?.data ?? databaseQuery.insert?.listData, where: Transaction.query(databaseQuery.update!).replaceAll('WHERE', ""), tableName: tableName);
    if (res) {
      result.add({'status': 'success', 'message': 'data has been updated'});
    }
  }
  return result;
}