import { createDomainModule } from 'redux-with-domain' ; import { quertyDatasetList } from '../api/dataset' ; export interface Field { id : string ; name : string ; } export interface DatasetItem { id : string ; name : string ; type : string ; fields : Field [ ] ; } interface Entities { datasetList : DatasetItem ; } interface Effects { fetchDatasets : ( data : { payload : string [ ] ; } ) => any ; } export default createDomainModule < Entities , { } , Effects > ( 'domain/dataset' , { entities : { datasetList : 'id' } , selectors : { } , services : ( { entities , sagaEffects : { put , call } } ) => ( { * fetchDatasets ( { payload } ) { const datasets = yield call ( quertyDatasetList , payload ) ; entities . datasetList . insert ( datasets ) ; } } ) } ) ;