1+ import type { Reducer } from 'redux' ;
2+
13import '../../services/api' ;
4+ import type { IShardsWorkloadAction , IShardsWorkloadState } from '../../types/store/shardsWorkload' ;
25
36import { parseQueryAPIExecuteResponse } from '../../utils/query' ;
47
58import { createRequestActionTypes , createApiRequest } from '../utils' ;
69
7- const SEND_SHARD_QUERY = createRequestActionTypes ( 'query' , 'SEND_SHARD_QUERY' ) ;
10+ export const SEND_SHARD_QUERY = createRequestActionTypes ( 'query' , 'SEND_SHARD_QUERY' ) ;
811const SET_SHARD_QUERY_OPTIONS = 'query/SET_SHARD_QUERY_OPTIONS' ;
912
1013const initialState = {
1114 loading : false ,
1215 wasLoaded : false ,
1316} ;
1417
15- function formatSortOrder ( { columnId, order} ) {
18+ export interface SortOrder {
19+ columnId : string ;
20+ order : string ;
21+ }
22+
23+ function formatSortOrder ( { columnId, order} : SortOrder ) {
1624 return `${ columnId } ${ order } ` ;
1725}
1826
19- function createShardQuery ( path , sortOrder , tenantName ) {
20- const orderBy = Array . isArray ( sortOrder ) ?
21- `ORDER BY ${ sortOrder . map ( formatSortOrder ) . join ( ', ' ) } ` :
22- '' ;
27+ function createShardQuery ( path : string , sortOrder ?: SortOrder [ ] , tenantName ?: string ) {
28+ const orderBy = sortOrder ? `ORDER BY ${ sortOrder . map ( formatSortOrder ) . join ( ', ' ) } ` : '' ;
2329
24- const pathSelect = tenantName ?
25- `CAST(SUBSTRING(CAST(Path AS String), ${ tenantName . length } ) AS Utf8) AS Path` :
26- 'Path' ;
30+ const pathSelect = tenantName
31+ ? `CAST(SUBSTRING(CAST(Path AS String), ${ tenantName . length } ) AS Utf8) AS Path`
32+ : 'Path' ;
2733
2834 return `SELECT
2935 ${ pathSelect } ,
@@ -40,7 +46,10 @@ LIMIT 20`;
4046
4147const queryAction = 'execute-scan' ;
4248
43- const shardsWorkload = ( state = initialState , action ) => {
49+ const shardsWorkload : Reducer < IShardsWorkloadState , IShardsWorkloadAction > = (
50+ state = initialState ,
51+ action ,
52+ ) => {
4453 switch ( action . type ) {
4554 case SEND_SHARD_QUERY . REQUEST : {
4655 return {
@@ -76,7 +85,13 @@ const shardsWorkload = (state = initialState, action) => {
7685 }
7786} ;
7887
79- export const sendShardQuery = ( { database, path = '' , sortOrder} ) => {
88+ interface SendShardQueryParams {
89+ database ?: string ;
90+ path ?: string ;
91+ sortOrder ?: SortOrder [ ] ;
92+ }
93+
94+ export const sendShardQuery = ( { database, path = '' , sortOrder} : SendShardQueryParams ) => {
8095 return createApiRequest ( {
8196 request : window . api . sendQuery ( {
8297 schema : 'modern' ,
@@ -91,11 +106,11 @@ export const sendShardQuery = ({database, path = '', sortOrder}) => {
91106 } ) ;
92107} ;
93108
94- export function setShardQueryOptions ( options ) {
109+ export function setShardQueryOptions ( options : Partial < IShardsWorkloadState > ) {
95110 return {
96111 type : SET_SHARD_QUERY_OPTIONS ,
97112 data : options ,
98- } ;
113+ } as const ;
99114}
100115
101116export default shardsWorkload ;
0 commit comments