package liquibase.sqlgenerator.core;
import liquibase.database.Database;
import liquibase.database.core.MySQLDatabase;
import liquibase.database.core.OracleDatabase;
import liquibase.database.core.PostgresDatabase;
import liquibase.exception.ValidationErrors;
import liquibase.sql.Sql;
import liquibase.sql.UnparsedSql;
import liquibase.sqlgenerator.SqlGenerator;
import liquibase.sqlgenerator.SqlGeneratorChain;
import liquibase.statement.core.SetTableRemarksStatement;
public class SetTableRemarksGenerator extends AbstractSqlGenerator<SetTableRemarksStatement> {
@Override
public boolean supports(SetTableRemarksStatement statement, Database database) {
return database instanceof MySQLDatabase || database instanceof OracleDatabase || database instanceof PostgresDatabase;
}
public ValidationErrors validate(SetTableRemarksStatement setTableRemarksStatement, Database database, SqlGeneratorChain sqlGeneratorChain) {
ValidationErrors validationErrors = new ValidationErrors();
validationErrors.checkRequiredField("tableName", setTableRemarksStatement.getTableName());
validationErrors.checkRequiredField("remarks", setTableRemarksStatement.getRemarks());
return validationErrors;
}
public Sql[] generateSql(SetTableRemarksStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) {
String sql;
String remarks = database.escapeStringForDatabase(statement.getRemarks());
if (database instanceof MySQLDatabase) {
sql = "ALTER TABLE "+database.escapeTableName(statement.getSchemaName(), statement.getTableName())+" COMMENT = '"+remarks+"'";
} else {
sql = "COMMENT ON TABLE "+database.escapeTableName(statement.getSchemaName(), statement.getTableName())+" IS '"+remarks+"'";
}
return new Sql[] {
new UnparsedSql(sql)
};
}
}