@@ -411,7 +411,7 @@ func prepareClusterDB(db *gorm.DB, eagerLoading EagerLoadingState, includeDelete
411411 return db
412412}
413413
414- func prepareClusterDBWithJoins (db * gorm.DB , includeDeleted DeleteRecordsState ) * gorm.DB {
414+ func prepareClusterDBWithJoins (db * gorm.DB , eagerLoading EagerLoadingState , includeDeleted DeleteRecordsState ) * gorm.DB {
415415 if includeDeleted {
416416 db = db .Unscoped ()
417417 }
@@ -423,6 +423,12 @@ func prepareClusterDBWithJoins(db *gorm.DB, includeDeleted DeleteRecordsState) *
423423 return db
424424 }}
425425
426+ if eagerLoading {
427+ for _ , tableName := range ClusterSubTables {
428+ db = LoadTableFromDB (db , tableName , conditions ... )
429+ }
430+ }
431+
426432 networkTables := map [string ]bool {
427433 ClusterNetworksTable : true ,
428434 ServiceNetworksTable : true ,
@@ -438,36 +444,24 @@ func prepareClusterDBWithJoins(db *gorm.DB, includeDeleted DeleteRecordsState) *
438444
439445 db = db .Preload (ClusterNetworksTable , func (db * gorm.DB ) * gorm.DB {
440446 baseDB := db
441- if includeDeleted {
442- baseDB = db .Unscoped ()
443- }
444447 return baseDB .Joins ("INNER JOIN clusters ON cluster_networks.cluster_id = clusters.id" ).
445448 Where ("clusters.deleted_at IS NULL" )
446449 })
447450
448451 db = db .Preload (ServiceNetworksTable , func (db * gorm.DB ) * gorm.DB {
449452 baseDB := db
450- if includeDeleted {
451- baseDB = db .Unscoped ()
452- }
453453 return baseDB .Joins ("INNER JOIN clusters ON service_networks.cluster_id = clusters.id" ).
454454 Where ("clusters.deleted_at IS NULL" )
455455 })
456456
457457 db = db .Preload (MachineNetworksTable , func (db * gorm.DB ) * gorm.DB {
458458 baseDB := db
459- if includeDeleted {
460- baseDB = db .Unscoped ()
461- }
462459 return baseDB .Joins ("INNER JOIN clusters ON machine_networks.cluster_id = clusters.id" ).
463460 Where ("clusters.deleted_at IS NULL" )
464461 })
465462
466463 db = db .Preload (HostsTable , func (db * gorm.DB ) * gorm.DB {
467464 baseDB := db
468- if includeDeleted {
469- baseDB = db .Unscoped ()
470- }
471465 return baseDB .Joins ("INNER JOIN clusters ON hosts.cluster_id = clusters.id" ).
472466 Where ("clusters.deleted_at IS NULL AND hosts.deleted_at IS NULL" )
473467 })
@@ -504,12 +498,9 @@ func GetClusterFromDBWhereForUpdate(db *gorm.DB, eagerLoading EagerLoadingState,
504498func GetClustersFromDBWhere (db * gorm.DB , eagerLoading EagerLoadingState , includeDeleted DeleteRecordsState , where ... interface {}) ([]* Cluster , error ) {
505499 var clusters []* Cluster
506500
507- if eagerLoading {
508- // Use optimized loading with direct JOIN queries for network tables
509- db = prepareClusterDBWithJoins (db , includeDeleted )
510- } else {
511- db = prepareClusterDB (db , eagerLoading , includeDeleted )
512- }
501+ // Use optimized loading with direct JOIN queries for network tables
502+ db = prepareClusterDBWithJoins (db , eagerLoading , includeDeleted )
503+
513504 err := db .Find (& clusters , where ... ).Error
514505 if err != nil {
515506 return nil , err
0 commit comments