Skip to content

Commit 2b8ab98

Browse files
committed
Add a manage query view to dataservices
1 parent 6735fb8 commit 2b8ab98

File tree

20 files changed

+767
-56
lines changed

20 files changed

+767
-56
lines changed

workspaces/common-libs/service-designer/src/definitions.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,17 @@ export interface Resource {
7373
additionalActions?: Item[]; // Additional actions for the resource
7474
}
7575

76+
export interface Query {
77+
name: string;
78+
methods: any[];
79+
isOpen?: boolean;
80+
expandable?: boolean;
81+
additionalInfo?: JSX.Element; // Additional information to be displayed in the resource expanded view
82+
additionalActions?: Item[]; // Additional actions for the resource
83+
params?: ParameterConfig[];
84+
advancedParams?: Map<string, ParameterConfig>;
85+
}
86+
7687
export interface PathConfig {
7788
path: string;
7889
resources: ParameterConfig[];

workspaces/mi/mi-core/src/state-machine-types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ export enum MACHINE_VIEW {
6565
DefaultEndpointForm = "Default Endpoint Form",
6666
DataServiceForm = "Data Service Form",
6767
DssDataSourceForm = "DSS Data Source Form",
68-
DSSServiceDesigner = "Data Service Designer",
68+
DSSResourceServiceDesigner = "DSS Resource Designer",
69+
DSSQueryServiceDesigner = "DSS Query Designer",
6970
ProjectCreationForm = "Project Creation Form",
7071
ImportProjectForm = "Import Project Form",
7172
LocalEntryForm = "Local Entry Form",

workspaces/mi/mi-diagram/src/components/Form/common.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,13 @@ export const getParamManagerFromValues = (values: any[], keyIndex?: number, valu
139139

140140
if (typeof value === 'object' && value !== null) {
141141
const paramValues = getParamValues(value);
142+
const key = keyIndex != undefined && keyIndex >= 0 ? typeof value[keyIndex] === 'object' ? value[keyIndex].value : value[keyIndex] : index + 1;
142143
return {
143144
id: index,
144-
key: keyIndex != undefined && keyIndex >= 0 ? typeof value[keyIndex] === 'object' ? value[keyIndex].value : value[keyIndex] : index + 1,
145-
value: typeof value[valueIndex] === 'object' ? value[valueIndex].value : value[valueIndex],
146-
icon: 'query', paramValues
145+
key: key,
146+
value: (key === "Query" && valueIndex == 4) ? (typeof value[1] === 'object' ? value[1].value : value[1]) :
147+
(typeof value[valueIndex] === 'object' ? value[valueIndex].value : value[valueIndex]),
148+
paramValues
147149
};
148150
} else {
149151
return { value };

workspaces/mi/mi-diagram/src/components/nodes/ReferenceNode/ReferenceNodeModel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export class ReferenceNodeModel extends BaseNodeModel {
5656
rpcClient.getMiVisualizerRpcClient().openView({
5757
type: EVENT_TYPE.OPEN_VIEW,
5858
location: {
59-
view: MACHINE_VIEW.DSSServiceDesigner,
59+
view: MACHINE_VIEW.DSSResourceServiceDesigner,
6060
documentUri: uri
6161
}
6262
});

workspaces/mi/mi-diagram/src/components/sidePanel/dataServices/query.tsx

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ const QueryForm = (props: AddMediatorProps) => {
6868
returnGeneratedKeys: sidePanelContext?.formValues?.returnGeneratedKeys || false,
6969
keyColumns: sidePanelContext?.formValues?.keyColumns || "",
7070
returnUpdatedRowCount: sidePanelContext?.formValues?.returnUpdatedRowCount || false,
71-
forceStoredProc: sidePanelContext?.formValues?.forceStoredProc || false,
72-
forceJdbcBatchRequests: sidePanelContext?.formValues?.forceJdbcBatchRequests || false,
71+
forceStoredProc: sidePanelContext?.formValues?.forceStoredProc === "true" || false,
72+
forceJDBCBatchRequests: sidePanelContext?.formValues?.forceJDBCBatchRequests === "true" || false,
7373
});
7474
setIsLoading(false);
7575
}, []);
@@ -89,7 +89,7 @@ const QueryForm = (props: AddMediatorProps) => {
8989
queryProperties.maxFieldSize = values.maxFieldSize;
9090
queryProperties.maxRows = values.maxRows;
9191
queryProperties.forceStoredProc = values.forceStoredProc;
92-
queryProperties.forceJDBCBatchRequests = values.forceJdbcBatchRequests;
92+
queryProperties.forceJDBCBatchRequests = values.forceJDBCBatchRequests;
9393
queryProperties = Object.entries(queryProperties)
9494
.filter(([_, value]) => value !== "").map(([key, value]) => ({ key, value }));
9595
const updatedQuery = sidePanelContext?.formValues?.queryObject;
@@ -184,18 +184,6 @@ const QueryForm = (props: AddMediatorProps) => {
184184
<>
185185
<Typography sx={{ padding: "10px 20px", borderBottom: "1px solid var(--vscode-editorWidget-border)" }} variant="body3"></Typography>
186186
<div style={{ padding: "20px" }}>
187-
188-
<Field>
189-
<Controller
190-
name="queryId"
191-
control={control}
192-
render={({ field }) => (
193-
<TextField {...field} label="Query ID" size={50} placeholder="" />
194-
)}
195-
/>
196-
{errors.queryId && <Error>{errors.queryId.message.toString()}</Error>}
197-
</Field>
198-
199187
<Field>
200188
<Controller
201189
name="datasource"
@@ -335,13 +323,13 @@ const QueryForm = (props: AddMediatorProps) => {
335323

336324
<Field>
337325
<Controller
338-
name="forceJdbcBatchRequests"
326+
name="forceJDBCBatchRequests"
339327
control={control}
340328
render={({ field }) => (
341329
<VSCodeCheckbox {...field} type="checkbox" checked={field.value} onChange={(e: any) => { field.onChange(e.target.checked) }}>Force JDBC Batch Requests</VSCodeCheckbox>
342330
)}
343331
/>
344-
{errors.forceJdbcBatchRequests && <Error>{errors.forceJdbcBatchRequests.message.toString()}</Error>}
332+
{errors.forceJDBCBatchRequests && <Error>{errors.forceJDBCBatchRequests.message.toString()}</Error>}
345333
</Field>
346334

347335
</ComponentCard>

workspaces/mi/mi-extension/src/project-explorer/activate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ export async function activateProjectExplorer(treeviewId: string, context: Exten
382382
commands.registerCommand(COMMANDS.OPEN_DSS_SERVICE_DESIGNER, async (entry: ProjectExplorerEntry | Uri) => {
383383
revealWebviewPanel(false);
384384
const documentUri = entry instanceof ProjectExplorerEntry ? entry.info?.path : entry.fsPath;
385-
openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.DSSServiceDesigner, documentUri });
385+
openView(EVENT_TYPE.OPEN_VIEW, { view: MACHINE_VIEW.DSSResourceServiceDesigner, documentUri });
386386
});
387387

388388
commands.registerCommand(COMMANDS.EDIT_K8_CONFIGURATION_COMMAND, async () => {

workspaces/mi/mi-extension/src/test/e2e-playwright-tests/components/ArtifactTest/DataService.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ export class DataService {
6767
await projectExplorer.goToOverview("testProject");
6868
await projectExplorer.findItem(['Project testProject', 'Data Services', prevName], true);
6969

70-
const webView = await switchToIFrame('Data Service Designer', this._page);
70+
const webView = await switchToIFrame('DSS Resource Designer', this._page);
7171
if (!webView) {
72-
throw new Error("Failed to switch to Data Service Designer iframe");
72+
throw new Error("Failed to switch to DSS Resource Designer iframe");
7373
}
7474
const frame = webView.locator('div#root');
7575
await frame.getByTestId('edit-button').getByLabel('Icon Button').click();
@@ -156,9 +156,9 @@ export class DataService {
156156
await projectExplorer.goToOverview("testProject");
157157
await projectExplorer.findItem(['Project testProject', 'Data Services', prevName], true);
158158

159-
const webView = await switchToIFrame('Data Service Designer', this._page);
159+
const webView = await switchToIFrame('DSS Resource Designer', this._page);
160160
if (!webView) {
161-
throw new Error("Failed to switch to Data Service Designer iframe");
161+
throw new Error("Failed to switch to DSS Resource Designer iframe");
162162
}
163163
const frame = webView.locator('div#root');
164164
await frame.waitFor();
@@ -292,9 +292,9 @@ export class DataService {
292292
await projectExplorer.goToOverview("testProject");
293293
await projectExplorer.findItem(['Project testProject', 'Data Services', prevName], true);
294294

295-
const webView = await switchToIFrame('Data Service Designer', this._page);
295+
const webView = await switchToIFrame('DSS Resource Designer', this._page);
296296
if (!webView) {
297-
throw new Error("Failed to switch to Data Service Designer iframe");
297+
throw new Error("Failed to switch to DSS Resource Designer iframe");
298298
}
299299
const frame = webView.locator('div#root');
300300
await frame.waitFor();
@@ -413,9 +413,9 @@ export class DataService {
413413
await projectExplorer.goToOverview("testProject");
414414
await projectExplorer.findItem(['Project testProject', 'Data Services', prevName], true);
415415

416-
const webView = await switchToIFrame('Data Service Designer', this._page);
416+
const webView = await switchToIFrame('DSS Resource Designer', this._page);
417417
if (!webView) {
418-
throw new Error("Failed to switch to Data Service Designer iframe");
418+
throw new Error("Failed to switch to DSS Resource Designer iframe");
419419
}
420420
const frame = webView.locator('div#root');
421421
await frame.waitFor();
@@ -514,9 +514,9 @@ export class DataService {
514514
await projectExplorer.goToOverview("testProject");
515515
await projectExplorer.findItem(['Project testProject', 'Data Services', prevName], true);
516516

517-
const webView = await switchToIFrame('Data Service Designer', this._page);
517+
const webView = await switchToIFrame('DSS Resource Designer', this._page);
518518
if (!webView) {
519-
throw new Error("Failed to switch to Data Service Designer iframe");
519+
throw new Error("Failed to switch to DSS Resource Designer iframe");
520520
}
521521
const frame = webView.locator('div#root');
522522
await frame.waitFor();

workspaces/mi/mi-visualizer/src/MainPanel.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import React, { useEffect, useState, Suspense } from 'react';
22
import { POPUP_EVENT_TYPE, PopupMachineStateValue, MACHINE_VIEW, Platform, VisualizerLocation } from '@wso2/mi-core';
33
import { useVisualizerContext } from '@wso2/mi-rpc-client';
44
import { ServiceDesignerView } from './views/ServiceDesigner';
5-
import { DSSServiceDesignerView } from './views/Forms/DataServiceForm/ServiceDesigner';
5+
import { DSSResourceServiceDesignerView } from './views/Forms/DataServiceForm/ResourceServiceDesigner';
6+
import { DSSQueryServiceDesignerView } from './views/Forms/DataServiceForm/QueryServiceDesigner';
67
import { APIWizard, APIWizardProps } from './views/Forms/APIform';
78
import { EndpointWizard } from './views/Forms/EndpointForm';
89
import { SequenceWizard } from './views/Forms/SequenceForm';
@@ -376,8 +377,11 @@ const MainPanel = (props: MainPanelProps) => {
376377
case MACHINE_VIEW.MockService:
377378
setViewComponent(<MockServiceForm filePath={visualizerState.documentUri} stNode={visualizerState.stNode as MockService} isWindows={isWindows} />);
378379
break;
379-
case MACHINE_VIEW.DSSServiceDesigner:
380-
setViewComponent(<DSSServiceDesignerView syntaxTree={visualizerState.stNode} documentUri={visualizerState.documentUri} />);
380+
case MACHINE_VIEW.DSSResourceServiceDesigner:
381+
setViewComponent(<DSSResourceServiceDesignerView syntaxTree={visualizerState.stNode} documentUri={visualizerState.documentUri} />);
382+
break;
383+
case MACHINE_VIEW.DSSQueryServiceDesigner:
384+
setViewComponent(<DSSQueryServiceDesignerView syntaxTree={visualizerState.stNode} documentUri={visualizerState.documentUri} />);
381385
break;
382386
case MACHINE_VIEW.Welcome:
383387
setViewComponent(<WelcomeView />);

workspaces/mi/mi-visualizer/src/constants/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ export const DSS_TEMPLATES = {
6969
EDIT_OPERATION: "edit-dss-operation",
7070
EDIT_DESCRIPTION: "edit-dss-description",
7171
ADD_QUERY: "add-dss-query",
72+
ADD_FULL_QUERY: "add-full-dss-query",
73+
UPDATE_QUERY_CONFIG: "update-query-config",
74+
UPDATE_QUERY: "update-query",
75+
EDIT_QUERY_REFERENCE: "edit-query-reference"
7276
} as const;
7377

7478
export enum EndpointTypes {

0 commit comments

Comments
 (0)