MM-46911: P1 - Fix MySQL query to filter bots out of TopDM (#20965)
Automatic Merge
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
78251a3ff1
Коммит
8b328386c5
@@ -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'"),
|
||||
|
||||
Ссылка в новой задаче
Block a user