diff --git a/src/select-query-parser.ts b/src/select-query-parser.ts index 9567b1c9..7ba70a69 100644 --- a/src/select-query-parser.ts +++ b/src/select-query-parser.ts @@ -228,7 +228,9 @@ type ConstructFieldDefinition< ? R : unknown > extends true - ? Child | null + ? Field extends { inner: true } + ? Child + : Child | null : Relationships extends unknown[] ? HasFKey extends true ? Field extends { inner: true } @@ -259,7 +261,9 @@ type ConstructFieldDefinition< ? R : unknown > extends true - ? Child | null + ? Field extends { inner: true } + ? Child + : Child | null : Relationships extends unknown[] ? HasFKeyToFRel extends true ? Field extends { inner: true } diff --git a/test/index.test-d.ts b/test/index.test-d.ts index 066892d2..a41b6cb8 100644 --- a/test/index.test-d.ts +++ b/test/index.test-d.ts @@ -154,12 +154,18 @@ const postgrest = new PostgrestClient(REST_URL) { const { data: message, error } = await postgrest .from('messages') - .select('user:users!inner(*)') + .select('channels!inner(*, channel_details!inner(*))') .single() if (error) { throw new Error(error.message) } - expectType(message.user) + type ExpectedType = Prettify< + Database['public']['Tables']['channels']['Row'] & { + channel_details: Database['public']['Tables']['channel_details']['Row'] + } + > + + expectType(message.channels) } // one-to-many relationship