kafka-ui/kafka-ui-react-app/src/redux/reducers/ksqlDb/selectors.ts
Robert Azizbekyan 0528c3a28f
Separating ksqlDb tables and streams by tabs (#2145)
* separating ksqlDb tables and streams by tabs

* adding tests
2022-06-16 13:57:27 +04:00

33 lines
1.2 KiB
TypeScript

import { createSelector } from '@reduxjs/toolkit';
import { RootState } from 'redux/interfaces';
import { createFetchingSelector } from 'redux/reducers/loader/selectors';
import { KsqlState } from 'redux/interfaces/ksqlDb';
import { AsyncRequestStatus } from 'lib/constants';
const ksqlDbState = ({ ksqlDb }: RootState): KsqlState => ksqlDb;
const getKsqlDbFetchTablesAndStreamsFetchingStatus = createFetchingSelector(
'ksqlDb/fetchKsqlDbTables'
);
const getKsqlExecutionStatus = createFetchingSelector('ksqlDb/executeKsql');
export const getKsqlDbTables = createSelector(
[ksqlDbState, getKsqlDbFetchTablesAndStreamsFetchingStatus],
(state, status) => ({
rows: { streams: [...state.streams], tables: [...state.tables] },
fetched: status === AsyncRequestStatus.fulfilled,
fetching: status === AsyncRequestStatus.pending,
tablesCount: state.tables.length,
streamsCount: state.streams.length,
})
);
export const getKsqlExecution = createSelector(
[ksqlDbState, getKsqlExecutionStatus],
(state, status) => ({
executionResult: state.executionResult,
fetched: status === AsyncRequestStatus.fulfilled,
fetching: status === AsyncRequestStatus.pending,
})
);