From 401e633f01c052e53cb94fa752bacfb2864a953b 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: Wed, 13 Aug 2025 20:50:23 -0400 Subject: [PATCH] rename tables in group-related query conditions --- models/group/group_list.go | 10 +++++----- models/organization/team_group.go | 20 ++++++++++---------- models/organization/team_list.go | 4 ++-- models/repo/repo_list.go | 6 +++--- models/shared/group/org_group.go | 19 +++++++++++-------- 5 files changed, 31 insertions(+), 28 deletions(-) diff --git a/models/group/group_list.go b/models/group/group_list.go index dd823fff40..133f8dbd64 100644 --- a/models/group/group_list.go +++ b/models/group/group_list.go @@ -27,16 +27,16 @@ func (groups RepoGroupList) LoadOwners(ctx context.Context) error { // userOrgTeamGroupBuilder returns group ids where user's teams can access. func userOrgTeamGroupBuilder(userID int64) *builder.Builder { - return builder.Select("`group_team`.group_id"). - From("group_team"). - Join("INNER", "team_user", "`team_user`.team_id = `group_team`.team_id"). + return builder.Select("`repo_group_team`.group_id"). + From("repo_group_team"). + Join("INNER", "team_user", "`team_user`.team_id = `repo_group_team`.team_id"). Where(builder.Eq{"`team_user`.uid": userID}) } func UserOrgTeamPermCond(idStr string, userID int64, level perm.AccessMode) builder.Cond { selCond := userOrgTeamGroupBuilder(userID) - selCond = selCond.InnerJoin("team", "`team`.id = `group_team`.team_id"). - And(builder.Or(builder.Gte{"`team`.authorize": level}, builder.Gte{"`group_team`.access_mode": level})) + selCond = selCond.InnerJoin("team", "`team`.id = `repo_group_team`.team_id"). + And(builder.Or(builder.Gte{"`team`.authorize": level}, builder.Gte{"`repo_group_team`.access_mode": level})) return builder.In(idStr, selCond) } diff --git a/models/organization/team_group.go b/models/organization/team_group.go index da7931291a..8886fa5fef 100644 --- a/models/organization/team_group.go +++ b/models/organization/team_group.go @@ -11,10 +11,10 @@ import ( func GetTeamsWithAccessToGroup(ctx context.Context, orgID, groupID int64, mode perm.AccessMode) ([]*Team, error) { teams := make([]*Team, 0) - inCond := group_model.ParentGroupCond(ctx, "group_team.group_id", groupID) - return teams, db.GetEngine(ctx).Distinct("team.*").Where("group_team.access_mode >= ?", mode). - Join("INNER", "group_team", "group_team.team_id = team.id and group_team.org_id = ?", orgID). - And("group_team.org_id = ?", orgID). + inCond := group_model.ParentGroupCond(ctx, "repo_group_team.group_id", groupID) + return teams, db.GetEngine(ctx).Distinct("team.*").Where("repo_group_team.access_mode >= ?", mode). + Join("INNER", "repo_group_team", "repo_group_team.team_id = team.id and repo_group_team.org_id = ?", orgID). + And("repo_group_team.org_id = ?", orgID). And(inCond). OrderBy("name"). Find(&teams) @@ -22,13 +22,13 @@ func GetTeamsWithAccessToGroup(ctx context.Context, orgID, groupID int64, mode p func GetTeamsWithAccessToGroupUnit(ctx context.Context, orgID, groupID int64, mode perm.AccessMode, unitType unit.Type) ([]*Team, error) { teams := make([]*Team, 0) - inCond := group_model.ParentGroupCond(ctx, "group_team.group_id", groupID) - return teams, db.GetEngine(ctx).Where("group_team.access_mode >= ?", mode). - Join("INNER", "group_team", "group_team.team_id = team.id"). - Join("INNER", "group_unit", "group_unit.team_id = team.id"). - And("group_team.org_id = ?", orgID). + inCond := group_model.ParentGroupCond(ctx, "repo_group_team.group_id", groupID) + return teams, db.GetEngine(ctx).Where("repo_group_team.access_mode >= ?", mode). + Join("INNER", "repo_group_team", "repo_group_team.team_id = team.id"). + Join("INNER", "repo_group_unit", "repo_group_unit.team_id = team.id"). + And("repo_group_team.org_id = ?", orgID). And(inCond). - And("group_unit.type = ?", unitType). + And("repo_group_unit.type = ?", unitType). OrderBy("name"). Find(&teams) } diff --git a/models/organization/team_list.go b/models/organization/team_list.go index a429e534df..0abdf6422c 100644 --- a/models/organization/team_list.go +++ b/models/organization/team_list.go @@ -129,8 +129,8 @@ func GetUserRepoTeams(ctx context.Context, orgID, userID, repoID int64) (teams T // GetUserGroupTeams returns teams in a group that a user has access to func GetUserGroupTeams(ctx context.Context, groupID, userID int64) (teams TeamList, err error) { err = db.GetEngine(ctx). - Where("`group_team`.group_id = ?", groupID). - Join("INNER", "group_team", "`group_team`.team_id = `team`.id"). + Where("`repo_group_team`.group_id = ?", groupID). + Join("INNER", "repo_group_team", "`repo_group_team`.team_id = `team`.id"). Join("INNER", "team_user", "`team_user`.team_id = `team`.id"). And("`team_user`.uid = ?", userID). Asc("`team`.name"). diff --git a/models/repo/repo_list.go b/models/repo/repo_list.go index 6a54cd19c8..f17a5f0f7c 100644 --- a/models/repo/repo_list.go +++ b/models/repo/repo_list.go @@ -306,7 +306,7 @@ func userOrgTeamRepoBuilder(userID int64) *builder.Builder { // userOrgTeamRepoGroupBuilder selects repos that the given user has access to through team membership and group permissions func userOrgTeamRepoGroupBuilder(userID int64) *builder.Builder { return userOrgTeamRepoBuilder(userID). - Join("INNER", "group_team", "`group_team`.team_id=`team_repo`.team_id") + Join("INNER", "repo_group_team", "`repo_group_team`.team_id=`team_repo`.team_id") } // userOrgTeamUnitRepoBuilder returns repo ids where user's teams can access the special unit. @@ -343,8 +343,8 @@ func UserOrgUnitRepoCond(idStr string, userID, orgID int64, unitType unit.Type) func ReposAccessibleByGroupTeamBuilder(teamID int64) *builder.Builder { innerGroupCond := builder.Select("`repo_group`.id"). From("repo_group"). - InnerJoin("group_team", "`group_team`.group_id = `repo_group`.id"). - Where(builder.Eq{"`group_team`.team_id": teamID}) + InnerJoin("repo_group_team", "`repo_group_team`.group_id = `repo_group`.id"). + Where(builder.Eq{"`repo_group_team`.team_id": teamID}) return builder.Select("`repository`.id"). From("repository"). Where(builder.In("`repository`.group_id", innerGroupCond)) diff --git a/models/shared/group/org_group.go b/models/shared/group/org_group.go index 53bb930618..bdb326a32e 100644 --- a/models/shared/group/org_group.go +++ b/models/shared/group/org_group.go @@ -17,9 +17,9 @@ func FindGroupMembers(ctx context.Context, groupID int64, opts *organization_mod Select("`team_user`.uid"). From("team_user"). InnerJoin("org_user", "`org_user`.uid = team_user.uid"). - InnerJoin("group_team", "`group_team`.team_id = team_user.team_id"). + InnerJoin("repo_group_team", "`repo_group_team`.team_id = team_user.team_id"). Where(builder.Eq{"`org_user`.org_id": opts.OrgID}). - And(group_model.ParentGroupCond(context.TODO(), "`group_team`.group_id", groupID)) + And(group_model.ParentGroupCond(context.TODO(), "`repo_group_team`.group_id", groupID)) if opts.PublicOnly() { cond = cond.And(builder.Eq{"`org_user`.is_public": true}) } @@ -38,17 +38,20 @@ func FindGroupMembers(ctx context.Context, groupID int64, opts *organization_mod func GetGroupTeams(ctx context.Context, groupID int64) ([]*organization_model.Team, error) { var teams []*organization_model.Team return teams, db.GetEngine(ctx). - Where("`group_team`.group_id = ?", groupID). - Join("INNER", "group_team", "`group_team`.team_id = `team`.id"). + Where("`repo_group_team`.group_id = ?", groupID). + Join("INNER", "repo_group_team", "`repo_group_team`.team_id = `team`.id"). Asc("`team`.name"). Find(&teams) } -func IsGroupMember(ctx context.Context, groupID, userID int64) (bool, error) { +func IsGroupMember(ctx context.Context, groupID int64, user *user_model.User) (bool, error) { + if user == nil { + return false, nil + } return db.GetEngine(ctx). - Where("`group_team`.group_id = ?", groupID). - Join("INNER", "group_team", "`group_team`.team_id = `team_user`.team_id"). - And("`team_user`.uid = ?", userID). + Where("`repo_group_team`.group_id = ?", groupID). + Join("INNER", "repo_group_team", "`repo_group_team`.team_id = `team_user`.team_id"). + And("`team_user`.uid = ?", user.ID). Table("team_user"). Exist() }