before read in generic ds.
This commit is contained in:
		
							parent
							
								
									5fae118850
								
							
						
					
					
						commit
						99bcbf45ed
					
				| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "@poweredsoft/ngx-data", |   "name": "@poweredsoft/ngx-data", | ||||||
|   "version": "0.0.18", |   "version": "0.0.19", | ||||||
|   "peerDependencies": { |   "peerDependencies": { | ||||||
|     "@angular/common": "^8.2.4", |     "@angular/common": "^8.2.4", | ||||||
|     "@angular/core": "^8.2.4", |     "@angular/core": "^8.2.4", | ||||||
|  | |||||||
| @ -3,8 +3,8 @@ import { HttpClient, HttpErrorResponse } from '@angular/common/http'; | |||||||
| import { IDataSourceTransportOptions, IDataSourceCommandAdapterOptions, IDataSourceOptions, IResolveCommandModelEvent, IDataSourceError, IDataSourceErrorMessage, IDataSourceValidationError } from '@poweredsoft/data'; | import { IDataSourceTransportOptions, IDataSourceCommandAdapterOptions, IDataSourceOptions, IResolveCommandModelEvent, IDataSourceError, IDataSourceErrorMessage, IDataSourceValidationError } from '@poweredsoft/data'; | ||||||
| import { IQueryExecutionResult, IQueryExecutionGroupResult, IQueryCriteria } from '@poweredsoft/data'; | import { IQueryExecutionResult, IQueryExecutionGroupResult, IQueryCriteria } from '@poweredsoft/data'; | ||||||
| import { IDataSourceQueryAdapterOptions } from '@poweredsoft/data'; | import { IDataSourceQueryAdapterOptions } from '@poweredsoft/data'; | ||||||
| import { catchError} from 'rxjs/operators'; | import { catchError, switchMap} from 'rxjs/operators'; | ||||||
| import { throwError, Observable } from 'rxjs'; | import { throwError, Observable, of } from 'rxjs'; | ||||||
| 
 | 
 | ||||||
| @Injectable({ | @Injectable({ | ||||||
|     providedIn: 'root' |     providedIn: 'root' | ||||||
| @ -56,9 +56,9 @@ export class GenericRestDataSourceService | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     createDataSourceOptions<TModel, TKey>(route: string, keyResolver: (model: TModel) => TKey, defaultCriteria: IQueryCriteria, manageNotificationMessage: boolean = true) : IDataSourceOptions<TModel> |     createDataSourceOptions<TModel, TKey>(route: string, keyResolver: (model: TModel) => TKey, defaultCriteria: IQueryCriteria, beforeRead?: (query: IQueryCriteria) => Observable<IQueryCriteria>) : IDataSourceOptions<TModel> | ||||||
|     { |     { | ||||||
|         const dataSourceTransportOptions = this.createStandardRestTransportOptions<TModel, TKey>(route, keyResolver); |         const dataSourceTransportOptions = this.createStandardRestTransportOptions<TModel, TKey>(route, keyResolver, beforeRead); | ||||||
| 
 | 
 | ||||||
|         const dataSourceOptions: IDataSourceOptions<TModel> = { |         const dataSourceOptions: IDataSourceOptions<TModel> = { | ||||||
|             defaultCriteria: defaultCriteria, |             defaultCriteria: defaultCriteria, | ||||||
| @ -73,13 +73,19 @@ export class GenericRestDataSourceService | |||||||
|         options.transport.commands[name].resolveCommandModel = resolveCommandModel; |         options.transport.commands[name].resolveCommandModel = resolveCommandModel; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     createStandardRestTransportOptions<TModel, TKey>(route: string, keyResolver: (model: TModel) => TKey) : IDataSourceTransportOptions<TModel> { |     createStandardRestTransportOptions<TModel, TKey>(route: string, keyResolver: (model: TModel) => TKey, beforeRead?: (query: IQueryCriteria) => Observable<IQueryCriteria>) : IDataSourceTransportOptions<TModel> { | ||||||
| 
 | 
 | ||||||
|         const query: IDataSourceQueryAdapterOptions<TModel> = { |         const query: IDataSourceQueryAdapterOptions<TModel> = { | ||||||
|             adapter: { |             adapter: { | ||||||
|                 handle: (criteria: IQueryCriteria) => { |                 handle: (criteria: IQueryCriteria) => { | ||||||
|                     const queryRoute = `${route}/read`; |                     const queryRoute = `${route}/read`; | ||||||
|                     return this.http.post<IQueryExecutionResult<TModel> & IQueryExecutionGroupResult<TModel>>(queryRoute, criteria); |                     const finalBeforeRead = beforeRead || (t => of(criteria)); | ||||||
|  |                     return finalBeforeRead(criteria) | ||||||
|  |                         .pipe( | ||||||
|  |                             switchMap(finalQuery => { | ||||||
|  |                                 return this.http.post<IQueryExecutionResult<TModel> & IQueryExecutionGroupResult<TModel>>(queryRoute, finalQuery); | ||||||
|  |                             }) | ||||||
|  |                         ); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         }; |         }; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user