MM-46911: P1 - Fix MySQL query to filter bots out of TopDM (#20965)

Automatic Merge
Этот коммит содержится в:
Shivashis Padhi
2022-09-09 21:04:00 +05:30
коммит произвёл GitHub
родитель 78251a3ff1
Коммит 8b328386c5
3 изменённых файлов: 36 добавлений и 12 удалений

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

@@ -2999,21 +2999,21 @@ func (s *SqlPostStore) updateThreadsFromPosts(transaction *sqlxTxWrapper, posts
}
func (s *SqlPostStore) GetTopDMsForUserSince(userID string, since int64, offset int, limit int) (*model.TopDMList, error) {
var botsFilterExpr, stringSplitKeyword string
if s.DriverName() == model.DatabaseDriverPostgres {
stringSplitKeyword = "split_part"
} else if s.DriverName() == model.DatabaseDriverMysql {
stringSplitKeyword = "SUBSTRING_INDEX"
}
var botsFilterExpr string
/*
Channel.Name is of the format userId1__userId2.
Using this, self dms, and bot dms can be filtered.
*/
botsFilterExpr = fmt.Sprintf(`
%s(Channels.Name, '__', 1) NOT IN (SELECT UserId FROM Bots)
AND %s(Channels.Name, '__', 2) NOT IN (SELECT UserId FROM Bots)
`, stringSplitKeyword, stringSplitKeyword)
if s.DriverName() == model.DatabaseDriverPostgres {
botsFilterExpr = `SPLIT_PART(Channels.Name, '__', 1) NOT IN (SELECT UserId FROM Bots)
AND SPLIT_PART(Channels.Name, '__', 2) NOT IN (SELECT UserId FROM Bots)
`
} else if s.DriverName() == model.DatabaseDriverMysql {
botsFilterExpr = `SUBSTRING_INDEX(Channels.Name, '__', 1) NOT IN (SELECT UserId FROM Bots)
AND SUBSTRING_INDEX(Channels.Name, '__', -1) NOT IN (SELECT UserId FROM Bots)
`
}
channelSelector := s.getQueryBuilder().Select("Id", "TotalMsgCount").From("Channels").Join("ChannelMembers as cm on cm.ChannelId = Channels.Id").
Where(sq.And{
sq.Expr("Channels.Type = 'D'"),