import { createDomainModule } from 'redux-with-domain' ; import { quertyReportChartInfo } from '../api/report' ; export interface Attr { max ? : number ; group : string ; fields : string [ ] ; fieldsName ? : string [ ] ; } export interface Chart { id : string ; reportId : string ; datasetId : string ; name : string ; attribute : Attr [ ] ; type : string ; } interface Entities { chart : Chart ; } const selectors = { } ; type Effects = { fetchCharts : ( data : { payload : string ; } ) => any ; } ; export default createDomainModule < Entities , typeof selectors , Effects > ( 'domain/chart' , { entities : { chart : 'id' } , selectors , services : ( { services , entities , sagaEffects : { call } } ) => ( { * fetchCharts ( { payload } ) { const charts = entities . chart . get ( payload ) ; if ( charts ) { return ; } const reportInfo = yield call ( quertyReportChartInfo , payload ) ; entities . chart . insert ( reportInfo ) ; } } ) } ) ;