[MM-13721] Fix the etag function GetEtagForProfilesNotInTeam (#10360)
* Initial solution for Draft PR * Reformat tabs to spaces for readability * Remove my comments and debugging lines for Core Commiter to see changes more easily * Remove all comments and show only code changes * Match indentation spacing of new query to old query to make diff reading easier for core committer * Remove everything except what want to show core commiter * Restrucure query and resulting etag value. get number of users not in team from SELECT subquery. etag return values is now of the form <model.CurrenVersion>.<UpdateAt>.<number_profiles_not_int_team> * Remove skipped test for solution to https://mattermost.atlassian.net/browse/MM-13721. Remove comment for failing description of test store u4 with prepended "u4". Similar to u1, u2, u3. This is easier for debugging when looking in the database Added skipped test: check that etag does not change when a user, not in team 1, is added to different team. UpdateAt will change, but users in the set does not * Remove skipped test for solution to https://mattermost.atlassian.net/browse/MM-13721. Remove comment for failing description of test store u4 with prepended "u4". Similar to u1, u2, u3. This is easier for debugging when looking in the database Added skipped test: check that etag does not change when a user, not in team 1, is added to different team. UpdateAt will change, but users in the set does not * remove commented out tests * Restructure and simplify the SQL query for GetEtagForProfilesNotInTeam. - Build the query to get all profiles not in a specified team - select latest UpdateAt Value by getting Max value from UpdateAt field. - select Number of profiles not in Team from count of the returned Ids The previous query required building a complex query with multiple joins and repeated code in a select subquery, and derived table * Format SQL styling indentation, spaces around equal signs, and new lines * Add description for skipped test
Этот коммит содержится в:
@@ -1348,23 +1348,25 @@ func (us SqlUserStore) GetProfilesNotInTeam(teamId string, offset int, limit int
|
||||
|
||||
func (us SqlUserStore) GetEtagForProfilesNotInTeam(teamId string) store.StoreChannel {
|
||||
return store.Do(func(result *store.StoreResult) {
|
||||
updateAt, err := us.GetReplica().SelectInt(`
|
||||
SELECT
|
||||
u.UpdateAt
|
||||
FROM Users u
|
||||
LEFT JOIN TeamMembers tm
|
||||
ON tm.UserId = u.Id
|
||||
AND tm.TeamId = :TeamId
|
||||
AND tm.DeleteAt = 0
|
||||
WHERE tm.UserId IS NULL
|
||||
ORDER BY u.UpdateAt DESC
|
||||
LIMIT 1
|
||||
`, map[string]interface{}{"TeamId": teamId})
|
||||
|
||||
var querystr string
|
||||
querystr = `
|
||||
SELECT
|
||||
CONCAT(MAX(UpdateAt), '.', COUNT(Id)) as etag
|
||||
FROM
|
||||
Users as u
|
||||
LEFT JOIN TeamMembers tm
|
||||
ON tm.UserId = u.Id
|
||||
AND tm.TeamId = :TeamId
|
||||
AND tm.DeleteAt = 0
|
||||
WHERE
|
||||
tm.UserId IS NULL
|
||||
`
|
||||
etag, err := us.GetReplica().SelectStr(querystr, map[string]interface{}{"TeamId": teamId})
|
||||
if err != nil {
|
||||
result.Data = fmt.Sprintf("%v.%v", model.CurrentVersion, model.GetMillis())
|
||||
} else {
|
||||
result.Data = fmt.Sprintf("%v.%v", model.CurrentVersion, updateAt)
|
||||
result.Data = fmt.Sprintf("%v.%v", model.CurrentVersion, etag)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user