renameColumnField method

Future<bool> renameColumnField(
  1. String tableName,
  2. String oldFieldName,
  3. String newFieldName
)

Implementation

Future<bool> renameColumnField(String tableName,String oldFieldName,String newFieldName) async{
  bool result=false;
  try{
    String query="PRAGMA table_info("+tableName+");";
    Map response=await fetchQueryRecords(query:query);
    String createTableQuery="";
    if(response.getString("status").equalsIgnoreCase("success")){
      List<String> oldFieldsList=[];
      List<String> newFieldsList=[];
      List<Map<String,dynamic>> fieldsRecords=response["records"];
      fieldsRecords.forEach((record) {
        String fieldName=record["name"];
        if(record["pk"]!=1){
          oldFieldsList.add(fieldName);
        }
        if(fieldName.equalsIgnoreCase(oldFieldName)){
          fieldName=newFieldName;
        }
        if(record["pk"]!=1){
          newFieldsList.add(fieldName);
        }
        if(!createTableQuery.equalsIgnoreCase("")){
          createTableQuery+=",";
        }
        createTableQuery+=fieldName+" "+record["type"];
        if(record["pk"]==1){
          createTableQuery+=" PRIMARY KEY AUTOINCREMENT";
        }
        if(record["notnull"]==1){
          createTableQuery+=" NOT NULL";
        }
        if(record.containsKey("dflt_value")){
          createTableQuery+=" DEFAULT "+record["dflt_value"];
        }
      });
      String tempTableName="backup_"+tableName+"_temp";
      query="ALTER TABLE "+tableName+" RENAME TO "+ tempTableName+";";
      if(logQuery){
        _debug(query);
      }
      executeQuery(query);
      query="CREATE TABLE "+tableName+"("+ createTableQuery+");";
      if(logQuery){
        _debug(query);
      }
      executeQuery(query);
      query="INSERT INTO "+tableName+"("+Simplify.joinStrings(",",newFieldsList)+") SELECT "+Simplify.joinStrings(",",oldFieldsList)+" FROM "+tempTableName+";";
      if(logQuery){
        _debug(query);
      }
      executeQuery(query);
      query="DROP TABLE "+tempTableName+";";
      if(logQuery){
        _debug(query);
      }
      executeQuery(query);
    }

  }
  catch (ex,stack){
    Simplify.getExceptionMessage(ex,stack: stack);
  }
  return result;
}