@@ -2,20 +2,25 @@ import ConflictingEntityError from '@js-entity-repos/core/dist/errors/Conflictin
22import MissingEntityError from '@js-entity-repos/core/dist/errors/MissingEntityError' ;
33import Entity from '@js-entity-repos/core/dist/types/Entity' ;
44import Filter from '@js-entity-repos/core/dist/types/Filter' ;
5- import Config from '../Config' ;
65import filterEntities from './filterEntities' ;
76
8- export default < E extends Entity > ( config : Config < E > , id : string , filter : Filter < E > ) => {
9- const storedEntities = config . getEntities ( ) ;
7+ export interface Opts < E extends Entity > {
8+ readonly entities : E [ ] ;
9+ readonly entityName : string ;
10+ readonly id : string ;
11+ readonly filter : Filter < E > ;
12+ }
13+
14+ export default < E extends Entity > ( { entities, entityName, id, filter } : Opts < E > ) => {
1015 const idFilter = { id } as Filter < E > ;
1116 const fullFilter = { $and : [ idFilter , filter ] } ;
12- const matchedEntities = filterEntities ( storedEntities , fullFilter ) ;
17+ const matchedEntities = filterEntities ( { entities , filter : fullFilter } ) ;
1318 if ( matchedEntities . length === 0 ) {
14- throw new MissingEntityError ( config . entityName , id ) ;
19+ throw new MissingEntityError ( entityName , id ) ;
1520 }
1621 /* istanbul ignore next */
1722 if ( matchedEntities . length > 1 ) {
18- throw new ConflictingEntityError ( config . entityName , id ) ;
23+ throw new ConflictingEntityError ( entityName , id ) ;
1924 }
2025 return matchedEntities [ 0 ] ;
2126} ;
0 commit comments