From af1da2447d85649112d830e075145b9b435fa56d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Thu, 9 Jan 2025 18:33:33 -0500 Subject: [PATCH] add conversion functions for repository groups --- services/convert/repo_group.go | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 services/convert/repo_group.go diff --git a/services/convert/repo_group.go b/services/convert/repo_group.go new file mode 100644 index 0000000000..31f1158411 --- /dev/null +++ b/services/convert/repo_group.go @@ -0,0 +1,40 @@ +package convert + +import ( + "context" + + group_model "code.gitea.io/gitea/models/group" + repo_model "code.gitea.io/gitea/models/repo" + "code.gitea.io/gitea/models/unit" + user_model "code.gitea.io/gitea/models/user" + api "code.gitea.io/gitea/modules/structs" +) + +func ToAPIGroup(ctx context.Context, g *group_model.Group, actor *user_model.User) (*api.Group, error) { + err := g.LoadAttributes(ctx) + if err != nil { + return nil, err + } + apiGroup := &api.Group{ + ID: g.ID, + Owner: ToUser(ctx, g.Owner, actor), + Name: g.Name, + Description: g.Description, + ParentGroupID: g.ParentGroupID, + Link: g.GroupLink(), + SortOrder: g.SortOrder, + } + if apiGroup.NumSubgroups, err = group_model.CountGroups(ctx, &group_model.FindGroupsOptions{ + ParentGroupID: g.ID, + }); err != nil { + return nil, err + } + if _, apiGroup.NumRepos, err = repo_model.SearchRepositoryByCondition(ctx, &repo_model.SearchRepoOptions{ + GroupID: g.ID, + Actor: actor, + OwnerID: g.OwnerID, + }, repo_model.AccessibleRepositoryCondition(actor, unit.TypeInvalid), true); err != nil { + return nil, err + } + return apiGroup, nil +}