Merge pull request #566 from dbeaver/feature/CB-1370

feat: support SQL query formatting in WebServiceSQL.
This commit is contained in:
Serge Rider
2021-12-02 17:14:52 +03:00
committed by GitHub
3 changed files with 21 additions and 5 deletions
@@ -49,6 +49,9 @@ public interface DBWServiceSQL extends DBWService {
Integer maxResults,
Boolean simpleMode) throws DBWebException;
@WebAction
String formatQuery(@NotNull WebSQLContextInfo sqlContext, @NotNull String query) throws DBWebException;
@WebAction
DBCLogicalOperator[] getSupportedOperations(
@NotNull WebSQLContextInfo contextInfo,
@@ -66,6 +66,12 @@ public class WebServiceBindingSQL extends WebServiceBindingBase<DBWServiceSQL> i
env.getArgument("simpleMode")
)
)
.dataFetcher("sqlFormatQuery", env ->
getService(env).formatQuery(
getSQLContext(env),
env.getArgument("query")
)
)
.dataFetcher("sqlSupportedOperations", env ->
getService(env).getSupportedOperations(
getSQLContext(env),
@@ -97,7 +103,7 @@ public class WebServiceBindingSQL extends WebServiceBindingBase<DBWServiceSQL> i
getSQLContext(env),
env.getArgument("defaultCatalog"),
env.getArgument("defaultSchema"));
return true;
return true;
})
.dataFetcher("sqlResultClose", env ->
@@ -35,13 +35,11 @@ import org.jkiss.dbeaver.model.exec.DBCLogicalOperator;
import org.jkiss.dbeaver.model.exec.DBExecUtils;
import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.sql.SQLDialect;
import org.jkiss.dbeaver.model.sql.SQLQuery;
import org.jkiss.dbeaver.model.sql.SQLScriptElement;
import org.jkiss.dbeaver.model.sql.SQLUtils;
import org.jkiss.dbeaver.model.sql.*;
import org.jkiss.dbeaver.model.sql.completion.SQLCompletionAnalyzer;
import org.jkiss.dbeaver.model.sql.completion.SQLCompletionProposalBase;
import org.jkiss.dbeaver.model.sql.completion.SQLCompletionRequest;
import org.jkiss.dbeaver.model.sql.format.SQLFormatUtils;
import org.jkiss.dbeaver.model.sql.generator.SQLGenerator;
import org.jkiss.dbeaver.model.sql.parser.SQLParserContext;
import org.jkiss.dbeaver.model.sql.parser.SQLScriptParser;
@@ -151,6 +149,15 @@ public class WebServiceSQL implements DBWServiceSQL {
}
}
@NotNull
public String formatQuery(@NotNull WebSQLContextInfo sqlContext, @NotNull String query) throws DBWebException {
DBPDataSource dataSource = sqlContext.getProcessor().getConnection().getDataSourceContainer().getDataSource();
if (dataSource == null) {
throw new DBWebException("DataSource is null: can't format SQL query");
}
return SQLFormatUtils.formatSQL(dataSource, query);
}
@Override
public DBCLogicalOperator[] getSupportedOperations(@NotNull WebSQLContextInfo contextInfo, @NotNull String resultsId, int attributeIndex) throws DBWebException {
WebSQLResultsInfo results = contextInfo.getResults(resultsId);