@@ -325,6 +325,8 @@ const generateSelectFields = <TWithOrder extends boolean>(
325325 relationMap : Record < string , Record < string , TableNamedRelations > > ,
326326 typeName : string ,
327327 withOrder : TWithOrder ,
328+ relationsDepthLimit : number | undefined ,
329+ currentDepth : number = 0 ,
328330 usedTables : Set < string > = new Set ( ) ,
329331) : SelectData < TWithOrder > => {
330332 const relations = relationMap [ tableName ] ;
@@ -340,7 +342,10 @@ const generateSelectFields = <TWithOrder extends boolean>(
340342
341343 const tableFields = generateTableSelectTypeFieldsCached ( table , tableName ) ;
342344
343- if ( usedTables . has ( tableName ) || ! relationEntries . length ) {
345+ if (
346+ usedTables . has ( tableName ) || ( typeof relationsDepthLimit === 'number' && currentDepth >= relationsDepthLimit )
347+ || ! relationEntries . length
348+ ) {
344349 return {
345350 order,
346351 filters,
@@ -351,6 +356,7 @@ const generateSelectFields = <TWithOrder extends boolean>(
351356
352357 const rawRelationFields : [ string , ConvertedRelationColumnWithArgs ] [ ] = [ ] ;
353358 const updatedUsedTables = new Set ( usedTables ) . add ( tableName ) ;
359+ const newDepth = currentDepth + 1 ;
354360
355361 for ( const [ relationName , { targetTableName, relation } ] of relationEntries ) {
356362 const relTypeName = `${ typeName } ${ pascalize ( relationName ) } Relation` ;
@@ -362,6 +368,8 @@ const generateSelectFields = <TWithOrder extends boolean>(
362368 relationMap ,
363369 relTypeName ,
364370 ! isOne ,
371+ relationsDepthLimit ,
372+ newDepth ,
365373 updatedUsedTables ,
366374 ) ;
367375
@@ -410,6 +418,7 @@ export const generateTableTypes = <
410418 tables : Record < string , Table > ,
411419 relationMap : Record < string , Record < string , TableNamedRelations > > ,
412420 withReturning : WithReturning ,
421+ relationsDepthLimit : number | undefined ,
413422) : GeneratedTableTypes < WithReturning > => {
414423 const stylizedName = pascalize ( tableName ) ;
415424 const { tableFields, relationFields, filters, order } = generateSelectFields (
@@ -418,6 +427,7 @@ export const generateTableTypes = <
418427 relationMap ,
419428 stylizedName ,
420429 true ,
430+ relationsDepthLimit ,
421431 ) ;
422432
423433 const table = tables [ tableName ] ! ;
0 commit comments