fix: wrong column name for sorting

This commit is contained in:
2025-03-15 16:41:16 +07:00
parent 1e0f2b7f4a
commit d33e251c7a
2 changed files with 33 additions and 1 deletions

View File

@@ -12,6 +12,30 @@ import (
"strings"
)
import "gorm.io/gorm"
func GetTableName(model any, db *gorm.DB) (string, error) {
stmt := &gorm.Statement{DB: db}
if err := stmt.Parse(model); err != nil {
return "", err
}
return stmt.Schema.Table, nil
}
func GetColumnName(model any, fieldName string, db *gorm.DB) (string, error) {
stmt := &gorm.Statement{DB: db}
if err := stmt.Parse(model); err != nil {
return "", err
}
field := stmt.Schema.LookUpField(fieldName)
if field == nil {
return "", fmt.Errorf("field '%s' not found", fieldName)
}
return field.DBName, nil
}
var p = message.NewPrinter(language.Russian)
func SortByOrder[T any](fieldsSortOrder map[string]string, entity T) ([]*T, error) {
@@ -48,7 +72,15 @@ func SortByOrder[T any](fieldsSortOrder map[string]string, entity T) ([]*T, erro
fieldPath := tag.GetTag("ui").GetParamOr("field", "")
if fieldPath == "" {
orderQuery = append(orderQuery, fmt.Sprintf("%s %s", name, order))
tableName, err := GetTableName(entity, database.GetInstance())
if err != nil {
return nil, errors.New(p.Sprintf("Failed to get table name: %s", err))
}
columnName, err := GetColumnName(entity, field.Name, database.GetInstance())
if err != nil {
return nil, errors.New(p.Sprintf("Failed to get column name: %s", err))
}
orderQuery = append(orderQuery, fmt.Sprintf("%s.%s %s", tableName, columnName, order))
} else {
fieldsPathParts := strings.Split(fieldPath, ".")