From 4d196f836c119ee057589663993a74d5c0664773 Mon Sep 17 00:00:00 2001 From: Mihael Konjevic Date: Wed, 31 Jul 2024 14:01:14 +0200 Subject: [PATCH] fix: validate model names when joining --- src/lib/repository.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lib/repository.ts b/src/lib/repository.ts index 4f03168..66ae220 100644 --- a/src/lib/repository.ts +++ b/src/lib/repository.ts @@ -111,7 +111,7 @@ export class Repository< return this.filterFragmentBuilderRegistry; } - join( + join>( type: AnyJoin["type"], modelName1: N1, modelName2: N2, @@ -122,6 +122,10 @@ export class Repository< invariant(model1, `Model ${model1} not found in repository`); invariant(model2, `Model ${model2} not found in repository`); + invariant( + model1.name !== model2.name, + `Model ${model1.name} cannot be joined to itself`, + ); const joinSqlDef = (context: C) => { const models = { @@ -161,7 +165,7 @@ export class Repository< return this; } - joinOneToOne( + joinOneToOne>( model1: N1, model2: N2, joinSqlDefFn: JoinFn, @@ -169,7 +173,7 @@ export class Repository< return this.join("oneToOne", model1, model2, joinSqlDefFn); } - joinOneToMany( + joinOneToMany>( model1: N1, model2: N2, joinSqlDefFn: JoinFn, @@ -177,7 +181,7 @@ export class Repository< return this.join("oneToMany", model1, model2, joinSqlDefFn); } - joinManyToOne( + joinManyToOne>( model1: N1, model2: N2, joinSqlDefFn: JoinFn, @@ -185,7 +189,7 @@ export class Repository< return this.join("manyToOne", model1, model2, joinSqlDefFn); } - joinManyToMany( + joinManyToMany>( model1: N1, model2: N2, joinSqlDefFn: JoinFn,