You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
934 B
26 lines
934 B
3 years ago
|
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<T extends Model<T>> extends AbstractBuilder<T> {
|
||
|
constructor(
|
||
|
/** The model class that is created for results of this query. */
|
||
|
protected readonly ModelClass: Instantiable<T>
|
||
|
) {
|
||
|
super()
|
||
|
}
|
||
|
|
||
|
public getNewInstance(): AbstractBuilder<T> {
|
||
|
return this.app().make<ModelBuilder<T>>(ModelBuilder)
|
||
|
}
|
||
|
|
||
|
public getResultIterable(): AbstractResultIterable<T> {
|
||
|
return this.app().make<ModelResultIterable<T>>(ModelResultIterable, this, this._connection, this.ModelClass)
|
||
|
}
|
||
|
}
|