Fix problem with nulls in file infos content field (#17404)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
f90209c8a3
Коммит
09a52aab3e
@@ -101,12 +101,12 @@ func (fs SqlFileInfoStore) Save(info *model.FileInfo) (*model.FileInfo, error) {
|
|||||||
|
|
||||||
func (fs SqlFileInfoStore) GetByIds(ids []string) ([]*model.FileInfo, error) {
|
func (fs SqlFileInfoStore) GetByIds(ids []string) ([]*model.FileInfo, error) {
|
||||||
query := fs.getQueryBuilder().
|
query := fs.getQueryBuilder().
|
||||||
Select("FI.*, P.ChannelId").
|
Select(append(fs.queryFields, "P.ChannelId")...).
|
||||||
From("FileInfo as FI").
|
From("FileInfo").
|
||||||
LeftJoin("Posts as P ON FI.PostId=P.Id").
|
LeftJoin("Posts as P ON FileInfo.PostId=P.Id").
|
||||||
Where(sq.Eq{"FI.Id": ids}).
|
Where(sq.Eq{"FileInfo.Id": ids}).
|
||||||
Where(sq.Eq{"FI.DeleteAt": 0}).
|
Where(sq.Eq{"FileInfo.DeleteAt": 0}).
|
||||||
OrderBy("FI.CreateAt DESC")
|
OrderBy("FileInfo.CreateAt DESC")
|
||||||
|
|
||||||
queryString, args, err := query.ToSql()
|
queryString, args, err := query.ToSql()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -428,14 +428,14 @@ func (fs SqlFileInfoStore) Search(paramsList []*model.SearchParams, userId, team
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
query := fs.getQueryBuilder().
|
query := fs.getQueryBuilder().
|
||||||
Select("FI.*, P.ChannelId as ChannelId").
|
Select(append(fs.queryFields, "P.ChannelId as ChannelId")...).
|
||||||
From("FileInfo AS FI").
|
From("FileInfo").
|
||||||
LeftJoin("Posts as P ON FI.PostId=P.Id").
|
LeftJoin("Posts as P ON FileInfo.PostId=P.Id").
|
||||||
LeftJoin("Channels as C ON C.Id=P.ChannelId").
|
LeftJoin("Channels as C ON C.Id=P.ChannelId").
|
||||||
LeftJoin("ChannelMembers as CM ON C.Id=CM.ChannelId").
|
LeftJoin("ChannelMembers as CM ON C.Id=CM.ChannelId").
|
||||||
Where(sq.Or{sq.Eq{"C.TeamId": teamId}, sq.Eq{"C.TeamId": ""}}).
|
Where(sq.Or{sq.Eq{"C.TeamId": teamId}, sq.Eq{"C.TeamId": ""}}).
|
||||||
Where(sq.Eq{"FI.DeleteAt": 0}).
|
Where(sq.Eq{"FileInfo.DeleteAt": 0}).
|
||||||
OrderBy("FI.CreateAt DESC").
|
OrderBy("FileInfo.CreateAt DESC").
|
||||||
Limit(100)
|
Limit(100)
|
||||||
|
|
||||||
for _, params := range paramsList {
|
for _, params := range paramsList {
|
||||||
@@ -454,11 +454,11 @@ func (fs SqlFileInfoStore) Search(paramsList []*model.SearchParams, userId, team
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(params.Extensions) != 0 {
|
if len(params.Extensions) != 0 {
|
||||||
query = query.Where(sq.Eq{"FI.Extension": params.Extensions})
|
query = query.Where(sq.Eq{"FileInfo.Extension": params.Extensions})
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(params.ExcludedExtensions) != 0 {
|
if len(params.ExcludedExtensions) != 0 {
|
||||||
query = query.Where(sq.NotEq{"FI.Extension": params.ExcludedExtensions})
|
query = query.Where(sq.NotEq{"FileInfo.Extension": params.ExcludedExtensions})
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(params.ExcludedChannels) != 0 {
|
if len(params.ExcludedChannels) != 0 {
|
||||||
@@ -466,41 +466,41 @@ func (fs SqlFileInfoStore) Search(paramsList []*model.SearchParams, userId, team
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(params.FromUsers) != 0 {
|
if len(params.FromUsers) != 0 {
|
||||||
query = query.Where(sq.Eq{"FI.CreatorId": params.FromUsers})
|
query = query.Where(sq.Eq{"FileInfo.CreatorId": params.FromUsers})
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(params.ExcludedUsers) != 0 {
|
if len(params.ExcludedUsers) != 0 {
|
||||||
query = query.Where(sq.NotEq{"FI.CreatorId": params.ExcludedUsers})
|
query = query.Where(sq.NotEq{"FileInfo.CreatorId": params.ExcludedUsers})
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle after: before: on: filters
|
// handle after: before: on: filters
|
||||||
if params.OnDate != "" {
|
if params.OnDate != "" {
|
||||||
onDateStart, onDateEnd := params.GetOnDateMillis()
|
onDateStart, onDateEnd := params.GetOnDateMillis()
|
||||||
query = query.Where(sq.Expr("FI.CreateAt BETWEEN ? AND ?", strconv.FormatInt(onDateStart, 10), strconv.FormatInt(onDateEnd, 10)))
|
query = query.Where(sq.Expr("FileInfo.CreateAt BETWEEN ? AND ?", strconv.FormatInt(onDateStart, 10), strconv.FormatInt(onDateEnd, 10)))
|
||||||
} else {
|
} else {
|
||||||
if params.ExcludedDate != "" {
|
if params.ExcludedDate != "" {
|
||||||
excludedDateStart, excludedDateEnd := params.GetExcludedDateMillis()
|
excludedDateStart, excludedDateEnd := params.GetExcludedDateMillis()
|
||||||
query = query.Where(sq.Expr("FI.CreateAt NOT BETWEEN ? AND ?", strconv.FormatInt(excludedDateStart, 10), strconv.FormatInt(excludedDateEnd, 10)))
|
query = query.Where(sq.Expr("FileInfo.CreateAt NOT BETWEEN ? AND ?", strconv.FormatInt(excludedDateStart, 10), strconv.FormatInt(excludedDateEnd, 10)))
|
||||||
}
|
}
|
||||||
|
|
||||||
if params.AfterDate != "" {
|
if params.AfterDate != "" {
|
||||||
afterDate := params.GetAfterDateMillis()
|
afterDate := params.GetAfterDateMillis()
|
||||||
query = query.Where(sq.GtOrEq{"FI.CreateAt": strconv.FormatInt(afterDate, 10)})
|
query = query.Where(sq.GtOrEq{"FileInfo.CreateAt": strconv.FormatInt(afterDate, 10)})
|
||||||
}
|
}
|
||||||
|
|
||||||
if params.BeforeDate != "" {
|
if params.BeforeDate != "" {
|
||||||
beforeDate := params.GetBeforeDateMillis()
|
beforeDate := params.GetBeforeDateMillis()
|
||||||
query = query.Where(sq.LtOrEq{"FI.CreateAt": strconv.FormatInt(beforeDate, 10)})
|
query = query.Where(sq.LtOrEq{"FileInfo.CreateAt": strconv.FormatInt(beforeDate, 10)})
|
||||||
}
|
}
|
||||||
|
|
||||||
if params.ExcludedAfterDate != "" {
|
if params.ExcludedAfterDate != "" {
|
||||||
afterDate := params.GetExcludedAfterDateMillis()
|
afterDate := params.GetExcludedAfterDateMillis()
|
||||||
query = query.Where(sq.Lt{"FI.CreateAt": strconv.FormatInt(afterDate, 10)})
|
query = query.Where(sq.Lt{"FileInfo.CreateAt": strconv.FormatInt(afterDate, 10)})
|
||||||
}
|
}
|
||||||
|
|
||||||
if params.ExcludedBeforeDate != "" {
|
if params.ExcludedBeforeDate != "" {
|
||||||
beforeDate := params.GetExcludedBeforeDateMillis()
|
beforeDate := params.GetExcludedBeforeDateMillis()
|
||||||
query = query.Where(sq.Gt{"FI.CreateAt": strconv.FormatInt(beforeDate, 10)})
|
query = query.Where(sq.Gt{"FileInfo.CreateAt": strconv.FormatInt(beforeDate, 10)})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -535,9 +535,9 @@ func (fs SqlFileInfoStore) Search(paramsList []*model.SearchParams, userId, team
|
|||||||
}
|
}
|
||||||
|
|
||||||
query = query.Where(sq.Or{
|
query = query.Where(sq.Or{
|
||||||
sq.Expr("to_tsvector('english', FI.Name) @@ to_tsquery('english', ?)", queryTerms),
|
sq.Expr("to_tsvector('english', FileInfo.Name) @@ to_tsquery('english', ?)", queryTerms),
|
||||||
sq.Expr("to_tsvector('english', Translate(FI.Name, '.,-', ' ')) @@ to_tsquery('english', ?)", queryTerms),
|
sq.Expr("to_tsvector('english', Translate(FileInfo.Name, '.,-', ' ')) @@ to_tsquery('english', ?)", queryTerms),
|
||||||
sq.Expr("to_tsvector('english', FI.Content) @@ to_tsquery('english', ?)", queryTerms),
|
sq.Expr("to_tsvector('english', FileInfo.Content) @@ to_tsquery('english', ?)", queryTerms),
|
||||||
})
|
})
|
||||||
} else if fs.DriverName() == model.DATABASE_DRIVER_MYSQL {
|
} else if fs.DriverName() == model.DATABASE_DRIVER_MYSQL {
|
||||||
var err error
|
var err error
|
||||||
@@ -566,8 +566,8 @@ func (fs SqlFileInfoStore) Search(paramsList []*model.SearchParams, userId, team
|
|||||||
queryTerms = strings.Join(splitTerms, " ") + excludeClause
|
queryTerms = strings.Join(splitTerms, " ") + excludeClause
|
||||||
}
|
}
|
||||||
query = query.Where(sq.Or{
|
query = query.Where(sq.Or{
|
||||||
sq.Expr("MATCH (FI.Name) AGAINST (? IN BOOLEAN MODE)", queryTerms),
|
sq.Expr("MATCH (FileInfo.Name) AGAINST (? IN BOOLEAN MODE)", queryTerms),
|
||||||
sq.Expr("MATCH (FI.Content) AGAINST (? IN BOOLEAN MODE)", queryTerms),
|
sq.Expr("MATCH (FileInfo.Content) AGAINST (? IN BOOLEAN MODE)", queryTerms),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -614,12 +614,12 @@ func (fs SqlFileInfoStore) CountAll() (int64, error) {
|
|||||||
func (fs SqlFileInfoStore) GetFilesBatchForIndexing(startTime, endTime int64, limit int) ([]*model.FileForIndexing, error) {
|
func (fs SqlFileInfoStore) GetFilesBatchForIndexing(startTime, endTime int64, limit int) ([]*model.FileForIndexing, error) {
|
||||||
var files []*model.FileForIndexing
|
var files []*model.FileForIndexing
|
||||||
sql, args, _ := fs.getQueryBuilder().
|
sql, args, _ := fs.getQueryBuilder().
|
||||||
Select("fi.*, p.ChannelId").
|
Select(append(fs.queryFields, "p.ChannelId")...).
|
||||||
From("FileInfo as fi").
|
From("FileInfo").
|
||||||
LeftJoin("Posts AS p ON fi.PostId = p.Id").
|
LeftJoin("Posts AS p ON FileInfo.PostId = p.Id").
|
||||||
Where(sq.GtOrEq{"fi.CreateAt": startTime}).
|
Where(sq.GtOrEq{"FileInfo.CreateAt": startTime}).
|
||||||
Where(sq.Lt{"fi.CreateAt": endTime}).
|
Where(sq.Lt{"FileInfo.CreateAt": endTime}).
|
||||||
OrderBy("fi.CreateAt").
|
OrderBy("FileInfo.CreateAt").
|
||||||
Limit(uint64(limit)).
|
Limit(uint64(limit)).
|
||||||
ToSql()
|
ToSql()
|
||||||
_, err := fs.GetSearchReplica().Select(&files, sql, args...)
|
_, err := fs.GetSearchReplica().Select(&files, sql, args...)
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user