ydb-embedded-ui 8.11.1 → 8.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/DateRange/__test__/fromDateRangeValues.test.js +4 -4
- package/dist/components/DateRange/__test__/fromDateRangeValues.test.js.map +1 -1
- package/dist/components/DateRange/__test__/getdatePickerSize.test.js +4 -4
- package/dist/components/DateRange/__test__/getdatePickerSize.test.js.map +1 -1
- package/dist/components/DateRange/__test__/toDateRangeValues.test.js +4 -4
- package/dist/components/DateRange/__test__/toDateRangeValues.test.js.map +1 -1
- package/dist/components/FullNodeViewer/i18n/index.d.ts +1 -1
- package/dist/components/NodeHostWrapper/NodeHostWrapper.d.ts +2 -2
- package/dist/components/PDiskInfo/PDiskInfo.js +2 -3
- package/dist/components/PDiskInfo/PDiskInfo.js.map +1 -1
- package/dist/components/PDiskPopup/PDiskPopup.js +2 -2
- package/dist/components/PDiskPopup/PDiskPopup.js.map +1 -1
- package/dist/components/QueryResultTable/QueryResultTable.d.ts +2 -0
- package/dist/components/QueryResultTable/QueryResultTable.js +16 -11
- package/dist/components/QueryResultTable/QueryResultTable.js.map +1 -1
- package/dist/components/QueryResultTable/QueryResultTable.scss +6 -0
- package/dist/components/TabletNameWrapper/TabletNameWrapper.js +2 -3
- package/dist/components/TabletNameWrapper/TabletNameWrapper.js.map +1 -1
- package/dist/components/TenantNameWrapper/TenantNameWrapper.js +2 -3
- package/dist/components/TenantNameWrapper/TenantNameWrapper.js.map +1 -1
- package/dist/components/TooltipsContent/NodeEndpointsTooltipContent/NodeEndpointsTooltipContent.js +2 -3
- package/dist/components/TooltipsContent/NodeEndpointsTooltipContent/NodeEndpointsTooltipContent.js.map +1 -1
- package/dist/components/VDiskInfo/VDiskInfo.js +2 -3
- package/dist/components/VDiskInfo/VDiskInfo.js.map +1 -1
- package/dist/components/VDiskInfo/i18n/index.d.ts +1 -1
- package/dist/components/VDiskPopup/VDiskPopup.js +2 -2
- package/dist/components/VDiskPopup/VDiskPopup.js.map +1 -1
- package/dist/components/nodesColumns/__test__/utils.test.js +4 -4
- package/dist/components/nodesColumns/__test__/utils.test.js.map +1 -1
- package/dist/components/nodesColumns/constants.d.ts +1 -0
- package/dist/components/nodesColumns/constants.js +5 -0
- package/dist/components/nodesColumns/constants.js.map +1 -1
- package/dist/containers/App/App.d.ts +1 -1
- package/dist/containers/App/Content.js +13 -3
- package/dist/containers/App/Content.js.map +1 -1
- package/dist/containers/AppWithClusters/ExtendedCluster/ExtendedCluster.js +7 -2
- package/dist/containers/AppWithClusters/ExtendedCluster/ExtendedCluster.js.map +1 -1
- package/dist/containers/AppWithClusters/ExtendedTenant/ExtendedTenant.js +3 -3
- package/dist/containers/AppWithClusters/ExtendedTenant/ExtendedTenant.js.map +1 -1
- package/dist/containers/AppWithClusters/useClusterData.d.ts +1 -13
- package/dist/containers/AppWithClusters/useClusterData.js +4 -18
- package/dist/containers/AppWithClusters/useClusterData.js.map +1 -1
- package/dist/containers/AsideNavigation/YdbInternalUser/YdbInternalUser.js +15 -2
- package/dist/containers/AsideNavigation/YdbInternalUser/YdbInternalUser.js.map +1 -1
- package/dist/containers/Authentication/Authentication.js +16 -4
- package/dist/containers/Authentication/Authentication.js.map +1 -1
- package/dist/containers/Authentication/utils.d.ts +1 -0
- package/dist/containers/Authentication/utils.js +3 -0
- package/dist/containers/Authentication/utils.js.map +1 -1
- package/dist/containers/Cluster/Cluster.js +1 -1
- package/dist/containers/Cluster/Cluster.js.map +1 -1
- package/dist/containers/Cluster/Cluster.scss +0 -7
- package/dist/containers/Cluster/ClusterInfo/ClusterInfo.d.ts +0 -2
- package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js.map +1 -1
- package/dist/containers/Header/Header.js +2 -2
- package/dist/containers/Header/Header.js.map +1 -1
- package/dist/containers/Node/Node.js +1 -1
- package/dist/containers/Node/Node.js.map +1 -1
- package/dist/containers/Node/NodeStructure/Pdisk.js +2 -3
- package/dist/containers/Node/NodeStructure/Pdisk.js.map +1 -1
- package/dist/containers/Nodes/Nodes.js +11 -3
- package/dist/containers/Nodes/Nodes.js.map +1 -1
- package/dist/containers/PDiskPage/PDiskPage.js +3 -3
- package/dist/containers/PDiskPage/PDiskPage.js.map +1 -1
- package/dist/containers/Storage/PaginatedStorage.js +4 -1
- package/dist/containers/Storage/PaginatedStorage.js.map +1 -1
- package/dist/containers/Storage/PaginatedStorageNodes.js +2 -4
- package/dist/containers/Storage/PaginatedStorageNodes.js.map +1 -1
- package/dist/containers/Storage/StorageControls/StorageControls.js +4 -1
- package/dist/containers/Storage/StorageControls/StorageControls.js.map +1 -1
- package/dist/containers/Storage/StorageGroups/columns/constants.d.ts +1 -0
- package/dist/containers/Storage/StorageGroups/columns/constants.js +10 -0
- package/dist/containers/Storage/StorageGroups/columns/constants.js.map +1 -1
- package/dist/containers/Storage/StorageGroups/columns/hooks.js +9 -3
- package/dist/containers/Storage/StorageGroups/columns/hooks.js.map +1 -1
- package/dist/containers/Tablet/Tablet.js +3 -3
- package/dist/containers/Tablet/Tablet.js.map +1 -1
- package/dist/containers/Tablet/components/TabletControls/TabletControls.js +2 -3
- package/dist/containers/Tablet/components/TabletControls/TabletControls.js.map +1 -1
- package/dist/containers/Tablet/components/TabletInfo/TabletInfo.js +2 -3
- package/dist/containers/Tablet/components/TabletInfo/TabletInfo.js.map +1 -1
- package/dist/containers/Tablets/Tablets.d.ts +1 -2
- package/dist/containers/Tablets/Tablets.js +7 -11
- package/dist/containers/Tablets/Tablets.js.map +1 -1
- package/dist/containers/Tablets/TabletsTable.d.ts +2 -1
- package/dist/containers/Tablets/TabletsTable.js +22 -9
- package/dist/containers/Tablets/TabletsTable.js.map +1 -1
- package/dist/containers/Tablets/i18n/en.json +3 -1
- package/dist/containers/Tablets/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/Diagnostics.js +1 -1
- package/dist/containers/Tenant/Diagnostics/Diagnostics.js.map +1 -1
- package/dist/containers/Tenant/ObjectSummary/__test__/transformPath.test.js +6 -6
- package/dist/containers/Tenant/ObjectSummary/__test__/transformPath.test.js.map +1 -1
- package/dist/containers/Tenant/Query/CancelQueryButton/CancelQueryButton.d.ts +4 -3
- package/dist/containers/Tenant/Query/CancelQueryButton/CancelQueryButton.js +2 -8
- package/dist/containers/Tenant/Query/CancelQueryButton/CancelQueryButton.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +50 -15
- package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettings.test.js +3 -3
- package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettings.test.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettingsDescription.test.js +3 -3
- package/dist/containers/Tenant/Query/QueryEditorControls/utils/getChangedQueryExecutionSettingsDescription.test.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.d.ts +7 -2
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js +10 -7
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js +5 -1
- package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.d.ts +4 -1
- package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.js +8 -3
- package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.js.map +1 -1
- package/dist/containers/Tenant/Query/utils/isQueryCancelledError.js +17 -2
- package/dist/containers/Tenant/Query/utils/isQueryCancelledError.js.map +1 -1
- package/dist/containers/UserSettings/i18n/en.json +2 -0
- package/dist/containers/UserSettings/i18n/index.d.ts +1 -1
- package/dist/containers/UserSettings/settings.d.ts +1 -0
- package/dist/containers/UserSettings/settings.js +7 -2
- package/dist/containers/UserSettings/settings.js.map +1 -1
- package/dist/containers/VDiskPage/VDiskPage.js +3 -3
- package/dist/containers/VDiskPage/VDiskPage.js.map +1 -1
- package/dist/containers/Versions/NodesTable/NodesTable.js +3 -5
- package/dist/containers/Versions/NodesTable/NodesTable.js.map +1 -1
- package/dist/services/api/auth.d.ts +1 -0
- package/dist/services/api/auth.js.map +1 -1
- package/dist/services/api/index.d.ts +2 -0
- package/dist/services/api/index.js +2 -0
- package/dist/services/api/index.js.map +1 -1
- package/dist/services/api/streaming.d.ts +12 -0
- package/dist/services/api/streaming.js +65 -0
- package/dist/services/api/streaming.js.map +1 -0
- package/dist/services/api/viewer.d.ts +2 -14
- package/dist/services/api/viewer.js.map +1 -1
- package/dist/services/settings.d.ts +1 -0
- package/dist/services/settings.js +2 -1
- package/dist/services/settings.js.map +1 -1
- package/dist/store/reducers/authentication/authentication.d.ts +1 -0
- package/dist/store/reducers/authentication/authentication.js.map +1 -1
- package/dist/store/reducers/capabilities/capabilities.d.ts +126 -1
- package/dist/store/reducers/capabilities/capabilities.js +6 -2
- package/dist/store/reducers/capabilities/capabilities.js.map +1 -1
- package/dist/store/reducers/capabilities/hooks.d.ts +3 -0
- package/dist/store/reducers/capabilities/hooks.js +14 -1
- package/dist/store/reducers/capabilities/hooks.js.map +1 -1
- package/dist/store/reducers/cluster/__test__/parseGroupsStatsQueryResponse.test.js +1 -1
- package/dist/store/reducers/cluster/__test__/parseGroupsStatsQueryResponse.test.js.map +1 -1
- package/dist/store/reducers/query/__test__/utils.test.js +4 -4
- package/dist/store/reducers/query/__test__/utils.test.js.map +1 -1
- package/dist/store/reducers/query/preparePlanData.d.ts +5 -0
- package/dist/store/reducers/query/preparePlanData.js +57 -0
- package/dist/store/reducers/query/preparePlanData.js.map +1 -0
- package/dist/store/reducers/query/prepareQueryData.js +8 -54
- package/dist/store/reducers/query/prepareQueryData.js.map +1 -1
- package/dist/store/reducers/query/query.d.ts +3 -1
- package/dist/store/reducers/query/query.js +76 -1
- package/dist/store/reducers/query/query.js.map +1 -1
- package/dist/store/reducers/query/streamingReducers.d.ts +6 -0
- package/dist/store/reducers/query/streamingReducers.js +118 -0
- package/dist/store/reducers/query/streamingReducers.js.map +1 -0
- package/dist/store/reducers/query/utils.d.ts +4 -0
- package/dist/store/reducers/query/utils.js +12 -0
- package/dist/store/reducers/query/utils.js.map +1 -1
- package/dist/types/additionalProps.d.ts +1 -1
- package/dist/types/api/capabilities.d.ts +4 -0
- package/dist/types/api/query.d.ts +17 -1
- package/dist/types/store/query.d.ts +9 -0
- package/dist/types/store/streaming.d.ts +37 -0
- package/dist/types/store/streaming.js +2 -0
- package/dist/types/store/streaming.js.map +1 -0
- package/dist/utils/__test__/getColumnWidth.test.js +15 -15
- package/dist/utils/__test__/getColumnWidth.test.js.map +1 -1
- package/dist/utils/__test__/monitoring.test.js +4 -4
- package/dist/utils/__test__/monitoring.test.js.map +1 -1
- package/dist/utils/__test__/parseBalancer.test.js +9 -9
- package/dist/utils/__test__/parseBalancer.test.js.map +1 -1
- package/dist/utils/__test__/prepareBackend.test.js +3 -3
- package/dist/utils/__test__/prepareBackend.test.js.map +1 -1
- package/dist/utils/bytesParsers/__test__/formatBytes.test.js +6 -6
- package/dist/utils/bytesParsers/__test__/formatBytes.test.js.map +1 -1
- package/dist/utils/constants.d.ts +2 -1
- package/dist/utils/constants.js +1 -0
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/dataFormatters/__test__/formatNumbers.test.js +9 -9
- package/dist/utils/dataFormatters/__test__/formatNumbers.test.js.map +1 -1
- package/dist/utils/dataFormatters/__test__/formatStorageValues.test.js +7 -7
- package/dist/utils/dataFormatters/__test__/formatStorageValues.test.js.map +1 -1
- package/dist/utils/dataFormatters/__test__/formatUptime.test.js +11 -11
- package/dist/utils/dataFormatters/__test__/formatUptime.test.js.map +1 -1
- package/dist/utils/dataFormatters/__test__/roundToSignificant.test.js +2 -2
- package/dist/utils/dataFormatters/__test__/roundToSignificant.test.js.map +1 -1
- package/dist/utils/developerUI/__test__/developerUI.test.js +12 -12
- package/dist/utils/developerUI/__test__/developerUI.test.js.map +1 -1
- package/dist/utils/disks/__test__/calculatePDiskSeverity.test.js +5 -5
- package/dist/utils/disks/__test__/calculatePDiskSeverity.test.js.map +1 -1
- package/dist/utils/disks/__test__/calculateVDiskSeverity.test.js +8 -8
- package/dist/utils/disks/__test__/calculateVDiskSeverity.test.js.map +1 -1
- package/dist/utils/disks/__test__/prepareDisks.test.js +7 -7
- package/dist/utils/disks/__test__/prepareDisks.test.js.map +1 -1
- package/dist/utils/hooks/__test__/useTableSort.test.js +3 -3
- package/dist/utils/hooks/__test__/useTableSort.test.js.map +1 -1
- package/dist/utils/hooks/useAdditionalNodesProps.d.ts +2 -0
- package/dist/utils/hooks/useAdditionalNodesProps.js +14 -0
- package/dist/utils/hooks/useAdditionalNodesProps.js.map +1 -0
- package/dist/utils/hooks/useIsUserAllowedToMakeChanges.d.ts +1 -0
- package/dist/utils/hooks/useIsUserAllowedToMakeChanges.js +6 -0
- package/dist/utils/hooks/useIsUserAllowedToMakeChanges.js.map +1 -0
- package/dist/utils/hooks/useNodeDeveloperUIHref.js +4 -7
- package/dist/utils/hooks/useNodeDeveloperUIHref.js.map +1 -1
- package/dist/utils/prepareBackend.d.ts +2 -1
- package/dist/utils/prepareBackend.js +3 -2
- package/dist/utils/prepareBackend.js.map +1 -1
- package/dist/utils/query.d.ts +3 -2
- package/dist/utils/query.js +18 -31
- package/dist/utils/query.js.map +1 -1
- package/dist/utils/query.test.js +19 -19
- package/dist/utils/query.test.js.map +1 -1
- package/dist/utils/response.js +2 -1
- package/dist/utils/response.js.map +1 -1
- package/dist/utils/timeParsers/__test__/formatDuration.test.js +6 -6
- package/dist/utils/timeParsers/__test__/formatDuration.test.js.map +1 -1
- package/dist/utils/timeParsers/__test__/protobuf.test.js +10 -10
- package/dist/utils/timeParsers/__test__/protobuf.test.js.map +1 -1
- package/package.json +5 -4
- package/dist/containers/Tablets/index.d.ts +0 -1
- package/dist/containers/Tablets/index.js +0 -2
- package/dist/containers/Tablets/index.js.map +0 -1
@@ -6,6 +6,7 @@ import { isQueryErrorResponse } from '../../../utils/query';
|
|
6
6
|
import { isNumeric } from '../../../utils/utils';
|
7
7
|
import { api } from '../api';
|
8
8
|
import { prepareQueryData } from './prepareQueryData';
|
9
|
+
import { addStreamingChunks as addStreamingChunksReducer, setStreamQueryResponse as setStreamQueryResponseReducer, setStreamSession as setStreamSessionReducer, } from './streamingReducers';
|
9
10
|
import { getActionAndSyntaxFromQueryMode, getQueryInHistory } from './utils';
|
10
11
|
const MAXIMUM_QUERIES_IN_HISTORY = 20;
|
11
12
|
const queriesHistoryInitial = settingsManager.readUserSettingsValue(QUERIES_HISTORY_KEY, []);
|
@@ -87,6 +88,9 @@ const slice = createSlice({
|
|
87
88
|
setQueryHistoryFilter: (state, action) => {
|
88
89
|
state.history.filter = action.payload;
|
89
90
|
},
|
91
|
+
setStreamSession: setStreamSessionReducer,
|
92
|
+
addStreamingChunks: addStreamingChunksReducer,
|
93
|
+
setStreamQueryResponse: setStreamQueryResponseReducer,
|
90
94
|
},
|
91
95
|
selectors: {
|
92
96
|
selectQueriesHistoryFilter: (state) => state.history.filter || '',
|
@@ -105,10 +109,81 @@ const slice = createSlice({
|
|
105
109
|
},
|
106
110
|
});
|
107
111
|
export default slice.reducer;
|
108
|
-
export const { changeUserInput, setQueryResult, saveQueryToHistory, updateQueryInHistory, goToPreviousQuery, goToNextQuery, setTenantPath, setQueryHistoryFilter, } = slice.actions;
|
112
|
+
export const { changeUserInput, setQueryResult, saveQueryToHistory, updateQueryInHistory, goToPreviousQuery, goToNextQuery, setTenantPath, setQueryHistoryFilter, addStreamingChunks, setStreamQueryResponse, setStreamSession, } = slice.actions;
|
109
113
|
export const { selectQueriesHistoryFilter, selectQueriesHistoryCurrentIndex, selectQueriesHistory, selectTenantPath, selectResult, selectUserInput, } = slice.selectors;
|
114
|
+
const DEFAULT_STREAM_CHUNK_SIZE = 1000;
|
115
|
+
const DEFAULT_CONCURRENT_RESULTS = false;
|
110
116
|
export const queryApi = api.injectEndpoints({
|
111
117
|
endpoints: (build) => ({
|
118
|
+
useStreamQuery: build.mutation({
|
119
|
+
queryFn: async ({ query, database, querySettings = {}, enableTracingLevel, queryId }, { signal, dispatch, getState }) => {
|
120
|
+
dispatch(setQueryResult({ type: 'execute', queryId, isLoading: true }));
|
121
|
+
const { action, syntax } = getActionAndSyntaxFromQueryMode('execute', querySettings === null || querySettings === void 0 ? void 0 : querySettings.queryMode);
|
122
|
+
try {
|
123
|
+
let streamDataChunkBatch = [];
|
124
|
+
let batchTimeout = null;
|
125
|
+
const flushBatch = () => {
|
126
|
+
if (streamDataChunkBatch.length > 0) {
|
127
|
+
dispatch(addStreamingChunks(streamDataChunkBatch));
|
128
|
+
streamDataChunkBatch = [];
|
129
|
+
}
|
130
|
+
batchTimeout = null;
|
131
|
+
};
|
132
|
+
await window.api.streaming.streamQuery({
|
133
|
+
query,
|
134
|
+
database,
|
135
|
+
action,
|
136
|
+
syntax,
|
137
|
+
stats: querySettings.statisticsMode,
|
138
|
+
tracingLevel: querySettings.tracingLevel && enableTracingLevel
|
139
|
+
? TracingLevelNumber[querySettings.tracingLevel]
|
140
|
+
: undefined,
|
141
|
+
limit_rows: isNumeric(querySettings.limitRows)
|
142
|
+
? Number(querySettings.limitRows)
|
143
|
+
: undefined,
|
144
|
+
transaction_mode: querySettings.transactionMode === 'implicit'
|
145
|
+
? undefined
|
146
|
+
: querySettings.transactionMode,
|
147
|
+
timeout: isNumeric(querySettings.timeout)
|
148
|
+
? Number(querySettings.timeout) * 1000
|
149
|
+
: undefined,
|
150
|
+
output_chunk_max_size: DEFAULT_STREAM_CHUNK_SIZE,
|
151
|
+
concurrent_results: DEFAULT_CONCURRENT_RESULTS || undefined,
|
152
|
+
}, {
|
153
|
+
signal,
|
154
|
+
onQueryResponseChunk: (chunk) => {
|
155
|
+
dispatch(setStreamQueryResponse(chunk));
|
156
|
+
},
|
157
|
+
onSessionChunk: (chunk) => {
|
158
|
+
dispatch(setStreamSession(chunk));
|
159
|
+
},
|
160
|
+
onStreamDataChunk: (chunk) => {
|
161
|
+
streamDataChunkBatch.push(chunk);
|
162
|
+
if (!batchTimeout) {
|
163
|
+
batchTimeout = window.requestAnimationFrame(flushBatch);
|
164
|
+
}
|
165
|
+
},
|
166
|
+
});
|
167
|
+
// Flush any remaining chunks
|
168
|
+
if (batchTimeout) {
|
169
|
+
window.cancelAnimationFrame(batchTimeout);
|
170
|
+
flushBatch();
|
171
|
+
}
|
172
|
+
return { data: null };
|
173
|
+
}
|
174
|
+
catch (error) {
|
175
|
+
const state = getState();
|
176
|
+
dispatch(setQueryResult({
|
177
|
+
...state.query.result,
|
178
|
+
type: 'execute',
|
179
|
+
error,
|
180
|
+
isLoading: false,
|
181
|
+
queryId,
|
182
|
+
}));
|
183
|
+
return { error };
|
184
|
+
}
|
185
|
+
},
|
186
|
+
}),
|
112
187
|
useSendQuery: build.mutation({
|
113
188
|
queryFn: async ({ actionType = 'execute', query, database, querySettings = {}, enableTracingLevel, queryId, }, { signal, dispatch }) => {
|
114
189
|
var _a;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../src/store/reducers/query/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../src/store/reducers/query/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAC,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAC,GAAG,EAAC,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACH,kBAAkB,IAAI,yBAAyB,EAC/C,sBAAsB,IAAI,6BAA6B,EACvD,gBAAgB,IAAI,uBAAuB,GAC9C,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAC,+BAA+B,EAAE,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAE3E,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAEtC,MAAM,qBAAqB,GAAG,eAAe,CAAC,qBAAqB,CAC/D,mBAAmB,EACnB,EAAE,CACO,CAAC;AAEd,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,GAAG,0BAA0B,CAAC;AAE7E,MAAM,YAAY,GAAe;IAC7B,KAAK,EAAE,EAAE;IACT,OAAO,EAAE;QACL,OAAO,EAAE,qBAAqB;aACzB,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;aACtC,GAAG,CAAC,iBAAiB,CAAC;QAC3B,YAAY,EACR,qBAAqB,CAAC,MAAM,GAAG,0BAA0B;YACrD,CAAC,CAAC,0BAA0B,GAAG,CAAC;YAChC,CAAC,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;QAC1C,MAAM,EAAE,EAAE;KACb;CACJ,CAAC;AAEF,MAAM,KAAK,GAAG,WAAW,CAAC;IACtB,IAAI,EAAE,OAAO;IACb,YAAY;IACZ,QAAQ,EAAE;QACN,eAAe,EAAE,CAAC,KAAK,EAAE,MAAsC,EAAE,EAAE;YAC/D,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,CAAC;QACD,cAAc,EAAE,CAAC,KAAK,EAAE,MAA8C,EAAE,EAAE;YACtE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;QAClC,CAAC;QACD,kBAAkB,EAAE,CAChB,KAAK,EACL,MAA2D,EAC7D,EAAE;YACA,MAAM,EAAC,SAAS,EAAE,OAAO,EAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YAE5C,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,OAAO,EAAC,CAAC,CAAC,KAAK,CACrE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrE,CAAC;YACF,eAAe,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;YACtE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YAE3C,KAAK,CAAC,OAAO,GAAG;gBACZ,OAAO,EAAE,UAAU;gBACnB,YAAY;aACf,CAAC;QACN,CAAC;QACD,oBAAoB,EAAE,CAClB,KAAK,EACL,MAA2D,EAC7D,EAAE;YACA,MAAM,EAAC,OAAO,EAAE,KAAK,EAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YAExC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO;YACX,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;YAElF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO;YACX,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,EAAC,UAAU,EAAE,OAAO,EAAC,GAAG,KAAK,CAAC;YACpC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE;gBACxB,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC/B,UAAU;gBACV,OAAO;aACV,CAAC,CAAC;YAEH,eAAe,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;YAEtE,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;QACvC,CAAC;QACD,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;YAChD,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBACpB,OAAO;YACX,CAAC;YACD,MAAM,eAAe,GAAG,YAAY,GAAG,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACrD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;YAC9B,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,eAAe,CAAC;QACjD,CAAC;QACD,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;YACrB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;YAChD,IAAI,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnD,OAAO;YACX,CAAC;YACD,MAAM,eAAe,GAAG,YAAY,GAAG,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACrD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;YAC9B,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,eAAe,CAAC;QACjD,CAAC;QACD,aAAa,EAAE,CAAC,KAAK,EAAE,MAA6B,EAAE,EAAE;YACpD,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;QACtC,CAAC;QACD,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAA6B,EAAE,EAAE;YAC5D,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;QAC1C,CAAC;QACD,gBAAgB,EAAE,uBAAuB;QACzC,kBAAkB,EAAE,yBAAyB;QAC7C,sBAAsB,EAAE,6BAA6B;KACxD;IACD,SAAS,EAAE;QACP,0BAA0B,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE;QACjE,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU;QAC7C,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM;QACrC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;;YAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACpC,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,OAAO,CAAC,MAAM,0CAAE,WAAW,EAAE,CAAC;YAEnD,OAAO,MAAM;gBACT,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACvE,CAAC,CAAC,KAAK,CAAC;QAChB,CAAC;QACD,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;QACvC,gCAAgC,EAAE,CAAC,KAAK,EAAE,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,YAAY,CAAA,EAAA;KAC3E;CACJ,CAAC,CAAC;AAEH,eAAe,KAAK,CAAC,OAAO,CAAC;AAC7B,MAAM,CAAC,MAAM,EACT,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,GACnB,GAAG,KAAK,CAAC,OAAO,CAAC;AAElB,MAAM,CAAC,MAAM,EACT,0BAA0B,EAC1B,gCAAgC,EAChC,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,eAAe,GAClB,GAAG,KAAK,CAAC,SAAS,CAAC;AAgBpB,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEzC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC;IACxC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnB,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAwB;YAClD,OAAO,EAAE,KAAK,EACV,EAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,EAAE,EAAE,kBAAkB,EAAE,OAAO,EAAC,EAClE,EAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAC,EAC9B,EAAE;gBACA,QAAQ,CAAC,cAAc,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;gBAEtE,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,+BAA+B,CACpD,SAAS,EACT,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,CAC3B,CAAC;gBAEF,IAAI,CAAC;oBACD,IAAI,oBAAoB,GAAsB,EAAE,CAAC;oBACjD,IAAI,YAAY,GAAkB,IAAI,CAAC;oBAEvC,MAAM,UAAU,GAAG,GAAG,EAAE;wBACpB,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAClC,QAAQ,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,CAAC;4BACnD,oBAAoB,GAAG,EAAE,CAAC;wBAC9B,CAAC;wBACD,YAAY,GAAG,IAAI,CAAC;oBACxB,CAAC,CAAC;oBAEF,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAClC;wBACI,KAAK;wBACL,QAAQ;wBACR,MAAM;wBACN,MAAM;wBACN,KAAK,EAAE,aAAa,CAAC,cAAc;wBACnC,YAAY,EACR,aAAa,CAAC,YAAY,IAAI,kBAAkB;4BAC5C,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,YAAY,CAAC;4BAChD,CAAC,CAAC,SAAS;wBACnB,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC;4BAC1C,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;4BACjC,CAAC,CAAC,SAAS;wBACf,gBAAgB,EACZ,aAAa,CAAC,eAAe,KAAK,UAAU;4BACxC,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,aAAa,CAAC,eAAe;wBACvC,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;4BACrC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;4BACtC,CAAC,CAAC,SAAS;wBACf,qBAAqB,EAAE,yBAAyB;wBAChD,kBAAkB,EAAE,0BAA0B,IAAI,SAAS;qBAC9D,EACD;wBACI,MAAM;wBACN,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;4BAC5B,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC5C,CAAC;wBACD,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;4BACtB,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;wBACtC,CAAC;wBACD,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;4BACzB,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACjC,IAAI,CAAC,YAAY,EAAE,CAAC;gCAChB,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;4BAC5D,CAAC;wBACL,CAAC;qBACJ,CACJ,CAAC;oBAEF,6BAA6B;oBAC7B,IAAI,YAAY,EAAE,CAAC;wBACf,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;wBAC1C,UAAU,EAAE,CAAC;oBACjB,CAAC;oBAED,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;gBACxB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,MAAM,KAAK,GAAG,QAAQ,EAAe,CAAC;oBACtC,QAAQ,CACJ,cAAc,CAAC;wBACX,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM;wBACrB,IAAI,EAAE,SAAS;wBACf,KAAK;wBACL,SAAS,EAAE,KAAK;wBAChB,OAAO;qBACV,CAAC,CACL,CAAC;oBACF,OAAO,EAAC,KAAK,EAAC,CAAC;gBACnB,CAAC;YACL,CAAC;SACJ,CAAC;QACF,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAwB;YAChD,OAAO,EAAE,KAAK,EACV,EACI,UAAU,GAAG,SAAS,EACtB,KAAK,EACL,QAAQ,EACR,aAAa,GAAG,EAAE,EAClB,kBAAkB,EAClB,OAAO,GACV,EACD,EAAC,MAAM,EAAE,QAAQ,EAAC,EACpB,EAAE;;gBACA,QAAQ,CAAC,cAAc,CAAC,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;gBAEvE,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,GAAG,+BAA+B,CACpD,UAAU,EACV,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,CAC3B,CAAC;gBAEF,IAAI,CAAC;oBACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC7B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAC9C;wBACI,KAAK;wBACL,QAAQ;wBACR,MAAM;wBACN,MAAM;wBACN,KAAK,EAAE,aAAa,CAAC,cAAc;wBACnC,YAAY,EACR,aAAa,CAAC,YAAY,IAAI,kBAAkB;4BAC5C,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,YAAY,CAAC;4BAChD,CAAC,CAAC,SAAS;wBACnB,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC;4BAC1C,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;4BACjC,CAAC,CAAC,SAAS;wBACf,gBAAgB,EACZ,aAAa,CAAC,eAAe,KAAK,UAAU;4BACxC,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,aAAa,CAAC,eAAe;wBACvC,OAAO,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;4BACrC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI;4BACtC,CAAC,CAAC,SAAS;wBACf,QAAQ,EAAE,OAAO;qBACpB,EACD,EAAC,MAAM,EAAC,CACX,CAAC;oBAEF,IAAI,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACjC,QAAQ,CACJ,cAAc,CAAC;4BACX,IAAI,EAAE,UAAU;4BAChB,KAAK,EAAE,QAAQ;4BACf,SAAS,EAAE,KAAK;4BAChB,OAAO;yBACV,CAAC,CACL,CAAC;wBACF,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;oBAC7B,CAAC;oBAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;oBACxC,IAAI,CAAC,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,0CAAE,OAAO,CAAC;oBAExC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC3B,MAAM,UAAU,GAAe,EAAE,CAAC;wBAClC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,MAAM,EAAC,UAAU,EAAE,UAAU,EAAE,CAAC,EAAC,YAAY,EAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;4BACrE,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;4BACnC,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC;wBACtC,CAAC;6BAAM,CAAC;4BACJ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BACvB,UAAU,CAAC,UAAU,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;4BACjD,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;wBAC7B,CAAC;wBAED,QAAQ,CAAC,oBAAoB,CAAC,EAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAC,CAAC,CAAC,CAAC;oBACjE,CAAC;oBAED,QAAQ,CACJ,cAAc,CAAC;wBACX,IAAI,EAAE,UAAU;wBAChB,IAAI;wBACJ,SAAS,EAAE,KAAK;wBAChB,OAAO;qBACV,CAAC,CACL,CAAC;oBACF,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;gBACxB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,QAAQ,CACJ,cAAc,CAAC;wBACX,IAAI,EAAE,UAAU;wBAChB,KAAK;wBACL,SAAS,EAAE,KAAK;wBAChB,OAAO;qBACV,CAAC,CACL,CAAC;oBACF,OAAO,EAAC,KAAK,EAAC,CAAC;gBACnB,CAAC;YACL,CAAC;SACJ,CAAC;KACL,CAAC;IACF,gBAAgB,EAAE,OAAO;CAC5B,CAAC,CAAC"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import type { PayloadAction } from '@reduxjs/toolkit';
|
2
|
+
import type { QueryResponseChunk, SessionChunk, StreamDataChunk } from '../../../types/store/streaming';
|
3
|
+
import type { QueryState } from './types';
|
4
|
+
export declare const setStreamSession: (state: QueryState, action: PayloadAction<SessionChunk>) => void;
|
5
|
+
export declare const setStreamQueryResponse: (state: QueryState, action: PayloadAction<QueryResponseChunk>) => void;
|
6
|
+
export declare const addStreamingChunks: (state: QueryState, action: PayloadAction<StreamDataChunk[]>) => void;
|
@@ -0,0 +1,118 @@
|
|
1
|
+
import { parseResult } from '../../../utils/query';
|
2
|
+
import { preparePlanData } from './preparePlanData';
|
3
|
+
import { prepareQueryData } from './prepareQueryData';
|
4
|
+
export const setStreamSession = (state, action) => {
|
5
|
+
if (!state.result) {
|
6
|
+
return;
|
7
|
+
}
|
8
|
+
if (!state.result.data) {
|
9
|
+
state.result.data = prepareQueryData(null);
|
10
|
+
}
|
11
|
+
const chunk = action.payload;
|
12
|
+
state.result.isLoading = true;
|
13
|
+
state.result.queryId = chunk.meta.query_id;
|
14
|
+
state.result.data.traceId = chunk.meta.trace_id;
|
15
|
+
};
|
16
|
+
export const setStreamQueryResponse = (state, action) => {
|
17
|
+
if (!state.result) {
|
18
|
+
return;
|
19
|
+
}
|
20
|
+
if (!state.result.data) {
|
21
|
+
state.result.data = prepareQueryData(null);
|
22
|
+
}
|
23
|
+
state.result.isLoading = false;
|
24
|
+
const chunk = action.payload;
|
25
|
+
if ('error' in chunk) {
|
26
|
+
state.result.error = chunk;
|
27
|
+
}
|
28
|
+
else if ('plan' in chunk) {
|
29
|
+
if (!state.result.data) {
|
30
|
+
state.result.data = prepareQueryData(null);
|
31
|
+
}
|
32
|
+
const { plan: rawPlan, stats } = chunk;
|
33
|
+
const { simplifiedPlan, ...planData } = preparePlanData(rawPlan, stats);
|
34
|
+
state.result.data.preparedPlan = Object.keys(planData).length > 0 ? planData : undefined;
|
35
|
+
state.result.data.simplifiedPlan = simplifiedPlan;
|
36
|
+
state.result.data.plan = chunk.plan;
|
37
|
+
state.result.data.stats = chunk.stats;
|
38
|
+
}
|
39
|
+
};
|
40
|
+
const updateStreamMetrics = (metrics, totalNewRows) => {
|
41
|
+
const currentTime = Date.now();
|
42
|
+
const WINDOW_SIZE = 5000; // 5 seconds in milliseconds
|
43
|
+
metrics.recentChunks.push({ timestamp: currentTime, rowCount: totalNewRows });
|
44
|
+
metrics.recentChunks = metrics.recentChunks.filter((chunk) => currentTime - chunk.timestamp <= WINDOW_SIZE);
|
45
|
+
if (metrics.recentChunks.length > 0) {
|
46
|
+
const oldestChunkTime = metrics.recentChunks[0].timestamp;
|
47
|
+
const timeWindow = (currentTime - oldestChunkTime) / 1000;
|
48
|
+
const totalRows = metrics.recentChunks.reduce((sum, chunk) => sum + chunk.rowCount, 0);
|
49
|
+
metrics.rowsPerSecond = timeWindow > 0 ? totalRows / timeWindow : 0;
|
50
|
+
}
|
51
|
+
metrics.lastUpdateTime = currentTime;
|
52
|
+
};
|
53
|
+
const getEmptyResultSet = () => {
|
54
|
+
return {
|
55
|
+
columns: [],
|
56
|
+
result: [],
|
57
|
+
truncated: false,
|
58
|
+
streamMetrics: {
|
59
|
+
rowsPerSecond: 0,
|
60
|
+
lastUpdateTime: Date.now(),
|
61
|
+
recentChunks: [],
|
62
|
+
},
|
63
|
+
};
|
64
|
+
};
|
65
|
+
export const addStreamingChunks = (state, action) => {
|
66
|
+
var _a;
|
67
|
+
if (!state.result) {
|
68
|
+
return;
|
69
|
+
}
|
70
|
+
state.result.data = state.result.data || prepareQueryData(null);
|
71
|
+
state.result.data.resultSets = state.result.data.resultSets || [];
|
72
|
+
// Merge chunks by result index
|
73
|
+
const mergedChunks = action.payload.reduce((acc, chunk) => {
|
74
|
+
var _a;
|
75
|
+
const resultIndex = chunk.meta.result_index;
|
76
|
+
const currentMergedChunk = acc.get(resultIndex);
|
77
|
+
if (currentMergedChunk) {
|
78
|
+
(_a = currentMergedChunk.result.rows) === null || _a === void 0 ? void 0 : _a.push(...(chunk.result.rows || []));
|
79
|
+
currentMergedChunk.result.truncated =
|
80
|
+
currentMergedChunk.result.truncated || chunk.result.truncated;
|
81
|
+
}
|
82
|
+
else {
|
83
|
+
acc.set(resultIndex, {
|
84
|
+
...chunk,
|
85
|
+
result: {
|
86
|
+
...chunk.result,
|
87
|
+
rows: chunk.result.rows || [],
|
88
|
+
truncated: chunk.result.truncated,
|
89
|
+
},
|
90
|
+
});
|
91
|
+
}
|
92
|
+
return acc;
|
93
|
+
}, new Map());
|
94
|
+
const totalNewRows = action.payload.reduce((sum, chunk) => { var _a; return sum + (((_a = chunk.result.rows) === null || _a === void 0 ? void 0 : _a.length) || 0); }, 0);
|
95
|
+
// Process merged chunks
|
96
|
+
for (const [resultIndex, chunk] of mergedChunks.entries()) {
|
97
|
+
const { columns, rows } = chunk.result;
|
98
|
+
const resultSets = state.result.data.resultSets;
|
99
|
+
if (!resultSets[resultIndex]) {
|
100
|
+
resultSets[resultIndex] = getEmptyResultSet();
|
101
|
+
}
|
102
|
+
const resultSet = resultSets[resultIndex];
|
103
|
+
if (columns && !((_a = resultSet.columns) === null || _a === void 0 ? void 0 : _a.length)) {
|
104
|
+
resultSet.columns = columns;
|
105
|
+
}
|
106
|
+
const safeRows = rows || [];
|
107
|
+
const formattedRows = parseResult(safeRows, resultSet.columns || []);
|
108
|
+
formattedRows.forEach((row) => {
|
109
|
+
var _a;
|
110
|
+
(_a = resultSet.result) === null || _a === void 0 ? void 0 : _a.push(row);
|
111
|
+
});
|
112
|
+
resultSet.truncated = chunk.result.truncated;
|
113
|
+
if (resultSet.streamMetrics) {
|
114
|
+
updateStreamMetrics(resultSet.streamMetrics, totalNewRows);
|
115
|
+
}
|
116
|
+
}
|
117
|
+
};
|
118
|
+
//# sourceMappingURL=streamingReducers.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"streamingReducers.js","sourceRoot":"","sources":["../../../../src/store/reducers/query/streamingReducers.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,11 @@
|
|
1
1
|
import type { QueryAction, QueryMode, QuerySyntax } from '../../../types/store/query';
|
2
|
+
import type { QueryResponseChunk, SessionChunk, StreamDataChunk, StreamingChunk } from '../../../types/store/streaming';
|
2
3
|
import type { QueryInHistory } from './types';
|
3
4
|
export declare function getActionAndSyntaxFromQueryMode(baseAction?: QueryAction, queryMode?: QueryMode): {
|
4
5
|
action: "execute" | "explain" | "execute-scan" | "execute-script" | "execute-data" | "execute-query" | "explain-scan" | "explain-script" | "explain-data" | "explain-query";
|
5
6
|
syntax: QuerySyntax;
|
6
7
|
};
|
7
8
|
export declare function getQueryInHistory(rawQuery: string | QueryInHistory): QueryInHistory;
|
9
|
+
export declare function isSessionChunk(content: StreamingChunk): content is SessionChunk;
|
10
|
+
export declare function isStreamDataChunk(content: StreamingChunk): content is StreamDataChunk;
|
11
|
+
export declare function isQueryResponseChunk(content: StreamingChunk): content is QueryResponseChunk;
|
@@ -18,4 +18,16 @@ export function getQueryInHistory(rawQuery) {
|
|
18
18
|
}
|
19
19
|
return rawQuery;
|
20
20
|
}
|
21
|
+
export function isSessionChunk(content) {
|
22
|
+
var _a;
|
23
|
+
return ((_a = content === null || content === void 0 ? void 0 : content.meta) === null || _a === void 0 ? void 0 : _a.event) === 'SessionCreated';
|
24
|
+
}
|
25
|
+
export function isStreamDataChunk(content) {
|
26
|
+
var _a;
|
27
|
+
return ((_a = content === null || content === void 0 ? void 0 : content.meta) === null || _a === void 0 ? void 0 : _a.event) === 'StreamData';
|
28
|
+
}
|
29
|
+
export function isQueryResponseChunk(content) {
|
30
|
+
var _a;
|
31
|
+
return ((_a = content === null || content === void 0 ? void 0 : content.meta) === null || _a === void 0 ? void 0 : _a.event) === 'QueryResponse';
|
32
|
+
}
|
21
33
|
//# sourceMappingURL=utils.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/store/reducers/query/utils.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/store/reducers/query/utils.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,+BAA+B,CAC3C,aAA0B,SAAS,EACnC,YAAuB,OAAO;IAE9B,IAAI,MAAM,GAAY,UAAU,CAAC;IACjC,IAAI,MAAM,GAAgB,QAAQ,CAAC;IAEnC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,UAAU,QAAQ,CAAC;QAC/B,MAAM,GAAG,IAAI,CAAC;IAClB,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,UAAU,IAAI,SAAS,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAiC;IAC/D,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO;YACH,SAAS,EAAE,QAAQ;SACtB,CAAC;IACN,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAuB;;IAClD,OAAO,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,KAAK,MAAK,gBAAgB,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAuB;;IACrD,OAAO,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,KAAK,MAAK,YAAY,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAuB;;IACxD,OAAO,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,KAAK,MAAK,eAAe,CAAC;AACpD,CAAC"}
|
@@ -18,7 +18,7 @@ export interface AdditionalTenantsProps {
|
|
18
18
|
getMonitoringLink?: (name?: string, type?: ETenantType) => string | null;
|
19
19
|
}
|
20
20
|
export type NodeAddress = Pick<TSystemStateInfo, 'Host' | 'Endpoints' | 'NodeId'>;
|
21
|
-
export type GetNodeRefFunc = (node?: NodeAddress) => string |
|
21
|
+
export type GetNodeRefFunc = (node?: NodeAddress) => string | undefined;
|
22
22
|
export interface AdditionalNodesProps extends Record<string, unknown> {
|
23
23
|
getNodeRef?: GetNodeRefFunc;
|
24
24
|
}
|
@@ -3,5 +3,9 @@
|
|
3
3
|
*/
|
4
4
|
export interface CapabilitiesResponse {
|
5
5
|
Capabilities: Record<Partial<Capability>, number>;
|
6
|
+
Settings?: {
|
7
|
+
Security?: Record<Partial<SecuritySetting>, boolean>;
|
8
|
+
};
|
6
9
|
}
|
7
10
|
export type Capability = '/pdisk/info' | '/scheme/directory' | '/storage/groups' | '/viewer/query' | '/viewer/feature_flags' | '/viewer/cluster' | '/viewer/nodes';
|
11
|
+
export type SecuritySetting = 'UseLoginProvider' | 'DomainLoginOnly';
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { StatisticsMode } from '../store/query';
|
1
|
+
import type { QuerySyntax, StatisticsMode, TransactionMode } from '../store/query';
|
2
2
|
interface Position {
|
3
3
|
row?: number;
|
4
4
|
column?: number;
|
@@ -240,6 +240,22 @@ export type GenericExecuteResponse<Action extends ExecuteActions> = Action exten
|
|
240
240
|
export type CancelResponse = {
|
241
241
|
stats?: TKqpStatsQuery;
|
242
242
|
};
|
243
|
+
export interface SendQueryParams<Action extends Actions> {
|
244
|
+
query?: string;
|
245
|
+
database?: string;
|
246
|
+
action?: Action;
|
247
|
+
syntax?: QuerySyntax;
|
248
|
+
stats?: Stats;
|
249
|
+
tracingLevel?: TracingLevel;
|
250
|
+
transaction_mode?: TransactionMode;
|
251
|
+
timeout?: Timeout;
|
252
|
+
query_id?: string;
|
253
|
+
limit_rows?: number;
|
254
|
+
}
|
255
|
+
export interface StreamQueryParams<Action extends Actions> extends SendQueryParams<Action> {
|
256
|
+
output_chunk_max_size?: number;
|
257
|
+
concurrent_results?: boolean;
|
258
|
+
}
|
243
259
|
export type QueryAPIResponseByAction<Action extends Actions> = Action extends ExplainActions ? GenericExplainResponse<Action> : Action extends ExecuteActions ? GenericExecuteResponse<Action> : Action extends CancelActions ? CancelResponse : never;
|
244
260
|
type QueryAPIResponseMeta = {
|
245
261
|
_meta?: {
|
@@ -3,10 +3,19 @@ import type { QUERY_ACTIONS, QUERY_MODES, QUERY_SYNTAX, STATISTICS_MODES, TRACIN
|
|
3
3
|
import type { IResponseError, NetworkError } from '../api/error';
|
4
4
|
import type { ColumnType, KeyValueRow, ErrorResponse as QueryErrorResponseData, QueryPlan, ScriptPlan, TKqpStatsQuery } from '../api/query';
|
5
5
|
import type { ValueOf } from '../common';
|
6
|
+
export interface StreamMetrics {
|
7
|
+
rowsPerSecond: number;
|
8
|
+
lastUpdateTime: number;
|
9
|
+
recentChunks: Array<{
|
10
|
+
timestamp: number;
|
11
|
+
rowCount: number;
|
12
|
+
}>;
|
13
|
+
}
|
6
14
|
export interface ParsedResultSet {
|
7
15
|
columns?: ColumnType[];
|
8
16
|
result?: KeyValueRow[];
|
9
17
|
truncated?: boolean;
|
18
|
+
streamMetrics?: StreamMetrics;
|
10
19
|
}
|
11
20
|
export interface IQueryResult {
|
12
21
|
resultSets?: ParsedResultSet[];
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import type { ArrayRow, ColumnType, ErrorResponse, QueryPlan, ScriptPlan, TKqpStatsQuery } from '../api/query';
|
2
|
+
export interface SessionChunk {
|
3
|
+
meta: {
|
4
|
+
event: 'SessionCreated';
|
5
|
+
node_id: number;
|
6
|
+
query_id: string;
|
7
|
+
session_id: string;
|
8
|
+
trace_id?: string;
|
9
|
+
};
|
10
|
+
}
|
11
|
+
export interface StreamDataChunk {
|
12
|
+
meta: {
|
13
|
+
event: 'StreamData';
|
14
|
+
seq_no: number;
|
15
|
+
result_index: number;
|
16
|
+
};
|
17
|
+
result: {
|
18
|
+
columns?: ColumnType[];
|
19
|
+
rows: ArrayRow[] | null;
|
20
|
+
truncated?: boolean;
|
21
|
+
};
|
22
|
+
}
|
23
|
+
export interface SuccessQueryResponseData {
|
24
|
+
stats?: TKqpStatsQuery;
|
25
|
+
plan?: ScriptPlan | QueryPlan;
|
26
|
+
ast?: string;
|
27
|
+
}
|
28
|
+
export type ErrorQueryResponseData = ErrorResponse;
|
29
|
+
export interface BaseQueryResponseChunk {
|
30
|
+
meta: {
|
31
|
+
event: 'QueryResponse';
|
32
|
+
version: string;
|
33
|
+
type: string;
|
34
|
+
};
|
35
|
+
}
|
36
|
+
export type QueryResponseChunk = BaseQueryResponseChunk & (SuccessQueryResponseData | ErrorQueryResponseData);
|
37
|
+
export type StreamingChunk = SessionChunk | StreamDataChunk | QueryResponseChunk;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../../src/types/store/streaming.ts"],"names":[],"mappings":""}
|
@@ -1,72 +1,72 @@
|
|
1
1
|
import { HEADER_PADDING, MAX_COLUMN_WIDTH, PIXELS_PER_CHARACTER, SORT_ICON_TO_CHARACTERS, getColumnWidth, } from '../getColumnWidth';
|
2
2
|
describe('getColumnWidth', () => {
|
3
|
-
|
3
|
+
test('returns minimum width for empty data', () => {
|
4
4
|
const result = getColumnWidth({ data: [], name: 'test' });
|
5
5
|
expect(result).toBe(HEADER_PADDING + 'test'.length * PIXELS_PER_CHARACTER);
|
6
6
|
});
|
7
|
-
|
7
|
+
test('calculates correct width for string columns', () => {
|
8
8
|
const data = [{ test: 'short' }, { test: 'medium length' }, { test: 'this is a longer string' }];
|
9
9
|
const result = getColumnWidth({ data, name: 'test' });
|
10
10
|
expect(result).toBe(HEADER_PADDING + 'this is a longer string'.length * PIXELS_PER_CHARACTER);
|
11
11
|
});
|
12
|
-
|
12
|
+
test('calculates correct width for columns with sorting', () => {
|
13
13
|
const result = getColumnWidth({ data: [], name: 'test', sortable: true });
|
14
14
|
expect(result).toBe(HEADER_PADDING + ('test'.length + SORT_ICON_TO_CHARACTERS) * PIXELS_PER_CHARACTER);
|
15
15
|
});
|
16
|
-
|
16
|
+
test('calculates correct width for columns with sorting and column name wider than header', () => {
|
17
17
|
const data = [{ test: 'this is a longer string' }];
|
18
18
|
const result = getColumnWidth({ data, name: 'test', sortable: true });
|
19
19
|
expect(result).toBe(HEADER_PADDING + 'this is a longer string'.length * PIXELS_PER_CHARACTER);
|
20
20
|
});
|
21
|
-
|
21
|
+
test('calculates correct width for columns with header', () => {
|
22
22
|
const result = getColumnWidth({ data: [], name: 'test', header: 'a' });
|
23
23
|
expect(result).toBe(HEADER_PADDING + 'a'.length * PIXELS_PER_CHARACTER);
|
24
24
|
});
|
25
|
-
|
25
|
+
test('returns MAX_COLUMN_WIDTH when calculated width exceeds it', () => {
|
26
26
|
const data = [{ test: 'a'.repeat(100) }];
|
27
27
|
const result = getColumnWidth({ data, name: 'test' });
|
28
28
|
expect(result).toBe(MAX_COLUMN_WIDTH);
|
29
29
|
});
|
30
|
-
|
30
|
+
test('handles undefined data correctly', () => {
|
31
31
|
const result = getColumnWidth({ name: 'test' });
|
32
32
|
expect(result).toBe(HEADER_PADDING + 'test'.length * PIXELS_PER_CHARACTER);
|
33
33
|
});
|
34
|
-
|
34
|
+
test('handles missing values in data correctly', () => {
|
35
35
|
const data = [{ test: 'short' }, {}, { test: 'longer string' }];
|
36
36
|
const result = getColumnWidth({ data, name: 'test' });
|
37
37
|
expect(result).toBe(HEADER_PADDING + 'longer string'.length * PIXELS_PER_CHARACTER);
|
38
38
|
});
|
39
|
-
|
39
|
+
test('uses column name length when all values are shorter', () => {
|
40
40
|
const data = [{ longColumnName: 'a' }, { longColumnName: 'bb' }];
|
41
41
|
const result = getColumnWidth({ data, name: 'longColumnName' });
|
42
42
|
expect(result).toBe(HEADER_PADDING + 'longColumnName'.length * PIXELS_PER_CHARACTER);
|
43
43
|
});
|
44
|
-
|
44
|
+
test('handles null values in data correctly', () => {
|
45
45
|
const data = [{ test: 'a' }, { test: null }];
|
46
46
|
const result = getColumnWidth({ data, name: 'test' });
|
47
47
|
expect(result).toBe(HEADER_PADDING + 'test'.length * PIXELS_PER_CHARACTER);
|
48
48
|
});
|
49
|
-
|
49
|
+
test('handles undefined values in data correctly', () => {
|
50
50
|
const data = [{ test: 'a' }, { test: undefined }];
|
51
51
|
const result = getColumnWidth({ data, name: 'test' });
|
52
52
|
expect(result).toBe(HEADER_PADDING + 'test'.length * PIXELS_PER_CHARACTER);
|
53
53
|
});
|
54
|
-
|
54
|
+
test('handles empty string values in data correctly', () => {
|
55
55
|
const data = [{ test: 'short' }, { test: '' }, { test: 'longer string' }];
|
56
56
|
const result = getColumnWidth({ data, name: 'test' });
|
57
57
|
expect(result).toBe(HEADER_PADDING + 'longer string'.length * PIXELS_PER_CHARACTER);
|
58
58
|
});
|
59
|
-
|
59
|
+
test('handles an array of numbers correctly', () => {
|
60
60
|
const data = [{ test: 1 }, { test: 123 }, { test: 12345 }];
|
61
61
|
const result = getColumnWidth({ data, name: 'test' });
|
62
62
|
expect(result).toBe(HEADER_PADDING + '12345'.length * PIXELS_PER_CHARACTER);
|
63
63
|
});
|
64
|
-
|
64
|
+
test('handles an array of mixed data types correctly', () => {
|
65
65
|
const data = [{ test: 'short' }, { test: 123 }, { test: null }, { test: 'longer string' }];
|
66
66
|
const result = getColumnWidth({ data, name: 'test' });
|
67
67
|
expect(result).toBe(HEADER_PADDING + 'longer string'.length * PIXELS_PER_CHARACTER);
|
68
68
|
});
|
69
|
-
|
69
|
+
test('handles empty name correctly', () => {
|
70
70
|
const data = [{ test: 'test' }];
|
71
71
|
const result = getColumnWidth({ data, name: '' });
|
72
72
|
expect(result).toBe(HEADER_PADDING);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getColumnWidth.test.js","sourceRoot":"","sources":["../../../src/utils/__test__/getColumnWidth.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,GACjB,MAAM,mBAAmB,CAAC;AAE3B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,
|
1
|
+
{"version":3,"file":"getColumnWidth.test.js","sourceRoot":"","sources":["../../../src/utils/__test__/getColumnWidth.test.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { getMonitoringClusterLink, getMonitoringLink } from '../monitoring';
|
2
2
|
describe('getMonitoringLink', () => {
|
3
|
-
|
3
|
+
test('should create database monitoring link from JSON', () => {
|
4
4
|
const solomonRaw = {
|
5
5
|
monitoring_url: 'https://monitoring.test.ai/projects/yc.ydb.ydbaas-cloud/dashboards',
|
6
6
|
serverless_dashboard: '',
|
@@ -14,7 +14,7 @@ describe('getMonitoringLink', () => {
|
|
14
14
|
dbType: 'Dedicated',
|
15
15
|
})).toBe('https://monitoring.test.ai/projects/yc.ydb.ydbaas-cloud/dashboards/aol34hftdn7o4fls50sv?p.cluster=global&p.host=cluster&p.slot=static&p.database=database');
|
16
16
|
});
|
17
|
-
|
17
|
+
test('should create cluster monitoring link from JSON', () => {
|
18
18
|
const solomonRaw = {
|
19
19
|
monitoring_url: 'https://monitoring.test.ai/projects/yc.ydb.ydbaas-cloud/dashboards',
|
20
20
|
cluster_dashboard: 'aol34hftdn7o4fls50sv',
|
@@ -22,7 +22,7 @@ describe('getMonitoringLink', () => {
|
|
22
22
|
const solomonString = JSON.stringify(solomonRaw);
|
23
23
|
expect(getMonitoringClusterLink(solomonString, 'clusterName')).toBe('https://monitoring.test.ai/projects/yc.ydb.ydbaas-cloud/dashboards/aol34hftdn7o4fls50sv/view?p.cluster=clusterName&p.database=-');
|
24
24
|
});
|
25
|
-
|
25
|
+
test('should not parse ready to use database monitoring link', () => {
|
26
26
|
const solomonRaw = {
|
27
27
|
monitoring_url: 'https://monitoring.test.ai/projects/ydbaas/dashboards/aol34hftdn7o4fls50sv?p.cluster=cluster_name&a=',
|
28
28
|
};
|
@@ -33,7 +33,7 @@ describe('getMonitoringLink', () => {
|
|
33
33
|
dbType: 'Dedicated',
|
34
34
|
})).toBe('https://monitoring.test.ai/projects/ydbaas/dashboards/aol34hftdn7o4fls50sv?p.cluster=cluster_name&a=&p.host=cluster&p.slot=static&p.database=database');
|
35
35
|
});
|
36
|
-
|
36
|
+
test('should not parse ready to use cluster monitoring link', () => {
|
37
37
|
const solomonRaw = {
|
38
38
|
monitoring_url: 'https://monitoring.test.ai/projects/ydbaas/dashboards/aol34hftdn7o4fls50sv/view?p.cluster=cluster_name&a=',
|
39
39
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"monitoring.test.js","sourceRoot":"","sources":["../../../src/utils/__test__/monitoring.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAE1E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,
|
1
|
+
{"version":3,"file":"monitoring.test.js","sourceRoot":"","sources":["../../../src/utils/__test__/monitoring.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAE1E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,UAAU,GAAG;YACf,cAAc,EAAE,oEAAoE;YACpF,oBAAoB,EAAE,EAAE;YACxB,mBAAmB,EAAE,sBAAsB;SAC9C,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,CACF,iBAAiB,CAAC;YACd,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,QAAQ;YACrB,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,WAAW;SACtB,CAAC,CACL,CAAC,IAAI,CACF,2JAA2J,CAC9J,CAAC;IACN,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,UAAU,GAAG;YACf,cAAc,EAAE,oEAAoE;YACpF,iBAAiB,EAAE,sBAAsB;SAC5C,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,CAAC,wBAAwB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAC/D,iIAAiI,CACpI,CAAC;IACN,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,UAAU,GAAG;YACf,cAAc,EACV,sGAAsG;SAC7G,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,CACF,iBAAiB,CAAC;YACd,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,WAAW;SACtB,CAAC,CACL,CAAC,IAAI,CACF,uJAAuJ,CAC1J,CAAC;IACN,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,UAAU,GAAG;YACf,cAAc,EACV,2GAA2G;SAClH,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAChD,wHAAwH,CAC3H,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|