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.registeredConnection, this.ModelClass) } }