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