Model: fix eager-loaded relation loading from static query

This commit is contained in:
Garrett Mills 2021-11-25 16:39:17 -06:00
parent e57819d318
commit b7bfb3e153

View File

@ -174,10 +174,24 @@ export abstract class Model<T extends Model<T>> extends AppClass implements Bus
builder.field(field.databaseKey) builder.field(field.databaseKey)
}) })
for ( const relation of this.prototype.with ) { if ( Array.isArray(this.prototype.with) ) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment // Try to get the eager-loaded relations statically, if possible
// @ts-ignore for (const relation of this.prototype.with) {
builder.with(relation) // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
builder.with(relation)
}
} else if ( this.constructor.length < 1 ) {
// Otherwise, if we can instantiate the model without any arguments,
// do that and get the eager-loaded relations directly.
const inst = Container.getContainer().make<Model<any>>(this)
if ( Array.isArray(inst.with) ) {
for (const relation of inst.with) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
builder.with(relation)
}
}
} }
builder.withScopes(this.prototype.scopes) builder.withScopes(this.prototype.scopes)