changes
This commit is contained in:
		
							parent
							
								
									9ec3000b85
								
							
						
					
					
						commit
						a911f739d8
					
				@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "@poweredsoft/data",
 | 
					  "name": "@poweredsoft/data",
 | 
				
			||||||
  "version": "0.0.20",
 | 
					  "version": "0.0.22",
 | 
				
			||||||
  "peerDependencies": {
 | 
					  "peerDependencies": {
 | 
				
			||||||
    "rxjs": "^6.5.3"
 | 
					    "rxjs": "^6.5.3"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,6 @@ import { IDataSourceOptions, IResolveCommandModelEvent } from '../public-api';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export class DataSource<TModel> implements IDataSource<TModel> 
 | 
					export class DataSource<TModel> implements IDataSource<TModel> 
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
   
 | 
					 | 
				
			||||||
    data: IQueryExecutionResult<TModel> & IQueryExecutionGroupResult<TModel> = null;
 | 
					    data: IQueryExecutionResult<TModel> & IQueryExecutionGroupResult<TModel> = null;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    protected _dataSubject: BehaviorSubject<IQueryExecutionResult<TModel> & IQueryExecutionGroupResult<TModel>> = new BehaviorSubject(null);
 | 
					    protected _dataSubject: BehaviorSubject<IQueryExecutionResult<TModel> & IQueryExecutionGroupResult<TModel>> = new BehaviorSubject(null);
 | 
				
			||||||
@ -59,16 +58,29 @@ export class DataSource<TModel> implements IDataSource<TModel>
 | 
				
			|||||||
        this._data$ = this._dataSubject.asObservable();
 | 
					        this._data$ = this._dataSubject.asObservable();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    resolveIdField<TKeyType extends any>(model: TModel): TKeyType {
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if (this.options.idField)
 | 
				
			||||||
 | 
					            return model[this.options.idField];
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if (this.options.resolveIdField)
 | 
				
			||||||
 | 
					            return this.options.resolveIdField(model);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        throw new Error("Must specify an id field or supply a method to resolve the id field.");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    resolveCommandModelByName<T extends any>(event: IResolveCommandModelEvent<TModel>) : Observable<T> {
 | 
					    resolveCommandModelByName<T extends any>(event: IResolveCommandModelEvent<TModel>) : Observable<T> {
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if (!this.options.transport.commands.hasOwnProperty(name))
 | 
					        if (!this.options.transport.commands.hasOwnProperty(event.command))
 | 
				
			||||||
            return Observable.throw(`command with name ${name} not found`);
 | 
					            return Observable.throw(`command with name ${event.command} not found`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const commandOptions = this.options.transport.commands[name];
 | 
					        const commandOptions = this.options.transport.commands[event.command];
 | 
				
			||||||
        if (commandOptions.resolveCommandModel)
 | 
					        if (commandOptions.resolveCommandModel)
 | 
				
			||||||
            return commandOptions.resolveCommandModel(event);
 | 
					            return commandOptions.resolveCommandModel(event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return of<T>(event.model as any as T);
 | 
					        const noResolveMethod: any = event.model || {};
 | 
				
			||||||
 | 
					        return of<T>(noResolveMethod as T);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    executeCommandByName<TCommand, TResult>(name: string, command: TCommand) : Observable<TResult> {
 | 
					    executeCommandByName<TCommand, TResult>(name: string, command: TCommand) : Observable<TResult> {
 | 
				
			||||||
 | 
				
			|||||||
@ -8,6 +8,7 @@ export interface IDataSource<TModel>
 | 
				
			|||||||
    executeCommandByName<TCommand, TResult>(name: string, command: TCommand) : Observable<TResult>;
 | 
					    executeCommandByName<TCommand, TResult>(name: string, command: TCommand) : Observable<TResult>;
 | 
				
			||||||
    query<TQuery extends IQueryCriteria>(query: TQuery);
 | 
					    query<TQuery extends IQueryCriteria>(query: TQuery);
 | 
				
			||||||
    refresh();
 | 
					    refresh();
 | 
				
			||||||
 | 
					    resolveIdField<TKeyType extends any>(model: TModel) : TKeyType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    data$: Observable<IQueryExecutionResult<TModel> & IQueryExecutionGroupResult<TModel>>;
 | 
					    data$: Observable<IQueryExecutionResult<TModel> & IQueryExecutionGroupResult<TModel>>;
 | 
				
			||||||
    loading$: Observable<boolean>;
 | 
					    loading$: Observable<boolean>;
 | 
				
			||||||
 | 
				
			|||||||
@ -5,6 +5,8 @@ import { IQueryCriteria } from "./models";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export interface IDataSourceOptions<TModel> {
 | 
					export interface IDataSourceOptions<TModel> {
 | 
				
			||||||
    transport: IDataSourceTransportOptions<TModel>;
 | 
					    transport: IDataSourceTransportOptions<TModel>;
 | 
				
			||||||
 | 
					    idField?: string;
 | 
				
			||||||
 | 
					    resolveIdField?: (model: TModel) => any;
 | 
				
			||||||
    defaultCriteria: IQueryCriteria;
 | 
					    defaultCriteria: IQueryCriteria;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user