github.com/unionj-cloud/go-doudou/v2@v2.3.5/toolkit/gormgen/internal/model/tbl_index.go (about)

     1  package model
     2  
     3  import "gorm.io/gorm"
     4  
     5  // Index table index info
     6  type Index struct {
     7  	gorm.Index
     8  	Priority int32 `gorm:"column:SEQ_IN_INDEX"`
     9  }
    10  
    11  // GroupByColumn group columns
    12  func GroupByColumn(indexList []gorm.Index) map[string][]*Index {
    13  	columnIndexMap := make(map[string][]*Index, len(indexList))
    14  	if len(indexList) == 0 {
    15  		return columnIndexMap
    16  	}
    17  
    18  	for _, idx := range indexList {
    19  		if idx == nil {
    20  			continue
    21  		}
    22  		for i, col := range idx.Columns() {
    23  			columnIndexMap[col] = append(columnIndexMap[col], &Index{
    24  				Index:    idx,
    25  				Priority: int32(i + 1),
    26  			})
    27  		}
    28  	}
    29  	return columnIndexMap
    30  }