diff --git a/adonis-typings/model.ts b/adonis-typings/model.ts index e0e837b3..c6116414 100644 --- a/adonis-typings/model.ts +++ b/adonis-typings/model.ts @@ -484,7 +484,7 @@ declare module '@ioc:Adonis/Lucid/Model' { merge (value: Partial>, allowNonExtraProperties?: boolean): this save (): Promise delete (): Promise - refresh (): Promise + refresh (): Promise preload: ModelBuilderPreloadFn /** diff --git a/src/Orm/BaseModel/index.ts b/src/Orm/BaseModel/index.ts index a24b2827..570d5eaf 100644 --- a/src/Orm/BaseModel/index.ts +++ b/src/Orm/BaseModel/index.ts @@ -1762,7 +1762,7 @@ export class BaseModel implements LucidRow { * Noop when model instance is not persisted */ if (!this.$isPersisted) { - return + return this } /** @@ -1781,5 +1781,6 @@ export class BaseModel implements LucidRow { this.fill(freshModelInstance.$attributes) this.$hydrateOriginals() + return this } } diff --git a/test/orm/base-model.spec.ts b/test/orm/base-model.spec.ts index c20b463a..52673c8d 100644 --- a/test/orm/base-model.spec.ts +++ b/test/orm/base-model.spec.ts @@ -117,6 +117,23 @@ test.group('Base model | boot', (group) => { assert.instanceOf(chained, User) }) + test('ensure refresh method is chainable', async (assert) => { + const adapter = new FakeAdapter() + class User extends BaseModel { + @column() + public username: string + + @column() + public age: number + } + User.$adapter = adapter + + const user = new User() + const chained = user.refresh() + + assert.instanceOf(chained, User) + }) + test('compute table name from model name', async (assert) => { class User extends BaseModel { @column({ isPrimary: true })