toPgSql method

String toPgSql(
  1. List<ColumnDefinition> targetColumns
)

Implementation

String toPgSql(List<ColumnDefinition> targetColumns) {
  var out = '';

  // Drop indexes
  for (var deleteIndex in deleteIndexes) {
    out += 'DROP INDEX "$deleteIndex";\n';
  }

  // Drop foreign keys
  for (var deleteKey in deleteForeignKeys) {
    out += 'ALTER TABLE "$name" DROP CONSTRAINT "$deleteKey";\n';
  }

  // Drop columns
  for (var deleteColumn in deleteColumns) {
    out += 'ALTER TABLE "$name" DROP COLUMN "$deleteColumn";\n';
  }

  // Add columns
  for (var addColumn in addColumns) {
    out +=
        'ALTER TABLE "$name" ADD COLUMN ${addColumn.toPgSqlFragment(tableName: name)};\n';
  }

  // Modify columns
  for (var alterColumn in modifyColumns) {
    out += alterColumn.toPgSql(
      tableName: name,
      columnDefinition: targetColumns.firstWhere(
        (c) => c.name == alterColumn.columnName,
      ),
    );
  }

  // Add indexes
  for (var addIndex in addIndexes) {
    out += addIndex.toPgSql(tableName: name);
  }

  return out;
}