import { Observable } from 'rxjs/Observable';
import { IContent } from '../Content';
import { IODataParams } from '../ODataApi';
import { BaseRepository } from '../Repository';
import { QueryBuilder } from './QueryBuilder';
import { QueryResult } from './QueryResult';
import { QueryExpression } from './QuerySegment';
/**
* Represents a finialized Query instance that has a Repository, path and OData Parameters set up
*/
export class FinializedQuery<T extends IContent = IContent> extends QueryBuilder<T> {
constructor(build: (first: QueryExpression<T>) => void,
private readonly _repository: BaseRepository,
private readonly _path: string,
private readonly _odataParams: IODataParams<T> = {}) {
super(build);
}
/**
* Executes the Query expression
* Usage:
* ```ts
* const query = new Query(q => q.TypeIs(ContentTypes.Task).And.Equals('DisplayName', 'Test'))
* query.Exec().subscribe(result=>{
* console.log(result);
* })
* ```
*/
public Exec(): Observable<QueryResult<T>> {
return super.Exec(this._repository, this._path, this._odataParams);
}
}
|