Skip to content

Commit dc1dae2

Browse files
committed
Correctly handle Agroal Dev UI settings in hot-reload scenarios
Also remember AI-assisted query toggle in local storage, and remove unnecessary page metadata
1 parent b876c94 commit dc1dae2

File tree

4 files changed

+38
-54
lines changed

4 files changed

+38
-54
lines changed

extensions/agroal/deployment/src/main/java/io/quarkus/agroal/deployment/devui/AgroalDevUIProcessor.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,7 @@ void devUI(DataSourcesJdbcBuildTimeConfig config,
2929
cardPageBuildItem.addPage(Page.webComponentPageBuilder()
3030
.icon("font-awesome-solid:database")
3131
.title("Database view")
32-
.componentLink("qwc-agroal-datasource.js")
33-
.metadata("allowSql", String.valueOf(config.devui().allowSql()))
34-
.metadata("appendSql", config.devui().appendToDefaultSelect().orElse(""))
35-
.metadata("allowedHost", config.devui().allowedDBHost().orElse(null)));
32+
.componentLink("qwc-agroal-datasource.js"));
3633
}
3734
}
3835

extensions/agroal/deployment/src/main/resources/dev-ui/qwc-agroal-datasource.js

Lines changed: 31 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { QwcHotReloadElement, html, css} from 'qwc-hot-reload-element';
2-
import { RouterController } from 'router-controller';
32
import { JsonRpc } from 'jsonrpc';
3+
import { StorageController } from 'storage-controller';
44
import '@vaadin/combo-box';
55
import '@vaadin/item';
66
import '@vaadin/icon';
@@ -10,7 +10,7 @@ import '@qomponent/qui-card';
1010
import '@vaadin/grid';
1111
import '@vaadin/tabs';
1212
import '@vaadin/tabsheet';
13-
import { columnBodyRenderer, columnHeaderRenderer } from '@vaadin/grid/lit.js';
13+
import { columnBodyRenderer } from '@vaadin/grid/lit.js';
1414
import 'qui-themed-code-block';
1515
import { notifier } from 'notifier';
1616
import '@vaadin/progress-bar';
@@ -21,7 +21,7 @@ import '@qomponent/qui-dot';
2121
import 'qui-assistant-button';
2222
import 'qui-assistant-warning';
2323
import '@qomponent/qui-badge';
24-
import { dialogFooterRenderer, dialogHeaderRenderer, dialogRenderer } from '@vaadin/dialog/lit.js';
24+
import { dialogHeaderRenderer, dialogRenderer } from '@vaadin/dialog/lit.js';
2525
import { observeState } from 'lit-element-state';
2626
import { assistantState } from 'assistant-state';
2727

