fetchQueryRecords method

Future<Map<String, dynamic>> fetchQueryRecords({
  1. String query = "",
  2. String fetchMode = "LIST",
  3. Map<String, List<String>> formatColumns = const {},
})
override

Implementation

Future<Map<String,dynamic>> fetchQueryRecords({String query="",String fetchMode="LIST",Map<String,List<String>> formatColumns=const {}}) async{
  Map<String,dynamic> result = Simplify.getDefaultResult();
  try {
    Database? _db = await getConnectionObject();
    if(_db!=null){
      if(fetchMode=="COUNT"){
        query="SELECT COUNT(*) AS records_count FROM ("+query+") AS SELECT_QUERY;";
      }
      if(logQuery){
        _debug(query);
      }
      List<Map<String,dynamic>> tempRecords=List.from(await _db.rawQuery(query));
      List<Map<String,dynamic>> records=List.empty(growable: true);
      tempRecords.forEach((orgRecord) {
        Map<String,dynamic >record=Map.from(orgRecord);
        formatColumns.forEach((fieldName, fieldFormats) {
          if(record.containsKey(fieldName)){
            if(fieldFormats.contains(BasePojo.formatDecrypt)) {
              record[fieldName]=EncryptionHelper.decrypt(record[fieldName].toString());
            }
            if(fieldFormats.contains(BasePojo.formatJson)){
              if(record[fieldName]!=null&&record[fieldName]!="null"){
                if(record[fieldName].toString().isEmpty){
                  record[fieldName]=null;
                }
                else{
                  try {
                    record[fieldName] =
                        jsonDecode(record[fieldName].toString());
                  }
                  catch(ex,stack){
                    Simplify.debug("Cannot Format Value ${record[fieldName]}");
                  }
                }
              }
            }
          }
        });
        records.add(Map.from(record));
      });
      result["message"] = "query executed successfully";
      result["query"] = query;
      result["records"] = records;
      if(fetchMode=="COUNT"){
        result["records"] = records.first["records_count"];
      }
      result["status"] = "success";
    }
  }
  catch(ex,stack){
    result["query"]=query;
    result["message"]=Simplify.getExceptionMessage(ex,stack: stack);
  }
  return result;
}