@@ -14,27 +14,37 @@ import * as resolvers from './resolvers';
14
14
import { defaultEntities , getMethodName } from './entities' ;
15
15
import { REDUCER_KEY } from './name' ;
16
16
17
- const createEntityRecordSelector = ( source ) => defaultEntities . reduce ( ( result , entity ) => {
17
+ // The entity selectors/resolvers and actions are shortcuts to their generic equivalents
18
+ // (getEntityRecord, getEntityRecords, updateEntityRecord, updateEntityRecordss)
19
+ // Instead of getEntityRecord, the consumer could use more user-frieldly named selector: getPostType, getTaxonomy...
20
+ // The "kind" and the "name" of the entity are combined to generate these shortcuts.
21
+
22
+ const entitySelectors = defaultEntities . reduce ( ( result , entity ) => {
18
23
const { kind, name } = entity ;
19
- result [ getMethodName ( kind , name ) ] = ( state , key ) => source . getEntityRecord ( state , kind , name , key ) ;
20
- result [ getMethodName ( kind , name , 'get' , true ) ] = ( state , ...args ) => source . getEntityRecords ( state , kind , name , ...args ) ;
24
+ result [ getMethodName ( kind , name ) ] = ( state , key ) => selectors . getEntityRecord ( state , kind , name , key ) ;
25
+ result [ getMethodName ( kind , name , 'get' , true ) ] = ( state , ...args ) => selectors . getEntityRecords ( state , kind , name , ...args ) ;
21
26
return result ;
22
27
} , { } ) ;
23
28
24
- const createEntityRecordResolver = ( source ) => defaultEntities . reduce ( ( result , entity ) => {
29
+ const entityResolvers = defaultEntities . reduce ( ( result , entity ) => {
25
30
const { kind, name } = entity ;
26
- result [ getMethodName ( kind , name ) ] = ( key ) => source . getEntityRecord ( kind , name , key ) ;
27
- result [ getMethodName ( kind , name , 'get' , true ) ] = ( ...args ) => source . getEntityRecords ( kind , name , ...args ) ;
31
+ result [ getMethodName ( kind , name ) ] = ( key ) => resolvers . getEntityRecord ( kind , name , key ) ;
32
+ const pluralMethodName = getMethodName ( kind , name , 'get' , true ) ;
33
+ result [ pluralMethodName ] = ( ...args ) => resolvers . getEntityRecords ( kind , name , ...args ) ;
34
+ result [ pluralMethodName ] . shouldInvalidate = ( action , ...args ) => resolvers . getEntityRecords . shouldInvalidate ( action , kind , name , ...args ) ;
28
35
return result ;
29
36
} , { } ) ;
30
37
31
- const entityResolvers = createEntityRecordResolver ( resolvers ) ;
32
- const entitySelectors = createEntityRecordSelector ( selectors ) ;
38
+ const entityActions = defaultEntities . reduce ( ( result , entity ) => {
39
+ const { kind, name } = entity ;
40
+ result [ getMethodName ( kind , name , 'save' ) ] = ( key ) => actions . saveEntityRecord ( kind , name , key ) ;
41
+ return result ;
42
+ } , { } ) ;
33
43
34
44
const store = registerStore ( REDUCER_KEY , {
35
45
reducer,
36
- actions,
37
46
controls,
47
+ actions : { ...actions , ...entityActions } ,
38
48
selectors : { ...selectors , ...entitySelectors } ,
39
49
resolvers : { ...resolvers , ...entityResolvers } ,
40
50
} ) ;
0 commit comments