@@ -31,9 +31,8 @@ import { assistantState } from 'assistant-state';
3131
export class QwcAgroalDatasource extends observeState(QwcHotReloadElement) {
3232
jsonRpc = new JsonRpc(this);
3333
configJsonRpc = new JsonRpc("devui-configuration");
34-
35-
routerController = new RouterController(this);
36-
34+
storageControl = new StorageController(this);
35+
3736
static styles = css`
3837
.dataSources{
3938
display: flex;
@@ -228,32 +227,31 @@ export class QwcAgroalDatasource extends observeState(QwcHotReloadElement) {
228227
this._showAssistantWarning = false;
229228
this._showImportSQLDialog = false;
230229
this._showErDiagramDialog = false;
231-
this._englishToSQLEnabled = false;
230+
this._englishToSQLEnabled = this.storageControl.get("english-to-sql") === "true";
232231
this._englishToSQLLoadingMessage = null;
233232
}
234233

235234
connectedCallback() {
236235
super.connectedCallback();
237-
238-
var page = this.routerController.getCurrentPage();
239-
if(page && page.metadata){
240-
this._allowSql = (page.metadata.allowSql === "true");
241-
this._appendSql = page.metadata.appendSql;
242-
this._allowedHost = page.metadata.allowedHost;
243-
}else{
244-
this._allowSql = false;
245-
this._appendSql = "";
246-
this._allowedHost = null;
247-
}
248-
249-
this.jsonRpc.getDataSources().then(jsonRpcResponse => {
250-
this._dataSources = jsonRpcResponse.result.reduce((map, obj) => {
236+
this.hotReload();
237+
}
238+
239+
hotReload(){
240+
const configPromise = this.configJsonRpc.getAllValues();
241+
const dbPromise = this.jsonRpc.getDataSources();
242+
Promise.all([configPromise, dbPromise]).then(values => {
243+
const configValues = values[0].result;
244+
this._allowSql = configValues['quarkus.datasource.dev-ui.allow-sql'] === 'true';
245+
this._appendSql = configValues['quarkus.datasource.dev-ui.append-to-default-select'] || "";
246+
this._allowedHost = configValues['quarkus.datasource.dev-ui.allowed-db-host'] || null;
247+
const dsResponse = values[1].result;
248+
if (dsResponse) {
249+
this._dataSources = dsResponse.reduce((map, obj) => {
251250
map[obj.name] = obj;
252251
return map;
253-
}, {});
252+
}, {});
253+
}
254254
});
255-
256-
this._englishToSQLEnabled = false; // TODO: Load from storage
257255
}
258256

259257
disconnectedCallback() {
@@ -663,7 +661,7 @@ export class QwcAgroalDatasource extends observeState(QwcHotReloadElement) {
663661
${this._renderInputTextField()}
664662
<vaadin-button class="no-margin" theme="icon tertiary small" aria-label="Clear">
665663
<vaadin-tooltip .hoverDelay=${500} slot="tooltip" text="Clear"></vaadin-tooltip>
666-
<vaadin-icon class="small-icon" @click=${this._clearInput}
664+
<vaadin-icon class="small-icon" @click=${() => this._clearInput(this._englishToSQLEnabled)}
667665
icon="font-awesome-solid:broom"></vaadin-icon>
668666
</vaadin-button>
669667
<vaadin-button class="no-margin" theme="icon tertiary small" aria-label="Run">
@@ -700,11 +698,8 @@ export class QwcAgroalDatasource extends observeState(QwcHotReloadElement) {
700698
}
701699

702700
_switchEnglishToSQL(){
703-
if(this._englishToSQLEnabled){
704-
this._englishToSQLEnabled = false;
705-
}else{
706-
this._englishToSQLEnabled = true;
707-
}
701+
this._englishToSQLEnabled = !this._englishToSQLEnabled;
702+
this.storageControl.set("english-to-sql", this._englishToSQLEnabled);
708703
}
709704

710705
_englishKeyDown(e){
@@ -823,7 +818,7 @@ export class QwcAgroalDatasource extends observeState(QwcHotReloadElement) {
823818
this._fetchTableDefinitions();
824819
this._selectedTableIndex = event.detail.value;
825820
this._selectedTable = this._tables[this._selectedTableIndex];
826-
this._clearInput();
821+
this._clearInput(false);
827822
}
828823

829824
_previousPage(){
@@ -862,7 +857,7 @@ export class QwcAgroalDatasource extends observeState(QwcHotReloadElement) {
862857
notifier.showErrorMessage(jsonRpcResponse.result.error);
863858
} else if (jsonRpcResponse.result.message){
864859
notifier.showInfoMessage(jsonRpcResponse.result.message);
865-
this._clearInput();
860+
this._clearInput(false);
866861
} else {
867862
this._currentDataSet = jsonRpcResponse.result;
868863
this._currentNumberOfPages = this._getNumberOfPages();
@@ -934,13 +929,13 @@ export class QwcAgroalDatasource extends observeState(QwcHotReloadElement) {
934929
this._executeSQL(sql);
935930
}
936931
});
937-
938-
932+
933+
939934

940935
}
941936

942-
_clearInput(){
943-
if(assistantState.current.isConfigured && this._englishToSQLEnabled){
937+
_clearInput(englishToSql){
938+
if(englishToSql && assistantState.current.isConfigured){
944939
this._currentEnglish = null;
945940
this.shadowRoot.getElementById('assistantInput').value = '';
946941
}else{
@@ -968,10 +963,6 @@ export class QwcAgroalDatasource extends observeState(QwcHotReloadElement) {
968963
return str.trim().toLowerCase().startsWith(searchString.toLowerCase());
969964
}
970965

971-
hotReload(){
972-
this._fetchTableDefinitions();
973-
}
974-
975966
_isAllowedHostDatabase() {
976967

977968
let jdbcUrl = this._selectedDataSource.jdbcUrl;

extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/dev/HibernateOrmDevUIProcessor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ public CardPageBuildItem create(HibernateOrmConfig config) {
4646
card.addPage(Page.webComponentPageBuilder()
4747
.title("HQL Console")
4848
.componentLink("hibernate-orm-hql-console.js")
49-
.icon("font-awesome-solid:play")
50-
.metadata("allowHql", String.valueOf(config.devui().allowHql())));
49+
.icon("font-awesome-solid:play"));
5150
return card;
5251
}
5352

extensions/hibernate-orm/deployment/src/main/resources/dev-ui/hibernate-orm-hql-console.js

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -286,14 +286,11 @@ export class HibernateOrmHqlConsoleComponent extends observeState(QwcHotReloadEl
286286
const configPromise = this.configJsonRpc.getAllValues();
287287
const infoPromise = this.jsonRpc.getInfo();
288288
Promise.all([configPromise, infoPromise]).then(responses => {
289-
const configResponse = responses[0];
290-
const infoResponse = responses[1];
291-
if (configResponse && configResponse.result) {
292-
const allowHqlConfig = configResponse.result['quarkus.hibernate-orm.dev-ui.allow-hql'];
293-
this._allowHql = allowHqlConfig && allowHqlConfig === 'true';
294-
}
295-
if (infoResponse && infoResponse.result) {
296-
this._persistenceUnits = infoResponse.result.persistenceUnits;
289+
const configValues = responses[0].result;
290+
this._allowHql = configValues['quarkus.hibernate-orm.dev-ui.allow-hql'] === 'true';
291+
const infoResponse = responses[1].result;
292+
if (infoResponse) {
293+
this._persistenceUnits = infoResponse.persistenceUnits;
297294
this._selectPersistenceUnit(this._persistenceUnits[0]);
298295
}
299296
}).catch(error => {

0 commit comments

Comments
 (0)