PromucFlow_constructor/app/client/src/reducers/entityReducers/datasourceReducer.ts

142 lines
3.5 KiB
TypeScript
Raw Normal View History

2019-11-25 05:07:27 +00:00
import { createReducer } from "utils/AppsmithUtils";
2020-01-27 13:53:33 +00:00
import {
ReduxActionTypes,
ReduxAction,
ReduxActionErrorTypes,
} from "constants/ReduxActionConstants";
2019-11-25 05:07:27 +00:00
import { Datasource } from "api/DatasourcesApi";
2019-11-07 09:32:38 +00:00
export interface DatasourceDataState {
list: Datasource[];
loading: boolean;
isTesting: boolean;
isDeleting: boolean;
}
2019-11-07 09:32:38 +00:00
const initialState: DatasourceDataState = {
list: [],
loading: false,
isTesting: false,
isDeleting: false,
};
2019-11-07 09:32:38 +00:00
const datasourceReducer = createReducer(initialState, {
[ReduxActionTypes.FETCH_DATASOURCES_INIT]: (state: DatasourceDataState) => {
return { ...state, loading: true };
},
2019-11-07 09:32:38 +00:00
[ReduxActionTypes.CREATE_DATASOURCE_INIT]: (state: DatasourceDataState) => {
return { ...state, loading: true };
},
[ReduxActionTypes.CREATE_DATASOURCE_FROM_FORM_INIT]: (
state: DatasourceDataState,
) => {
return { ...state, loading: true };
},
[ReduxActionTypes.UPDATE_DATASOURCE_INIT]: (state: DatasourceDataState) => {
return { ...state, loading: true };
},
[ReduxActionTypes.TEST_DATASOURCE_INIT]: (state: DatasourceDataState) => {
return { ...state, isTesting: true };
},
[ReduxActionTypes.DELETE_DATASOURCE_INIT]: (state: DatasourceDataState) => {
return { ...state, isDeleting: true };
},
2019-11-07 09:32:38 +00:00
[ReduxActionTypes.FETCH_DATASOURCES_SUCCESS]: (
state: DatasourceDataState,
action: ReduxAction<Datasource[]>,
) => {
return {
...state,
loading: false,
list: action.payload,
};
},
[ReduxActionTypes.TEST_DATASOURCE_SUCCESS]: (state: DatasourceDataState) => {
return {
...state,
isTesting: false,
};
},
[ReduxActionTypes.DELETE_DATASOURCE_SUCCESS]: (
state: DatasourceDataState,
action: ReduxAction<Datasource>,
) => {
return {
...state,
isDeleting: false,
list: state.list.filter(
datasource => datasource.id !== action.payload.id,
),
};
},
2019-11-07 09:32:38 +00:00
[ReduxActionTypes.CREATE_DATASOURCE_SUCCESS]: (
state: DatasourceDataState,
action: ReduxAction<Datasource>,
) => {
return {
...state,
loading: false,
list: state.list.concat(action.payload),
};
},
[ReduxActionTypes.UPDATE_DATASOURCE_SUCCESS]: (
state: DatasourceDataState,
action: ReduxAction<Datasource>,
): DatasourceDataState => {
return {
...state,
loading: false,
list: state.list.map(datasource => {
if (datasource.id === action.payload.id) return action.payload;
return datasource;
}),
};
},
2020-08-26 05:24:44 +00:00
[ReduxActionTypes.SAVE_DATASOURCE_NAME_SUCCESS]: (
state: DatasourceDataState,
action: ReduxAction<Datasource>,
): DatasourceDataState => {
return {
...state,
loading: false,
list: state.list.map(datasource => {
if (datasource.id === action.payload.id) return action.payload;
return datasource;
}),
};
},
2020-01-27 13:53:33 +00:00
[ReduxActionErrorTypes.CREATE_DATASOURCE_ERROR]: (
state: DatasourceDataState,
) => {
return {
...state,
loading: false,
};
},
[ReduxActionErrorTypes.DELETE_DATASOURCE_ERROR]: (
state: DatasourceDataState,
) => {
return { ...state, isDeleting: false };
},
[ReduxActionErrorTypes.TEST_DATASOURCE_ERROR]: (
state: DatasourceDataState,
) => {
return {
...state,
isTesting: false,
};
},
[ReduxActionErrorTypes.UPDATE_DATASOURCE_ERROR]: (
state: DatasourceDataState,
): DatasourceDataState => {
return {
...state,
loading: false,
};
},
});
2019-11-07 09:32:38 +00:00
export default datasourceReducer;