import {Model} from "./Model"; import {AbstractBuilder} from "../builder/AbstractBuilder"; import {AbstractResultIterable} from "../builder/result/AbstractResultIterable"; import {Instantiable} from "../../di"; import {ModelResultIterable} from "./ModelResultIterable"; /** * Implementation of the abstract builder whose results yield instances of a given Model, `T`. */ export class ModelBuilder> extends AbstractBuilder { constructor( /** The model class that is created for results of this query. */ protected readonly ModelClass: Instantiable ) { super() } public getNewInstance(): AbstractBuilder { return this.app().make>(ModelBuilder) } public getResultIterable(): AbstractResultIterable { return this.app().make>(ModelResultIterable, this, this._connection, this.ModelClass) } }