feat: check that table isn't joined twice

This commit is contained in:
2025-03-16 09:51:54 +07:00
parent 53872ea789
commit 21f0c44e41
2 changed files with 5 additions and 23 deletions

23
.idea/workspace.xml generated
View File

@@ -5,28 +5,7 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="0f2c8145-9000-45fe-a871-9ff0914e0e13" name="Changes" comment=""> <list default="true" id="0f2c8145-9000-45fe-a871-9ff0914e0e13" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/frontend/src/customer/CustomerScheme.vue" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/customer/customer.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/order/OrderScheme.vue" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/order/order.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/preptask/PreptaskScheme.vue" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/preptask/preptask.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/producttype/ProducttypeScheme.vue" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/producttype/producttype.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/shift/ShiftScheme.vue" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/shift/shift.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/task/TaskScheme.vue" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/task/task.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/teamtask/TeamtaskScheme.vue" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/teamtask/teamtask.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/teamtype/TeamtypeScheme.vue" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/teamtype/teamtype.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/workarea/WorkareaScheme.vue" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/workarea/workarea.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/worker/WorkerScheme.vue" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/worker/worker.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/workshop/WorkshopScheme.vue" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/frontend/src/workshop/workshop.service.ts" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/internal/utils/sorting.go" beforeDir="false" afterPath="$PROJECT_DIR$/internal/utils/sorting.go" afterDir="false" /> <change beforePath="$PROJECT_DIR$/internal/utils/sorting.go" beforeDir="false" afterPath="$PROJECT_DIR$/internal/utils/sorting.go" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />

View File

@@ -9,6 +9,7 @@ import (
"golang.org/x/text/message" "golang.org/x/text/message"
"gorm.io/gorm/clause" "gorm.io/gorm/clause"
"reflect" "reflect"
"slices"
"strings" "strings"
) )
@@ -104,7 +105,9 @@ func SortByOrder[T any](fieldsSortingOrder []SortField, entity T) ([]*T, error)
joinField := strings.Join(joinPathParts, ".") joinField := strings.Join(joinPathParts, ".")
joinTable := field.Type.Name() joinTable := field.Type.Name()
joins = append(joins, joinTable) if !slices.Contains(joins, joinTable) {
joins = append(joins, joinTable)
}
orderQuery = append(orderQuery, fmt.Sprintf("%s %s", joinField, item.Order)) orderQuery = append(orderQuery, fmt.Sprintf("%s %s", joinField, item.Order))
} }
} }