Skip to content

Commit add9ebe

Browse files
[services] update MoveGroupItem function to set newPos to the length of the new parent's subgroups/repositories
1 parent 07a1c25 commit add9ebe

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

services/group/group.go

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,30 @@ func MoveRepositoryToGroup(ctx context.Context, repo *repo_model.Repository, new
5656
}
5757

5858
func MoveGroupItem(ctx context.Context, itemID, newParent int64, isGroup bool, newPos int) (err error) {
59-
ctx, committer, err := db.TxContext(ctx)
59+
var committer db.Committer
60+
ctx, committer, err = db.TxContext(ctx)
6061
if err != nil {
6162
return err
6263
}
6364
defer committer.Close()
64-
65+
var parentGroup *group_model.Group
66+
parentGroup, err = group_model.GetGroupByID(ctx, newParent)
67+
if err != nil {
68+
return err
69+
}
70+
err = parentGroup.LoadSubgroups(ctx, false)
71+
if err != nil {
72+
return err
73+
}
6574
if isGroup {
66-
group, err := group_model.GetGroupByID(ctx, itemID)
75+
var group *group_model.Group
76+
group, err = group_model.GetGroupByID(ctx, itemID)
6777
if err != nil {
6878
return err
6979
}
80+
if newPos < 0 {
81+
newPos = len(parentGroup.Subgroups)
82+
}
7083
if group.ParentGroupID != newParent || group.SortOrder != newPos {
7184
if err = group_model.MoveGroup(ctx, group, newParent, newPos); err != nil {
7285
return err
@@ -76,10 +89,21 @@ func MoveGroupItem(ctx context.Context, itemID, newParent int64, isGroup bool, n
7689
}
7790
}
7891
} else {
79-
repo, err := repo_model.GetRepositoryByID(ctx, itemID)
92+
var repo *repo_model.Repository
93+
repo, err = repo_model.GetRepositoryByID(ctx, itemID)
8094
if err != nil {
8195
return err
8296
}
97+
if newPos < 0 {
98+
var repoCount int64
99+
repoCount, err = repo_model.CountRepository(ctx, &repo_model.SearchRepoOptions{
100+
GroupID: newParent,
101+
})
102+
if err != nil {
103+
return err
104+
}
105+
newPos = int(repoCount)
106+
}
83107
if repo.GroupID != newParent || repo.GroupSortOrder != newPos {
84108
if err = MoveRepositoryToGroup(ctx, repo, newParent, newPos); err != nil {
85109
return err

0 commit comments

Comments
 (0)