Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ktmud committed Jul 15, 2021
1 parent ddee3e9 commit e3ccef1
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 9 deletions.
43 changes: 37 additions & 6 deletions superset-frontend/src/dashboard/actions/datasources.ts
Expand Up @@ -16,22 +16,53 @@
* specific language governing permissions and limitations
* under the License.
*/

import { Datasource } from 'src/dashboard/types';
import { Dispatch } from 'redux';
import { SupersetClient } from '@superset-ui/core';
import { Datasource, RootState } from 'src/dashboard/types';

// update datasources index for Dashboard
export enum DatasourcesAction {
SET_DATASOURCES = 'SET_DATASOURCES',
SET_DATASOURCE = 'SET_DATASOURCE',
}

export type DatasourcesActionPayload = {
type: DatasourcesAction.SET_DATASOURCES;
datasources: Datasource[] | null;
};
export type DatasourcesActionPayload =
| {
type: DatasourcesAction.SET_DATASOURCES;
datasources: Datasource[] | null;
}
| {
type: DatasourcesAction.SET_DATASOURCE;
key: Datasource['uid'];
datasource: Datasource;
};

export function setDatasources(datasources: Datasource[] | null) {
return {
type: DatasourcesAction.SET_DATASOURCES,
datasources,
};
}

export function setDatasource(datasource: Datasource, key: string) {
return {
type: DatasourcesAction.SET_DATASOURCES,
key,
datasource,
};
}

export function fetchDatasourceMetadata(key: string) {
return (dispatch: Dispatch, getState: () => RootState) => {
const { datasources } = getState();
const datasource = datasources[key];

if (datasource) {
return dispatch(setDatasource(datasource, key));
}

return SupersetClient.get({
endpoint: `/superset/fetch_datasource_metadata?datasourceKey=${key}`,
}).then(({ json }) => dispatch(setDatasource(json as Datasource, key)));
};
}
12 changes: 9 additions & 3 deletions superset-frontend/src/dashboard/reducers/datasources.ts
Expand Up @@ -24,14 +24,20 @@ import {
} from '../actions/datasources';

export default function datasourcesReducer(
state: DatasourcesState | undefined,
datasources: DatasourcesState | undefined,
action: DatasourcesActionPayload,
) {
if (action.type === DatasourcesAction.SET_DATASOURCES) {
return {
...state,
...datasources,
...keyBy(action.datasources, 'uid'),
};
}
return state || {};
if (action.type === DatasourcesAction.SET_DATASOURCE) {
return {
...datasources,
[action.key]: action.datasource,
};
}
return datasources || {};
}
2 changes: 2 additions & 0 deletions superset-frontend/src/dashboard/types.ts
Expand Up @@ -75,7 +75,9 @@ export type DashboardInfo = {
};

export type ChartsState = { [key: string]: Chart };

export type Datasource = DatasourceMeta & {
uid: string;
column_types: GenericDataType[];
table_name: string;
};
Expand Down

0 comments on commit e3ccef1

Please sign in to comment.