@@ -20,7 +20,7 @@ export class EntityService implements IAutoEntityService<any> {
2020 }
2121
2222 protected buildUrl ( operation : string , info : IEntityInfo , criteria ?: EntityCriteria , key ?: string | number ) {
23- return this . getUrlPrefix ( 'load' , info , criteria ) . pipe (
23+ return this . getUrlPrefix ( operation , info , criteria ) . pipe (
2424 first ( ) ,
2525 map ( prefix => buildUrl ( prefix , info , criteria , key ) )
2626 ) ;
@@ -48,25 +48,58 @@ export class EntityService implements IAutoEntityService<any> {
4848 return this . buildUrl ( 'create' , entityInfo , criteria ) . pipe ( switchMap ( url => this . http . post < any > ( url , entity ) ) ) ;
4949 }
5050
51+ createMany ( entityInfo : IEntityInfo , entities : any [ ] , criteria ?: any , originalEntities ?: any [ ] ) : Observable < any [ ] > {
52+ return this . buildUrl ( 'createMany' , entityInfo , criteria ) . pipe ( switchMap ( url => this . http . post < any > ( url , entities ) ) ) ;
53+ }
54+
5155 update ( entityInfo : IEntityInfo , entity : any , criteria ?: EntityCriteria , originalEntity ?: any ) : Observable < any > {
5256 return this . buildUrl ( 'update' , entityInfo , criteria , getKeyFromModel ( entityInfo . modelType , entity ) ) . pipe (
5357 switchMap ( url => this . http . patch < any > ( url , entity ) )
5458 ) ;
5559 }
5660
61+ updateMany ( entityInfo : IEntityInfo , entities : any [ ] , criteria ?: any , originalEntities ?: any [ ] ) : Observable < any [ ] > {
62+ return this . buildUrl ( 'updateMany' , entityInfo , criteria ) . pipe ( switchMap ( url => this . http . patch < any > ( url , entities ) ) ) ;
63+ }
64+
5765 replace ( entityInfo : IEntityInfo , entity : any , criteria ?: EntityCriteria , originalEntity ?: any ) : Observable < any > {
5866 return this . buildUrl ( 'replace' , entityInfo , criteria , getKeyFromModel ( entityInfo . modelType , entity ) ) . pipe (
5967 switchMap ( url => this . http . put < any > ( url , entity ) )
6068 ) ;
6169 }
6270
71+ replaceMany ( entityInfo : IEntityInfo , entities : any [ ] , criteria ?: any , originalEntities ?: any [ ] ) : Observable < any [ ] > {
72+ return this . buildUrl ( 'replaceMany' , entityInfo , criteria ) . pipe ( switchMap ( url => this . http . put < any > ( url , entities ) ) ) ;
73+ }
74+
6375 delete ( entityInfo : IEntityInfo , entity : any , criteria ?: EntityCriteria , originalEntity ?: any ) : Observable < any > {
6476 return this . buildUrl ( 'delete' , entityInfo , criteria , getKeyFromModel ( entityInfo . modelType , entity ) ) . pipe (
65- switchMap ( url => this . http . delete < any > ( url , entity ) . pipe ( map ( ( ) => entity ) ) )
77+ switchMap ( url =>
78+ this . http . delete < any > ( url , {
79+ body : entity
80+ } )
81+ ) ,
82+ map ( ( ) => entity )
83+ ) ;
84+ }
85+
86+ deleteMany ( entityInfo : IEntityInfo , entities : any [ ] , criteria ?: any , originalEntities ?: any [ ] ) : Observable < any [ ] > {
87+ return this . buildUrl ( 'deleteMany' , entityInfo , criteria ) . pipe (
88+ switchMap ( url => this . http . delete < any > ( url , { body : entities } ) ) ,
89+ map ( ( ) => entities )
6690 ) ;
6791 }
6892
6993 deleteByKey ( entityInfo : IEntityInfo , key : EntityIdentity , criteria ?: EntityCriteria ) : Observable < EntityIdentity > {
7094 return this . buildUrl ( 'deleteByKey' , entityInfo , criteria , key ) . pipe ( switchMap ( url => this . http . delete < any > ( url ) . pipe ( map ( ( ) => key ) ) ) ) ;
7195 }
96+
97+ deleteManyByKeys ( entityInfo : IEntityInfo , keys : EntityIdentity [ ] , criteria ?: any ) : Observable < any [ ] > {
98+ // TODO: Is this the best way to handle this case?
99+ // This seems like a somewhat odd REST API pattern.
100+ return this . buildUrl ( 'deleteManyByKeys' , entityInfo , criteria ) . pipe (
101+ switchMap ( url => this . http . delete < any > ( url , { body : { keys } } ) ) ,
102+ map ( ( ) => keys )
103+ ) ;
104+ }
72105}
0 commit comments