@@ -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