MM-62158: Final migration for GetMemberUsersNotInChannel and GetMemberUsersInTeam (#31237)

* upgrade mattermost/squirrel

* migrate GetMemberUsersInTeam

* migrate GetMemberUsersNotInChannel
Этот коммит содержится в:
Jesse Hallam
2025-05-30 13:20:05 -03:00
коммит произвёл GitHub
родитель e04f487cb8
Коммит b7012952c4
3 изменённых файлов: 45 добавлений и 47 удалений

Просмотреть файл

@@ -589,26 +589,22 @@ func (s *SqlGroupStore) GetMemberCountWithRestrictions(groupID string, viewRestr
func (s *SqlGroupStore) GetMemberUsersInTeam(groupID string, teamID string) ([]*model.User, error) { func (s *SqlGroupStore) GetMemberUsersInTeam(groupID string, teamID string) ([]*model.User, error) {
groupMembers := []*model.User{} groupMembers := []*model.User{}
query := ` query := s.groupMemberUsersSelectQuery.
SELECT Where(sq.Eq{
Users.* "GroupMembers.GroupId": groupID,
FROM "GroupMembers.UserId": s.getQueryBuilder().
GroupMembers Select("TeamMembers.UserId").
JOIN Users ON Users.Id = GroupMembers.UserId From("TeamMembers").
WHERE Join("Teams ON Teams.Id = TeamMembers.TeamId").
GroupId = ? Where(sq.Eq{
AND GroupMembers.UserId IN ( "TeamMembers.TeamId": teamID,
SELECT TeamMembers.UserId "TeamMembers.DeleteAt": 0,
FROM TeamMembers }),
JOIN Teams ON Teams.Id = ? "GroupMembers.DeleteAt": 0,
WHERE TeamMembers.TeamId = Teams.Id "Users.DeleteAt": 0,
AND TeamMembers.DeleteAt = 0 })
)
AND GroupMembers.DeleteAt = 0
AND Users.DeleteAt = 0
`
if err := s.GetReplica().Select(&groupMembers, query, groupID, teamID); err != nil { if err := s.GetReplica().SelectBuilder(&groupMembers, query); err != nil {
return nil, errors.Wrapf(err, "failed to member Users for groupId=%s and teamId=%s", groupID, teamID) return nil, errors.Wrapf(err, "failed to member Users for groupId=%s and teamId=%s", groupID, teamID)
} }
@@ -618,32 +614,34 @@ func (s *SqlGroupStore) GetMemberUsersInTeam(groupID string, teamID string) ([]*
func (s *SqlGroupStore) GetMemberUsersNotInChannel(groupID string, channelID string) ([]*model.User, error) { func (s *SqlGroupStore) GetMemberUsersNotInChannel(groupID string, channelID string) ([]*model.User, error) {
groupMembers := []*model.User{} groupMembers := []*model.User{}
query := ` query := s.groupMemberUsersSelectQuery.
SELECT Where(sq.Eq{
Users.* "GroupMembers.GroupId": groupID,
FROM }).
GroupMembers Where(sq.NotEq{
JOIN Users ON Users.Id = GroupMembers.UserId "GroupMembers.UserId": s.getQueryBuilder().
WHERE Select("ChannelMembers.UserId").
GroupId = ? From("ChannelMembers").
AND GroupMembers.UserId NOT IN ( Where(sq.Eq{
SELECT ChannelMembers.UserId "ChannelMembers.ChannelId": channelID,
FROM ChannelMembers }),
WHERE ChannelMembers.ChannelId = ? }).
) Where(sq.Eq{
AND GroupMembers.UserId IN ( "GroupMembers.UserId": s.getQueryBuilder().
SELECT TeamMembers.UserId Select("TeamMembers.UserId").
FROM TeamMembers From("Channels").
JOIN Channels ON Channels.Id = ? Join("TeamMembers ON TeamMembers.TeamId = Channels.TeamId").
JOIN Teams ON Teams.Id = Channels.TeamId Where(sq.Eq{
WHERE TeamMembers.TeamId = Teams.Id "Channels.Id": channelID,
AND TeamMembers.DeleteAt = 0 "TeamMembers.DeleteAt": 0,
) }),
AND GroupMembers.DeleteAt = 0 }).
AND Users.DeleteAt = 0 Where(sq.Eq{
` "GroupMembers.DeleteAt": 0,
"Users.DeleteAt": 0,
})
if err := s.GetReplica().Select(&groupMembers, query, groupID, channelID, channelID); err != nil { if err := s.GetReplica().SelectBuilder(&groupMembers, query); err != nil {
return nil, errors.Wrapf(err, "failed to member Users for groupId=%s and channelId!=%s", groupID, channelID) return nil, errors.Wrapf(err, "failed to member Users for groupId=%s and channelId!=%s", groupID, channelID)
} }

Просмотреть файл

@@ -47,7 +47,7 @@ require (
github.com/mattermost/mattermost/server/public v0.1.12 github.com/mattermost/mattermost/server/public v0.1.12
github.com/mattermost/morph v1.1.0 github.com/mattermost/morph v1.1.0
github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0 github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0
github.com/mattermost/squirrel v0.4.0 github.com/mattermost/squirrel v0.5.0
github.com/mholt/archiver/v3 v3.5.1 github.com/mholt/archiver/v3 v3.5.1
github.com/microcosm-cc/bluemonday v1.0.27 github.com/microcosm-cc/bluemonday v1.0.27
github.com/minio/minio-go/v7 v7.0.91 github.com/minio/minio-go/v7 v7.0.91

Просмотреть файл

@@ -382,8 +382,8 @@ github.com/mattermost/morph v1.1.0 h1:Q9vrJbeM3s2jfweGheq12EFIzdNp9a/6IovcbvOQ6C
github.com/mattermost/morph v1.1.0/go.mod h1:gD+EaqX2UMyyuzmF4PFh4r33XneQ8Nzi+0E8nXjMa3A= github.com/mattermost/morph v1.1.0/go.mod h1:gD+EaqX2UMyyuzmF4PFh4r33XneQ8Nzi+0E8nXjMa3A=
github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0 h1:G9tL6JXRBMzjuD1kkBtcnd42kUiT6QDwxfFYu7adM6o= github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0 h1:G9tL6JXRBMzjuD1kkBtcnd42kUiT6QDwxfFYu7adM6o=
github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0/go.mod h1:nV5bfVpT//+B1RPD2JvRnxbkLmJEYXmRaaVl15fsXjs= github.com/mattermost/rsc v0.0.0-20160330161541-bbaefb05eaa0/go.mod h1:nV5bfVpT//+B1RPD2JvRnxbkLmJEYXmRaaVl15fsXjs=
github.com/mattermost/squirrel v0.4.0 h1:azf9LZ+8JUTAvwt/njB1utkPqWQ6e7Rje2ya5N0P2i4= github.com/mattermost/squirrel v0.5.0 h1:81QPS0aA+inQbpA7Pzmv6O9sWwB6VaBh/VYw3oJf8ZY=
github.com/mattermost/squirrel v0.4.0/go.mod h1:NPPtk+CdpWre4GxMGoOpzEVFVc0ZoEFyJBZGCtn9nSU= github.com/mattermost/squirrel v0.5.0/go.mod h1:NPPtk+CdpWre4GxMGoOpzEVFVc0ZoEFyJBZGCtn9nSU=
github.com/mattermost/xml-roundtrip-validator v0.1.0 h1:RXbVD2UAl7A7nOTR4u7E3ILa4IbtvKBHw64LDsmu9hU= github.com/mattermost/xml-roundtrip-validator v0.1.0 h1:RXbVD2UAl7A7nOTR4u7E3ILa4IbtvKBHw64LDsmu9hU=
github.com/mattermost/xml-roundtrip-validator v0.1.0/go.mod h1:qccnGMcpgwcNaBnxqpJpWWUiPNr5H3O8eDgGV9gT5To= github.com/mattermost/xml-roundtrip-validator v0.1.0/go.mod h1:qccnGMcpgwcNaBnxqpJpWWUiPNr5H3O8eDgGV9gT5To=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=