* Migration completed

* Order in translations file

* Fix: lints

* Trigger CI

* Fix message key

* Change mlog.Error for mlog.Warn

* Fix imports

* Adding translations needed for EE

* Trigger CI

* Fix merge with master

Co-authored-by: Agniva De Sarker <agnivade@yahoo.co.in>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
Rodrigo Villablanca
2020-09-24 02:16:36 -03:00
коммит произвёл GitHub
родитель cd7d68effb
Коммит 8118cac350
20 изменённых файлов: 685 добавлений и 450 удалений

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

@@ -1989,8 +1989,8 @@ func TestPermanentDeleteAllUsers(t *testing.T) {
require.Nil(t, err) require.Nil(t, err)
require.Greater(t, len(users), 0) require.Greater(t, len(users), 0)
postCount, err := th.App.Srv().Store.Post().AnalyticsPostCount("", false, false) postCount, nErr := th.App.Srv().Store.Post().AnalyticsPostCount("", false, false)
require.Nil(t, err) require.Nil(t, nErr)
require.Greater(t, postCount, int64(0)) require.Greater(t, postCount, int64(0))
// Delete all users and their posts // Delete all users and their posts
@@ -2002,8 +2002,8 @@ func TestPermanentDeleteAllUsers(t *testing.T) {
require.Nil(t, err) require.Nil(t, err)
require.Len(t, users, 0) require.Len(t, users, 0)
postCount, err = th.App.Srv().Store.Post().AnalyticsPostCount("", false, false) postCount, nErr = th.App.Srv().Store.Post().AnalyticsPostCount("", false, false)
require.Nil(t, err) require.Nil(t, nErr)
require.Equal(t, postCount, int64(0)) require.Equal(t, postCount, int64(0))
// Check that the channel and team created by the user were not deleted // Check that the channel and team created by the user were not deleted

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

@@ -79,7 +79,7 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
postChan = make(chan store.StoreResult, 1) postChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamId, false, false) count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamId, false, false)
postChan <- store.StoreResult{Data: count, Err: err2} postChan <- store.StoreResult{Data: count, NErr: err2}
close(postChan) close(postChan)
}() }()
} }
@@ -121,8 +121,8 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
rows[2].Value = -1 rows[2].Value = -1
} else { } else {
r = <-postChan r = <-postChan
if r.Err != nil { if r.NErr != nil {
return nil, r.Err return nil, model.NewAppError("GetAnalytics", "app.post.analytics_posts_count.app_error", nil, r.NErr.Error(), http.StatusInternalServerError)
} }
rows[2].Value = float64(r.Data.(int64)) rows[2].Value = float64(r.Data.(int64))
} }
@@ -198,28 +198,43 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}} rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}}
return rows, nil return rows, nil
} }
return a.Srv().Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{ analyticsRows, nErr := a.Srv().Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{
TeamId: teamId, TeamId: teamId,
BotsOnly: true, BotsOnly: true,
YesterdayOnly: false, YesterdayOnly: false,
}) })
if nErr != nil {
return nil, model.NewAppError("GetAnalytics", "app.post.analytics_posts_count_by_day.app_error", nil, nErr.Error(), http.StatusInternalServerError)
}
return analyticsRows, nil
} else if name == "post_counts_day" { } else if name == "post_counts_day" {
if skipIntensiveQueries { if skipIntensiveQueries {
rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}} rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}}
return rows, nil return rows, nil
} }
return a.Srv().Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{ analyticsRows, nErr := a.Srv().Store.Post().AnalyticsPostCountsByDay(&model.AnalyticsPostCountsOptions{
TeamId: teamId, TeamId: teamId,
BotsOnly: false, BotsOnly: false,
YesterdayOnly: false, YesterdayOnly: false,
}) })
if nErr != nil {
return nil, model.NewAppError("GetAnalytics", "app.post.analytics_posts_count_by_day.app_error", nil, nErr.Error(), http.StatusInternalServerError)
}
return analyticsRows, nil
} else if name == "user_counts_with_posts_day" { } else if name == "user_counts_with_posts_day" {
if skipIntensiveQueries { if skipIntensiveQueries {
rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}} rows := model.AnalyticsRows{&model.AnalyticsRow{Name: "", Value: -1}}
return rows, nil return rows, nil
} }
return a.Srv().Store.Post().AnalyticsUserCountsWithPostsByDay(teamId) analyticsRows, nErr := a.Srv().Store.Post().AnalyticsUserCountsWithPostsByDay(teamId)
if nErr != nil {
return nil, model.NewAppError("GetAnalytics", "app.post.analytics_user_counts_posts_by_day.app_error", nil, nErr.Error(), http.StatusInternalServerError)
}
return analyticsRows, nil
} else if name == "extra_counts" { } else if name == "extra_counts" {
var rows model.AnalyticsRows = make([]*model.AnalyticsRow, 6) var rows model.AnalyticsRows = make([]*model.AnalyticsRow, 6)
rows[0] = &model.AnalyticsRow{Name: "file_post_count", Value: 0} rows[0] = &model.AnalyticsRow{Name: "file_post_count", Value: 0}
@@ -264,14 +279,14 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
fileChan = make(chan store.StoreResult, 1) fileChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamId, true, false) count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamId, true, false)
fileChan <- store.StoreResult{Data: count, Err: err2} fileChan <- store.StoreResult{Data: count, NErr: err2}
close(fileChan) close(fileChan)
}() }()
hashtagChan = make(chan store.StoreResult, 1) hashtagChan = make(chan store.StoreResult, 1)
go func() { go func() {
count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamId, false, true) count, err2 := a.Srv().Store.Post().AnalyticsPostCount(teamId, false, true)
hashtagChan <- store.StoreResult{Data: count, Err: err2} hashtagChan <- store.StoreResult{Data: count, NErr: err2}
close(hashtagChan) close(hashtagChan)
}() }()
} }
@@ -280,8 +295,8 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
rows[0].Value = -1 rows[0].Value = -1
} else { } else {
r := <-fileChan r := <-fileChan
if r.Err != nil { if r.NErr != nil {
return nil, r.Err return nil, model.NewAppError("GetAnalytics", "app.post.analytics_posts_count.app_error", nil, r.NErr.Error(), http.StatusInternalServerError)
} }
rows[0].Value = float64(r.Data.(int64)) rows[0].Value = float64(r.Data.(int64))
} }
@@ -290,8 +305,8 @@ func (a *App) GetAnalytics(name string, teamId string) (model.AnalyticsRows, *mo
rows[1].Value = -1 rows[1].Value = -1
} else { } else {
r := <-hashtagChan r := <-hashtagChan
if r.Err != nil { if r.NErr != nil {
return nil, r.Err return nil, model.NewAppError("GetAnalytics", "app.post.analytics_posts_count.app_error", nil, r.NErr.Error(), http.StatusInternalServerError)
} }
rows[1].Value = float64(r.Data.(int64)) rows[1].Value = float64(r.Data.(int64))
} }

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

@@ -596,8 +596,8 @@ func TestAddChannelMemberNoUserRequestor(t *testing.T) {
} }
assert.Equal(t, groupUserIds, channelMemberHistoryUserIds) assert.Equal(t, groupUserIds, channelMemberHistoryUserIds)
postList, err := th.App.Srv().Store.Post().GetPosts(model.GetPostsOptions{ChannelId: channel.Id, Page: 0, PerPage: 1}, false) postList, nErr := th.App.Srv().Store.Post().GetPosts(model.GetPostsOptions{ChannelId: channel.Id, Page: 0, PerPage: 1}, false)
require.Nil(t, err) require.Nil(t, nErr)
if assert.Len(t, postList.Order, 1) { if assert.Len(t, postList.Order, 1) {
post := postList.Posts[postList.Order[0]] post := postList.Posts[postList.Order[0]]

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

@@ -338,9 +338,9 @@ func (a *App) exportAllPosts(writer io.Writer) *model.AppError {
afterId := strings.Repeat("0", 26) afterId := strings.Repeat("0", 26)
for { for {
posts, err := a.Srv().Store.Post().GetParentsForExportAfter(1000, afterId) posts, nErr := a.Srv().Store.Post().GetParentsForExportAfter(1000, afterId)
if err != nil { if nErr != nil {
return err return model.NewAppError("exportAllPosts", "app.post.get_posts.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
if len(posts) == 0 { if len(posts) == 0 {
@@ -357,6 +357,7 @@ func (a *App) exportAllPosts(writer io.Writer) *model.AppError {
postLine := ImportLineForPost(post) postLine := ImportLineForPost(post)
var err *model.AppError
postLine.Post.Replies, err = a.buildPostReplies(post.Id) postLine.Post.Replies, err = a.buildPostReplies(post.Id)
if err != nil { if err != nil {
return err return err
@@ -380,17 +381,18 @@ func (a *App) exportAllPosts(writer io.Writer) *model.AppError {
func (a *App) buildPostReplies(postId string) (*[]ReplyImportData, *model.AppError) { func (a *App) buildPostReplies(postId string) (*[]ReplyImportData, *model.AppError) {
var replies []ReplyImportData var replies []ReplyImportData
replyPosts, err := a.Srv().Store.Post().GetRepliesForExport(postId) replyPosts, nErr := a.Srv().Store.Post().GetRepliesForExport(postId)
if err != nil { if nErr != nil {
return nil, err return nil, model.NewAppError("buildPostReplies", "app.post.get_posts.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
for _, reply := range replyPosts { for _, reply := range replyPosts {
replyImportObject := ImportReplyFromPost(reply) replyImportObject := ImportReplyFromPost(reply)
if reply.HasReactions { if reply.HasReactions {
replyImportObject.Reactions, err = a.BuildPostReactions(reply.Id) var appErr *model.AppError
if err != nil { replyImportObject.Reactions, appErr = a.BuildPostReactions(reply.Id)
return nil, err if appErr != nil {
return nil, appErr
} }
} }
replies = append(replies, *replyImportObject) replies = append(replies, *replyImportObject)
@@ -545,7 +547,7 @@ func (a *App) exportAllDirectPosts(writer io.Writer) *model.AppError {
for { for {
posts, err := a.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, afterId) posts, err := a.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, afterId)
if err != nil { if err != nil {
return err return model.NewAppError("exportAllDirectPosts", "app.post.get_direct_posts.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
if len(posts) == 0 { if len(posts) == 0 {

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

@@ -533,8 +533,8 @@ func TestExportDMPostWithSelf(t *testing.T) {
err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir") err := th1.App.BulkExport(&b, "somefile", "somePath", "someDir")
require.Nil(t, err) require.Nil(t, err)
posts, err := th1.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000") posts, nErr := th1.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
require.Nil(t, err) require.Nil(t, nErr)
assert.Equal(t, 1, len(posts)) assert.Equal(t, 1, len(posts))
th1.TearDown() th1.TearDown()
@@ -542,8 +542,8 @@ func TestExportDMPostWithSelf(t *testing.T) {
th2 := Setup(t) th2 := Setup(t)
defer th2.TearDown() defer th2.TearDown()
posts, err = th2.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000") posts, nErr = th2.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
require.Nil(t, err) require.Nil(t, nErr)
assert.Equal(t, 0, len(posts)) assert.Equal(t, 0, len(posts))
// import the exported posts // import the exported posts
@@ -551,8 +551,8 @@ func TestExportDMPostWithSelf(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, 0, i) assert.Equal(t, 0, i)
posts, err = th2.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000") posts, nErr = th2.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
require.Nil(t, err) require.Nil(t, nErr)
assert.Equal(t, 1, len(posts)) assert.Equal(t, 1, len(posts))
assert.Equal(t, 1, len((*posts[0].ChannelMembers))) assert.Equal(t, 1, len((*posts[0].ChannelMembers)))
assert.Equal(t, th1.BasicUser.Username, (*posts[0].ChannelMembers)[0]) assert.Equal(t, th1.BasicUser.Username, (*posts[0].ChannelMembers)[0])

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

@@ -1031,9 +1031,9 @@ func (a *App) importReplies(data []ReplyImportData, post *model.Post, teamId str
user := users[*replyData.User] user := users[*replyData.User]
// Check if this post already exists. // Check if this post already exists.
replies, err := a.Srv().Store.Post().GetPostsCreatedAt(post.ChannelId, *replyData.CreateAt) replies, nErr := a.Srv().Store.Post().GetPostsCreatedAt(post.ChannelId, *replyData.CreateAt)
if err != nil { if nErr != nil {
return err return model.NewAppError("importReplies", "app.post.get_posts_created_at.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
var reply *model.Post var reply *model.Post
@@ -1091,8 +1091,8 @@ func (a *App) importReplies(data []ReplyImportData, post *model.Post, teamId str
} }
} }
if _, _, err := a.Srv().Store.Post().OverwriteMultiple(postsForOverwriteList); err != nil { if _, _, nErr := a.Srv().Store.Post().OverwriteMultiple(postsForOverwriteList); nErr != nil {
return err return model.NewAppError("importReplies", "app.post.overwrite.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
for _, postWithData := range postsWithData { for _, postWithData := range postsWithData {
@@ -1278,9 +1278,9 @@ func (a *App) importMultiplePostLines(lines []LineImportWorkerData, dryRun bool)
user := users[*line.Post.User] user := users[*line.Post.User]
// Check if this post already exists. // Check if this post already exists.
posts, appErr := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *line.Post.CreateAt) posts, nErr := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *line.Post.CreateAt)
if appErr != nil { if nErr != nil {
return line.LineNumber, appErr return line.LineNumber, model.NewAppError("importMultiplePostLines", "app.post.get_posts_created_at.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
var post *model.Post var post *model.Post
@@ -1357,10 +1357,10 @@ func (a *App) importMultiplePostLines(lines []LineImportWorkerData, dryRun bool)
if idx != -1 && idx < len(postsForOverwriteList) { if idx != -1 && idx < len(postsForOverwriteList) {
post := postsForOverwriteList[idx] post := postsForOverwriteList[idx]
if lineNumber, ok := postsForOverwriteMap[getPostStrID(post)]; ok { if lineNumber, ok := postsForOverwriteMap[getPostStrID(post)]; ok {
return lineNumber, err return lineNumber, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
} }
return 0, err return 0, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
for _, postWithData := range postsWithData { for _, postWithData := range postsWithData {
@@ -1574,9 +1574,9 @@ func (a *App) importMultipleDirectPostLines(lines []LineImportWorkerData, dryRun
user := users[*line.DirectPost.User] user := users[*line.DirectPost.User]
// Check if this post already exists. // Check if this post already exists.
posts, err := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *line.DirectPost.CreateAt) posts, nErr := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *line.DirectPost.CreateAt)
if err != nil { if nErr != nil {
return line.LineNumber, err return line.LineNumber, model.NewAppError("BulkImport", "app.post.get_posts_created_at.app_error", nil, nErr.Error(), http.StatusInternalServerError)
} }
var post *model.Post var post *model.Post
@@ -1652,10 +1652,10 @@ func (a *App) importMultipleDirectPostLines(lines []LineImportWorkerData, dryRun
if idx != -1 && idx < len(postsForOverwriteList) { if idx != -1 && idx < len(postsForOverwriteList) {
post := postsForOverwriteList[idx] post := postsForOverwriteList[idx]
if lineNumber, ok := postsForOverwriteMap[getPostStrID(post)]; ok { if lineNumber, ok := postsForOverwriteMap[getPostStrID(post)]; ok {
return lineNumber, err return lineNumber, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
} }
return 0, err return 0, model.NewAppError("importMultiplePostLines", "app.post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
for _, postWithData := range postsWithData { for _, postWithData := range postsWithData {

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

@@ -1958,8 +1958,8 @@ func TestImportimportMultiplePostLines(t *testing.T) {
require.Nil(t, err, "Failed to get user from database.") require.Nil(t, err, "Failed to get user from database.")
// Count the number of posts in the testing team. // Count the number of posts in the testing team.
initialPostCount, err := th.App.Srv().Store.Post().AnalyticsPostCount(team.Id, false, false) initialPostCount, nErr := th.App.Srv().Store.Post().AnalyticsPostCount(team.Id, false, false)
require.Nil(t, err) require.Nil(t, nErr)
// Try adding an invalid post in dry run mode. // Try adding an invalid post in dry run mode.
data := LineImportWorkerData{ data := LineImportWorkerData{
@@ -2092,8 +2092,8 @@ func TestImportimportMultiplePostLines(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id)
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, time) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, time)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2120,8 +2120,8 @@ func TestImportimportMultiplePostLines(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id)
// Check the post values. // Check the post values.
posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, time) posts, nErr = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, time)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2185,8 +2185,8 @@ func TestImportimportMultiplePostLines(t *testing.T) {
assert.Equal(t, 0, errLine) assert.Equal(t, 0, errLine)
AssertAllPostsCount(t, th.App, initialPostCount, 4, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 4, team.Id)
posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, hashtagTime) posts, nErr = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, hashtagTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2230,8 +2230,8 @@ func TestImportimportMultiplePostLines(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 5, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 5, team.Id)
// Check the post values. // Check the post values.
posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, flagsTime) posts, nErr = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, flagsTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2269,8 +2269,8 @@ func TestImportimportMultiplePostLines(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 6, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 6, team.Id)
// Check the post values. // Check the post values.
posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, reactionPostTime) posts, nErr = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, reactionPostTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2310,8 +2310,8 @@ func TestImportimportMultiplePostLines(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 8, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 8, team.Id)
// Check the post values. // Check the post values.
posts, err = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, replyPostTime) posts, nErr = th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, replyPostTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2320,8 +2320,8 @@ func TestImportimportMultiplePostLines(t *testing.T) {
require.False(t, postBool, "Post properties not as expected") require.False(t, postBool, "Post properties not as expected")
// Check the reply values. // Check the reply values.
replies, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, replyTime) replies, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, replyTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, replies, 1, "Unexpected number of posts found.") require.Len(t, replies, 1, "Unexpected number of posts found.")
@@ -2447,8 +2447,8 @@ func TestImportImportPost(t *testing.T) {
require.Nil(t, appErr, "Failed to get user from database.") require.Nil(t, appErr, "Failed to get user from database.")
// Count the number of posts in the testing team. // Count the number of posts in the testing team.
initialPostCount, appErr := th.App.Srv().Store.Post().AnalyticsPostCount(team.Id, false, false) initialPostCount, nErr := th.App.Srv().Store.Post().AnalyticsPostCount(team.Id, false, false)
require.Nil(t, appErr) require.Nil(t, nErr)
time := model.GetMillis() time := model.GetMillis()
hashtagTime := time + 2 hashtagTime := time + 2
@@ -2585,8 +2585,8 @@ func TestImportImportPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id)
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, time) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, time)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2614,8 +2614,8 @@ func TestImportImportPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 1, team.Id)
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, time) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, time)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2681,8 +2681,8 @@ func TestImportImportPost(t *testing.T) {
assert.Equal(t, 0, errLine) assert.Equal(t, 0, errLine)
AssertAllPostsCount(t, th.App, initialPostCount, 4, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 4, team.Id)
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, hashtagTime) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, hashtagTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2719,8 +2719,8 @@ func TestImportImportPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 5, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 5, team.Id)
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, flagsTime) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, flagsTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2759,8 +2759,8 @@ func TestImportImportPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 6, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 6, team.Id)
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, reactionPostTime) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, reactionPostTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2799,8 +2799,8 @@ func TestImportImportPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 8, team.Id) AssertAllPostsCount(t, th.App, initialPostCount, 8, team.Id)
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, replyPostTime) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, replyPostTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -2809,8 +2809,8 @@ func TestImportImportPost(t *testing.T) {
require.False(t, postBool, "Post properties not as expected") require.False(t, postBool, "Post properties not as expected")
// Check the reply values. // Check the reply values.
replies, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, replyTime) replies, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, replyTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, replies, 1, "Unexpected number of posts found.") require.Len(t, replies, 1, "Unexpected number of posts found.")
@@ -3087,8 +3087,8 @@ func TestImportImportDirectPost(t *testing.T) {
directChannel = channel directChannel = channel
// Get the number of posts in the system. // Get the number of posts in the system.
result, appErr := th.App.Srv().Store.Post().AnalyticsPostCount("", false, false) result, err := th.App.Srv().Store.Post().AnalyticsPostCount("", false, false)
require.Nil(t, appErr) require.Nil(t, err)
initialPostCount := result initialPostCount := result
initialDate := model.GetMillis() initialDate := model.GetMillis()
@@ -3175,8 +3175,8 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, "") AssertAllPostsCount(t, th.App, initialPostCount, 1, "")
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.DirectPost.CreateAt) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.DirectPost.CreateAt)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1) require.Len(t, posts, 1)
post := posts[0] post := posts[0]
@@ -3206,8 +3206,8 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, "") AssertAllPostsCount(t, th.App, initialPostCount, 1, "")
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.DirectPost.CreateAt) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.DirectPost.CreateAt)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1) require.Len(t, posts, 1)
post := posts[0] post := posts[0]
@@ -3278,8 +3278,8 @@ func TestImportImportDirectPost(t *testing.T) {
require.Equal(t, 0, errLine) require.Equal(t, 0, errLine)
AssertAllPostsCount(t, th.App, initialPostCount, 4, "") AssertAllPostsCount(t, th.App, initialPostCount, 4, "")
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.DirectPost.CreateAt) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.DirectPost.CreateAt)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1) require.Len(t, posts, 1)
post := posts[0] post := posts[0]
@@ -3314,8 +3314,8 @@ func TestImportImportDirectPost(t *testing.T) {
require.Equal(t, 0, errLine) require.Equal(t, 0, errLine)
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.DirectPost.CreateAt) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(directChannel.Id, *data.DirectPost.CreateAt)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1) require.Len(t, posts, 1)
post := posts[0] post := posts[0]
@@ -3349,8 +3349,8 @@ func TestImportImportDirectPost(t *testing.T) {
groupChannel = channel groupChannel = channel
// Get the number of posts in the system. // Get the number of posts in the system.
result, appErr = th.App.Srv().Store.Post().AnalyticsPostCount("", false, false) result, nErr := th.App.Srv().Store.Post().AnalyticsPostCount("", false, false)
require.Nil(t, appErr) require.Nil(t, nErr)
initialPostCount = result initialPostCount = result
t.Run("Try adding an invalid post in dry run mode", func(t *testing.T) { t.Run("Try adding an invalid post in dry run mode", func(t *testing.T) {
@@ -3441,8 +3441,8 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, "") AssertAllPostsCount(t, th.App, initialPostCount, 1, "")
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1) require.Len(t, posts, 1)
post := posts[0] post := posts[0]
@@ -3473,8 +3473,8 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 1, "") AssertAllPostsCount(t, th.App, initialPostCount, 1, "")
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1) require.Len(t, posts, 1)
post := posts[0] post := posts[0]
@@ -3548,8 +3548,8 @@ func TestImportImportDirectPost(t *testing.T) {
require.Equal(t, 0, errLine) require.Equal(t, 0, errLine)
AssertAllPostsCount(t, th.App, initialPostCount, 4, "") AssertAllPostsCount(t, th.App, initialPostCount, 4, "")
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1) require.Len(t, posts, 1)
post := posts[0] post := posts[0]
@@ -3587,8 +3587,8 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 5, "") AssertAllPostsCount(t, th.App, initialPostCount, 5, "")
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1) require.Len(t, posts, 1)
post := posts[0] post := posts[0]
@@ -3626,8 +3626,8 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 6, "") AssertAllPostsCount(t, th.App, initialPostCount, 6, "")
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -3671,8 +3671,8 @@ func TestImportImportDirectPost(t *testing.T) {
AssertAllPostsCount(t, th.App, initialPostCount, 8, "") AssertAllPostsCount(t, th.App, initialPostCount, 8, "")
// Check the post values. // Check the post values.
posts, err := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt) posts, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(groupChannel.Id, *data.DirectPost.CreateAt)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, posts, 1, "Unexpected number of posts found.") require.Len(t, posts, 1, "Unexpected number of posts found.")
@@ -3681,8 +3681,8 @@ func TestImportImportDirectPost(t *testing.T) {
require.False(t, postBool, "Post properties not as expected") require.False(t, postBool, "Post properties not as expected")
// Check the reply values. // Check the reply values.
replies, err := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *replyTime) replies, nErr := th.App.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *replyTime)
require.Nil(t, err) require.Nil(t, nErr)
require.Len(t, replies, 1, "Unexpected number of posts found.") require.Len(t, replies, 1, "Unexpected number of posts found.")

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

@@ -365,7 +365,7 @@ func (a *App) attachFilesToPost(post *model.Post) *model.AppError {
post.FileIds = attachedIds post.FileIds = attachedIds
if _, err := a.Srv().Store.Post().Overwrite(post); err != nil { if _, err := a.Srv().Store.Post().Overwrite(post); err != nil {
return err return model.NewAppError("attachFilesToPost", "app.post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
} }
@@ -669,11 +669,33 @@ func (a *App) PatchPost(postId string, patch *model.PostPatch) (*model.Post, *mo
} }
func (a *App) GetPostsPage(options model.GetPostsOptions) (*model.PostList, *model.AppError) { func (a *App) GetPostsPage(options model.GetPostsOptions) (*model.PostList, *model.AppError) {
return a.Srv().Store.Post().GetPosts(options, false) postList, err := a.Srv().Store.Post().GetPosts(options, false)
if err != nil {
var invErr *store.ErrInvalidInput
switch {
case errors.As(err, &invErr):
return nil, model.NewAppError("GetPostsPage", "app.post.get_posts.app_error", nil, invErr.Error(), http.StatusBadRequest)
default:
return nil, model.NewAppError("GetPostsPage", "app.post.get_root_posts.app_error", nil, err.Error(), http.StatusInternalServerError)
}
}
return postList, nil
} }
func (a *App) GetPosts(channelId string, offset int, limit int) (*model.PostList, *model.AppError) { func (a *App) GetPosts(channelId string, offset int, limit int) (*model.PostList, *model.AppError) {
return a.Srv().Store.Post().GetPosts(model.GetPostsOptions{ChannelId: channelId, Page: offset, PerPage: limit}, true) postList, err := a.Srv().Store.Post().GetPosts(model.GetPostsOptions{ChannelId: channelId, Page: offset, PerPage: limit}, true)
if err != nil {
var invErr *store.ErrInvalidInput
switch {
case errors.As(err, &invErr):
return nil, model.NewAppError("GetPosts", "app.post.get_posts.app_error", nil, invErr.Error(), http.StatusBadRequest)
default:
return nil, model.NewAppError("GetPosts", "app.post.get_root_posts.app_error", nil, err.Error(), http.StatusInternalServerError)
}
}
return postList, nil
} }
func (a *App) GetPostsEtag(channelId string) string { func (a *App) GetPostsEtag(channelId string) string {
@@ -1085,7 +1107,7 @@ func (a *App) searchPostsInTeam(teamId string, userId string, paramsList []*mode
go func(params *model.SearchParams) { go func(params *model.SearchParams) {
defer wg.Done() defer wg.Done()
postList, err := a.Srv().Store.Post().Search(teamId, userId, params) postList, err := a.Srv().Store.Post().Search(teamId, userId, params)
pchan <- store.StoreResult{Data: postList, Err: err} pchan <- store.StoreResult{Data: postList, NErr: err}
}(params) }(params)
} }
@@ -1095,8 +1117,8 @@ func (a *App) searchPostsInTeam(teamId string, userId string, paramsList []*mode
posts := model.NewPostList() posts := model.NewPostList()
for result := range pchan { for result := range pchan {
if result.Err != nil { if result.NErr != nil {
return nil, result.Err return nil, model.NewAppError("searchPostsInTeam", "app.post.search.app_error", nil, result.NErr.Error(), http.StatusInternalServerError)
} }
data := result.Data.(*model.PostList) data := result.Data.(*model.PostList)
posts.Extend(data) posts.Extend(data)
@@ -1140,7 +1162,6 @@ func (a *App) SearchPostsInTeam(teamId string, paramsList []*model.SearchParams)
func (a *App) SearchPostsInTeamForUser(terms string, userId string, teamId string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.PostSearchResults, *model.AppError) { func (a *App) SearchPostsInTeamForUser(terms string, userId string, teamId string, isOrSearch bool, includeDeletedChannels bool, timeZoneOffset int, page, perPage int) (*model.PostSearchResults, *model.AppError) {
var postSearchResults *model.PostSearchResults var postSearchResults *model.PostSearchResults
var err *model.AppError
paramsList := model.ParseSearchParams(strings.TrimSpace(terms), timeZoneOffset) paramsList := model.ParseSearchParams(strings.TrimSpace(terms), timeZoneOffset)
includeDeleted := includeDeletedChannels && *a.Config().TeamSettings.ExperimentalViewArchivedChannels includeDeleted := includeDeletedChannels && *a.Config().TeamSettings.ExperimentalViewArchivedChannels
@@ -1172,9 +1193,15 @@ func (a *App) SearchPostsInTeamForUser(terms string, userId string, teamId strin
return model.MakePostSearchResults(model.NewPostList(), nil), nil return model.MakePostSearchResults(model.NewPostList(), nil), nil
} }
postSearchResults, err = a.Srv().Store.Post().SearchPostsInTeamForUser(finalParamsList, userId, teamId, page, perPage) postSearchResults, nErr := a.Srv().Store.Post().SearchPostsInTeamForUser(finalParamsList, userId, teamId, page, perPage)
if err != nil { if nErr != nil {
return nil, err var appErr *model.AppError
switch {
case errors.As(nErr, &appErr):
return nil, appErr
default:
return nil, model.NewAppError("SearchPostsInTeamForUser", "app.post.search.app_error", nil, nErr.Error(), http.StatusInternalServerError)
}
} }
return postSearchResults, nil return postSearchResults, nil

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

@@ -4,20 +4,21 @@
package app package app
import ( import (
"github.com/mattermost/mattermost-server/v5/store"
"net/http" "net/http"
"reflect" "reflect"
"strconv" "strconv"
"strings" "strings"
"time" "time"
"github.com/mattermost/mattermost-server/v5/store"
"github.com/Masterminds/semver/v3" "github.com/Masterminds/semver/v3"
"github.com/mattermost/mattermost-server/v5/config" "github.com/mattermost/mattermost-server/v5/config"
"github.com/mattermost/mattermost-server/v5/mlog" "github.com/mattermost/mattermost-server/v5/mlog"
"github.com/mattermost/mattermost-server/v5/model" "github.com/mattermost/mattermost-server/v5/model"
"github.com/mattermost/mattermost-server/v5/utils" "github.com/mattermost/mattermost-server/v5/utils"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/reflog/dateconstraints" date_constraints "github.com/reflog/dateconstraints"
) )
const MAX_REPEAT_VIEWINGS = 3 const MAX_REPEAT_VIEWINGS = 3
@@ -274,9 +275,9 @@ func (a *App) UpdateProductNotices() *model.AppError {
} }
mlog.Debug("Will fetch notices from", mlog.String("url", NOTICES_JSON_URL), mlog.Bool("skip_cache", skip)) mlog.Debug("Will fetch notices from", mlog.String("url", NOTICES_JSON_URL), mlog.Bool("skip_cache", skip))
var appErr *model.AppError var appErr *model.AppError
cachedPostCount, appErr = a.Srv().Store.Post().AnalyticsPostCount("", false, false) cachedPostCount, err = a.Srv().Store.Post().AnalyticsPostCount("", false, false)
if appErr != nil { if err != nil {
mlog.Error("Failed to fetch post count", mlog.String("error", appErr.Error())) mlog.Error("Failed to fetch post count", mlog.String("error", err.Error()))
} }
cachedUserCount, appErr = a.Srv().Store.User().Count(model.UserCountOptions{IncludeDeleted: true}) cachedUserCount, appErr = a.Srv().Store.User().Count(model.UserCountOptions{IncludeDeleted: true})

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

@@ -4566,6 +4566,18 @@
"id": "app.plugin_store.save.app_error", "id": "app.plugin_store.save.app_error",
"translation": "Could not save or update plugin key value." "translation": "Could not save or update plugin key value."
}, },
{
"id": "app.post.analytics_posts_count.app_error",
"translation": "Unable to get post counts."
},
{
"id": "app.post.analytics_posts_count_by_day.app_error",
"translation": "Unable to get post counts by day."
},
{
"id": "app.post.analytics_user_counts_posts_by_day.app_error",
"translation": "Unable to get user counts with posts."
},
{ {
"id": "app.post.delete.app_error", "id": "app.post.delete.app_error",
"translation": "Unable to delete the post." "translation": "Unable to delete the post."
@@ -4574,6 +4586,10 @@
"id": "app.post.get.app_error", "id": "app.post.get.app_error",
"translation": "Unable to get the post." "translation": "Unable to get the post."
}, },
{
"id": "app.post.get_direct_posts.app_error",
"translation": "Unable to get direct posts."
},
{ {
"id": "app.post.get_flagged_posts.app_error", "id": "app.post.get_flagged_posts.app_error",
"translation": "Unable to get the flagged posts." "translation": "Unable to get the flagged posts."
@@ -4586,14 +4602,34 @@
"id": "app.post.get_post_id_around.app_error", "id": "app.post.get_post_id_around.app_error",
"translation": "Unable to get post around time bound." "translation": "Unable to get post around time bound."
}, },
{
"id": "app.post.get_posts.app_error",
"translation": "Limit exceeded for paging."
},
{ {
"id": "app.post.get_posts_around.get.app_error", "id": "app.post.get_posts_around.get.app_error",
"translation": "Unable to get the posts for the channel." "translation": "Unable to get the posts for the channel."
}, },
{
"id": "app.post.get_posts_batch_for_indexing.get.app_error",
"translation": "Unable to get the posts batch for indexing."
},
{
"id": "app.post.get_posts_created_at.app_error",
"translation": "Unable to get the posts for the channel."
},
{ {
"id": "app.post.get_posts_since.app_error", "id": "app.post.get_posts_since.app_error",
"translation": "Unable to get the posts for the channel." "translation": "Unable to get the posts for the channel."
}, },
{
"id": "app.post.get_root_posts.app_error",
"translation": "Unable to get the posts for the channel."
},
{
"id": "app.post.overwrite.app_error",
"translation": "Unable to overwrite the Post."
},
{ {
"id": "app.post.permanent_delete_by_channel.app_error", "id": "app.post.permanent_delete_by_channel.app_error",
"translation": "Unable to delete the posts by channel." "translation": "Unable to delete the posts by channel."
@@ -4610,6 +4646,10 @@
"id": "app.post.save.existing.app_error", "id": "app.post.save.existing.app_error",
"translation": "You cannot update an existing Post." "translation": "You cannot update an existing Post."
}, },
{
"id": "app.post.search.app_error",
"translation": "Error searching posts"
},
{ {
"id": "app.post.update.app_error", "id": "app.post.update.app_error",
"translation": "Unable to update the Post." "translation": "Unable to update the Post."
@@ -5490,6 +5530,10 @@
"id": "ent.data_retention.generic.license.error", "id": "ent.data_retention.generic.license.error",
"translation": "Your license does not support Data Retention." "translation": "Your license does not support Data Retention."
}, },
{
"id": "ent.data_retention.posts_permanent_delete_batch.internal_error",
"translation": "We encountered an error permanently deleting the batch of posts."
},
{ {
"id": "ent.data_retention.reactions_batch.internal_error", "id": "ent.data_retention.reactions_batch.internal_error",
"translation": "We encountered an error permanently deleting the batch of reactions." "translation": "We encountered an error permanently deleting the batch of reactions."
@@ -5590,6 +5634,10 @@
"id": "ent.elasticsearch.not_started.error", "id": "ent.elasticsearch.not_started.error",
"translation": "Elasticsearch is not started" "translation": "Elasticsearch is not started"
}, },
{
"id": "ent.elasticsearch.post.get_posts_batch_for_indexing.error",
"translation": "Unable to get the posts batch for indexing."
},
{ {
"id": "ent.elasticsearch.purge_indexes.delete_failed", "id": "ent.elasticsearch.purge_indexes.delete_failed",
"translation": "Failed to delete Elasticsearch index" "translation": "Failed to delete Elasticsearch index"
@@ -7658,66 +7706,6 @@
"id": "store.sql_group.uniqueness_error", "id": "store.sql_group.uniqueness_error",
"translation": "group member already exists" "translation": "group member already exists"
}, },
{
"id": "store.sql_post.analytics_posts_count.app_error",
"translation": "Unable to get post counts."
},
{
"id": "store.sql_post.analytics_posts_count_by_day.app_error",
"translation": "Unable to get post counts by day."
},
{
"id": "store.sql_post.analytics_user_counts_posts_by_day.app_error",
"translation": "Unable to get user counts with posts."
},
{
"id": "store.sql_post.get_direct_posts.app_error",
"translation": "Unable to get direct posts."
},
{
"id": "store.sql_post.get_oldest_entity_creation_time.app_error",
"translation": "Unable to get the oldest entitiy creation time."
},
{
"id": "store.sql_post.get_parents_posts.app_error",
"translation": "Unable to get the parent post for the channel."
},
{
"id": "store.sql_post.get_posts.app_error",
"translation": "Limit exceeded for paging."
},
{
"id": "store.sql_post.get_posts_batch_for_indexing.get.app_error",
"translation": "Unable to get the posts batch for indexing."
},
{
"id": "store.sql_post.get_posts_by_ids.app_error",
"translation": "Unable to get the posts."
},
{
"id": "store.sql_post.get_posts_created_att.app_error",
"translation": "Unable to get the posts for the channel."
},
{
"id": "store.sql_post.get_root_posts.app_error",
"translation": "Unable to get the posts for the channel."
},
{
"id": "store.sql_post.overwrite.app_error",
"translation": "Unable to overwrite the Post."
},
{
"id": "store.sql_post.permanent_delete_batch.app_error",
"translation": "We encountered an error permanently deleting the batch of posts."
},
{
"id": "store.sql_post.populate_reply_count.app_error",
"translation": "Unable to get the post replies count"
},
{
"id": "store.sql_post.search.app_error",
"translation": "Error searching posts"
},
{ {
"id": "store.sql_post.search.disabled", "id": "store.sql_post.search.disabled",
"translation": "Searching has been disabled on this server. Please contact your System Administrator." "translation": "Searching has been disabled on this server. Please contact your System Administrator."

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

@@ -283,11 +283,11 @@ func (worker *BleveIndexerWorker) IndexPostsBatch(progress IndexingProgress) (In
tries := 0 tries := 0
for posts == nil { for posts == nil {
var err *model.AppError var err error
posts, err = worker.jobServer.Store.Post().GetPostsBatchForIndexing(progress.LastEntityTime, endTime, BATCH_SIZE) posts, err = worker.jobServer.Store.Post().GetPostsBatchForIndexing(progress.LastEntityTime, endTime, BATCH_SIZE)
if err != nil { if err != nil {
if tries >= 10 { if tries >= 10 {
return progress, err return progress, model.NewAppError("IndexPostsBatch", "app.post.get_posts_batch_for_indexing.get.app_error", nil, err.Error(), http.StatusInternalServerError)
} else { } else {
mlog.Warn("Failed to get posts batch for indexing. Retrying.", mlog.Err(err)) mlog.Warn("Failed to get posts batch for indexing. Retrying.", mlog.Err(err))

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

@@ -105,7 +105,7 @@ func (s LocalCachePostStore) GetPostsSince(options model.GetPostsSinceOptions, a
return list, err return list, err
} }
func (s LocalCachePostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, *model.AppError) { func (s LocalCachePostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, error) {
if !allowFromCache { if !allowFromCache {
return s.PostStore.GetPosts(options, allowFromCache) return s.PostStore.GetPosts(options, allowFromCache)
} }

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

@@ -4713,7 +4713,7 @@ func (s *OpenTracingLayerPluginStore) SetWithOptions(pluginId string, key string
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, *model.AppError) { func (s *OpenTracingLayerPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.AnalyticsPostCount") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.AnalyticsPostCount")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -4731,7 +4731,7 @@ func (s *OpenTracingLayerPostStore) AnalyticsPostCount(teamId string, mustHaveFi
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, *model.AppError) { func (s *OpenTracingLayerPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.AnalyticsPostCountsByDay") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.AnalyticsPostCountsByDay")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -4749,7 +4749,7 @@ func (s *OpenTracingLayerPostStore) AnalyticsPostCountsByDay(options *model.Anal
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, *model.AppError) { func (s *OpenTracingLayerPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.AnalyticsUserCountsWithPostsByDay") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.AnalyticsUserCountsWithPostsByDay")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -4816,7 +4816,7 @@ func (s *OpenTracingLayerPostStore) Get(id string, skipFetchThreads bool) (*mode
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, *model.AppError) { func (s *OpenTracingLayerPostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetDirectPostParentsForExportAfter") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetDirectPostParentsForExportAfter")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -4922,7 +4922,7 @@ func (s *OpenTracingLayerPostStore) GetMaxPostSize() int {
return result return result
} }
func (s *OpenTracingLayerPostStore) GetOldest() (*model.Post, *model.AppError) { func (s *OpenTracingLayerPostStore) GetOldest() (*model.Post, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetOldest") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetOldest")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -4940,7 +4940,7 @@ func (s *OpenTracingLayerPostStore) GetOldest() (*model.Post, *model.AppError) {
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) GetOldestEntityCreationTime() (int64, *model.AppError) { func (s *OpenTracingLayerPostStore) GetOldestEntityCreationTime() (int64, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetOldestEntityCreationTime") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetOldestEntityCreationTime")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -4958,7 +4958,7 @@ func (s *OpenTracingLayerPostStore) GetOldestEntityCreationTime() (int64, *model
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, *model.AppError) { func (s *OpenTracingLayerPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetParentsForExportAfter") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetParentsForExportAfter")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -5030,7 +5030,7 @@ func (s *OpenTracingLayerPostStore) GetPostIdBeforeTime(channelId string, time i
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, *model.AppError) { func (s *OpenTracingLayerPostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetPosts") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetPosts")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -5066,7 +5066,7 @@ func (s *OpenTracingLayerPostStore) GetPostsAfter(options model.GetPostsOptions)
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, *model.AppError) { func (s *OpenTracingLayerPostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetPostsBatchForIndexing") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetPostsBatchForIndexing")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -5102,7 +5102,7 @@ func (s *OpenTracingLayerPostStore) GetPostsBefore(options model.GetPostsOptions
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) GetPostsByIds(postIds []string) ([]*model.Post, *model.AppError) { func (s *OpenTracingLayerPostStore) GetPostsByIds(postIds []string) ([]*model.Post, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetPostsByIds") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetPostsByIds")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -5120,7 +5120,7 @@ func (s *OpenTracingLayerPostStore) GetPostsByIds(postIds []string) ([]*model.Po
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, *model.AppError) { func (s *OpenTracingLayerPostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetPostsCreatedAt") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetPostsCreatedAt")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -5156,7 +5156,7 @@ func (s *OpenTracingLayerPostStore) GetPostsSince(options model.GetPostsSinceOpt
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, *model.AppError) { func (s *OpenTracingLayerPostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetRepliesForExport") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetRepliesForExport")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -5205,7 +5205,7 @@ func (s *OpenTracingLayerPostStore) InvalidateLastPostTimeCache(channelId string
} }
func (s *OpenTracingLayerPostStore) Overwrite(post *model.Post) (*model.Post, *model.AppError) { func (s *OpenTracingLayerPostStore) Overwrite(post *model.Post) (*model.Post, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.Overwrite") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.Overwrite")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -5223,7 +5223,7 @@ func (s *OpenTracingLayerPostStore) Overwrite(post *model.Post) (*model.Post, *m
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError) { func (s *OpenTracingLayerPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.OverwriteMultiple") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.OverwriteMultiple")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -5241,7 +5241,7 @@ func (s *OpenTracingLayerPostStore) OverwriteMultiple(posts []*model.Post) ([]*m
return result, resultVar1, err return result, resultVar1, err
} }
func (s *OpenTracingLayerPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, *model.AppError) { func (s *OpenTracingLayerPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.PermanentDeleteBatch") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.PermanentDeleteBatch")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -5331,7 +5331,7 @@ func (s *OpenTracingLayerPostStore) SaveMultiple(posts []*model.Post) ([]*model.
return result, resultVar1, err return result, resultVar1, err
} }
func (s *OpenTracingLayerPostStore) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, *model.AppError) { func (s *OpenTracingLayerPostStore) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.Search") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.Search")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)
@@ -5349,7 +5349,7 @@ func (s *OpenTracingLayerPostStore) Search(teamId string, userId string, params
return result, err return result, err
} }
func (s *OpenTracingLayerPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId string, teamId string, page int, perPage int) (*model.PostSearchResults, *model.AppError) { func (s *OpenTracingLayerPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId string, teamId string, page int, perPage int) (*model.PostSearchResults, error) {
origCtx := s.Root.Store.Context() origCtx := s.Root.Store.Context()
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.SearchPostsInTeamForUser") span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.SearchPostsInTeamForUser")
s.Root.Store.SetContext(newCtx) s.Root.Store.SetContext(newCtx)

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

@@ -4070,21 +4070,63 @@ func (s *RetryLayerPluginStore) SetWithOptions(pluginId string, key string, valu
} }
func (s *RetryLayerPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, *model.AppError) { func (s *RetryLayerPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, error) {
return s.PostStore.AnalyticsPostCount(teamId, mustHaveFile, mustHaveHashtag) tries := 0
for {
result, err := s.PostStore.AnalyticsPostCount(teamId, mustHaveFile, mustHaveHashtag)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
func (s *RetryLayerPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, *model.AppError) { func (s *RetryLayerPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, error) {
return s.PostStore.AnalyticsPostCountsByDay(options) tries := 0
for {
result, err := s.PostStore.AnalyticsPostCountsByDay(options)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
func (s *RetryLayerPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, *model.AppError) { func (s *RetryLayerPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, error) {
return s.PostStore.AnalyticsUserCountsWithPostsByDay(teamId) tries := 0
for {
result, err := s.PostStore.AnalyticsUserCountsWithPostsByDay(teamId)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
@@ -4134,9 +4176,23 @@ func (s *RetryLayerPostStore) Get(id string, skipFetchThreads bool) (*model.Post
} }
func (s *RetryLayerPostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, *model.AppError) { func (s *RetryLayerPostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, error) {
return s.PostStore.GetDirectPostParentsForExportAfter(limit, afterId) tries := 0
for {
result, err := s.PostStore.GetDirectPostParentsForExportAfter(limit, afterId)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
@@ -4212,21 +4268,63 @@ func (s *RetryLayerPostStore) GetMaxPostSize() int {
} }
func (s *RetryLayerPostStore) GetOldest() (*model.Post, *model.AppError) { func (s *RetryLayerPostStore) GetOldest() (*model.Post, error) {
return s.PostStore.GetOldest() tries := 0
for {
result, err := s.PostStore.GetOldest()
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
func (s *RetryLayerPostStore) GetOldestEntityCreationTime() (int64, *model.AppError) { func (s *RetryLayerPostStore) GetOldestEntityCreationTime() (int64, error) {
return s.PostStore.GetOldestEntityCreationTime() tries := 0
for {
result, err := s.PostStore.GetOldestEntityCreationTime()
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
func (s *RetryLayerPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, *model.AppError) { func (s *RetryLayerPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, error) {
return s.PostStore.GetParentsForExportAfter(limit, afterId) tries := 0
for {
result, err := s.PostStore.GetParentsForExportAfter(limit, afterId)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
@@ -4290,9 +4388,23 @@ func (s *RetryLayerPostStore) GetPostIdBeforeTime(channelId string, time int64)
} }
func (s *RetryLayerPostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, *model.AppError) { func (s *RetryLayerPostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, error) {
return s.PostStore.GetPosts(options, allowFromCache) tries := 0
for {
result, err := s.PostStore.GetPosts(options, allowFromCache)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
@@ -4316,9 +4428,23 @@ func (s *RetryLayerPostStore) GetPostsAfter(options model.GetPostsOptions) (*mod
} }
func (s *RetryLayerPostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, *model.AppError) { func (s *RetryLayerPostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, error) {
return s.PostStore.GetPostsBatchForIndexing(startTime, endTime, limit) tries := 0
for {
result, err := s.PostStore.GetPostsBatchForIndexing(startTime, endTime, limit)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
@@ -4342,15 +4468,43 @@ func (s *RetryLayerPostStore) GetPostsBefore(options model.GetPostsOptions) (*mo
} }
func (s *RetryLayerPostStore) GetPostsByIds(postIds []string) ([]*model.Post, *model.AppError) { func (s *RetryLayerPostStore) GetPostsByIds(postIds []string) ([]*model.Post, error) {
return s.PostStore.GetPostsByIds(postIds) tries := 0
for {
result, err := s.PostStore.GetPostsByIds(postIds)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
func (s *RetryLayerPostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, *model.AppError) { func (s *RetryLayerPostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, error) {
return s.PostStore.GetPostsCreatedAt(channelId, time) tries := 0
for {
result, err := s.PostStore.GetPostsCreatedAt(channelId, time)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
@@ -4374,9 +4528,23 @@ func (s *RetryLayerPostStore) GetPostsSince(options model.GetPostsSinceOptions,
} }
func (s *RetryLayerPostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, *model.AppError) { func (s *RetryLayerPostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, error) {
return s.PostStore.GetRepliesForExport(parentId) tries := 0
for {
result, err := s.PostStore.GetRepliesForExport(parentId)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
@@ -4406,21 +4574,63 @@ func (s *RetryLayerPostStore) InvalidateLastPostTimeCache(channelId string) {
} }
func (s *RetryLayerPostStore) Overwrite(post *model.Post) (*model.Post, *model.AppError) { func (s *RetryLayerPostStore) Overwrite(post *model.Post) (*model.Post, error) {
return s.PostStore.Overwrite(post) tries := 0
for {
result, err := s.PostStore.Overwrite(post)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
func (s *RetryLayerPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError) { func (s *RetryLayerPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, error) {
return s.PostStore.OverwriteMultiple(posts) tries := 0
for {
result, resultVar1, err := s.PostStore.OverwriteMultiple(posts)
if err == nil {
return result, resultVar1, nil
}
if !isRepeatableError(err) {
return result, resultVar1, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, resultVar1, err
}
}
} }
func (s *RetryLayerPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, *model.AppError) { func (s *RetryLayerPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) {
return s.PostStore.PermanentDeleteBatch(endTime, limit) tries := 0
for {
result, err := s.PostStore.PermanentDeleteBatch(endTime, limit)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
@@ -4504,15 +4714,43 @@ func (s *RetryLayerPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post,
} }
func (s *RetryLayerPostStore) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, *model.AppError) { func (s *RetryLayerPostStore) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, error) {
return s.PostStore.Search(teamId, userId, params) tries := 0
for {
result, err := s.PostStore.Search(teamId, userId, params)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }
func (s *RetryLayerPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId string, teamId string, page int, perPage int) (*model.PostSearchResults, *model.AppError) { func (s *RetryLayerPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId string, teamId string, page int, perPage int) (*model.PostSearchResults, error) {
return s.PostStore.SearchPostsInTeamForUser(paramsList, userId, teamId, page, perPage) tries := 0
for {
result, err := s.PostStore.SearchPostsInTeamForUser(paramsList, userId, teamId, page, perPage)
if err == nil {
return result, nil
}
if !isRepeatableError(err) {
return result, err
}
tries++
if tries >= 3 {
err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures")
return result, err
}
}
} }

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

@@ -84,7 +84,7 @@ func (s SearchPostStore) Update(newPost, oldPost *model.Post) (*model.Post, erro
return post, err return post, err
} }
func (s *SearchPostStore) Overwrite(post *model.Post) (*model.Post, *model.AppError) { func (s *SearchPostStore) Overwrite(post *model.Post) (*model.Post, error) {
post, err := s.PostStore.Overwrite(post) post, err := s.PostStore.Overwrite(post)
if err == nil { if err == nil {
s.indexPost(post) s.indexPost(post)
@@ -131,7 +131,7 @@ func (s SearchPostStore) PermanentDeleteByChannel(channelID string) error {
return err return err
} }
func (s SearchPostStore) searchPostsInTeamForUserByEngine(engine searchengine.SearchEngineInterface, paramsList []*model.SearchParams, userId, teamId string, page, perPage int) (*model.PostSearchResults, *model.AppError) { func (s SearchPostStore) searchPostsInTeamForUserByEngine(engine searchengine.SearchEngineInterface, paramsList []*model.SearchParams, userId, teamId string, page, perPage int) (*model.PostSearchResults, error) {
if err := model.IsSearchParamsListValid(paramsList); err != nil { if err := model.IsSearchParamsListValid(paramsList); err != nil {
return nil, err return nil, err
} }
@@ -173,7 +173,7 @@ func (s SearchPostStore) searchPostsInTeamForUserByEngine(engine searchengine.Se
return model.MakePostSearchResults(postList, matches), nil return model.MakePostSearchResults(postList, matches), nil
} }
func (s SearchPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId, teamId string, page, perPage int) (*model.PostSearchResults, *model.AppError) { func (s SearchPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId, teamId string, page, perPage int) (*model.PostSearchResults, error) {
for _, engine := range s.rootStore.searchEngine.GetActiveEngines() { for _, engine := range s.rootStore.searchEngine.GetActiveEngines() {
if engine.IsSearchEnabled() { if engine.IsSearchEnabled() {
results, err := s.searchPostsInTeamForUserByEngine(engine, paramsList, userId, teamId, page, perPage) results, err := s.searchPostsInTeamForUserByEngine(engine, paramsList, userId, teamId, page, perPage)

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

@@ -6,7 +6,6 @@ package sqlstore
import ( import (
"database/sql" "database/sql"
"fmt" "fmt"
"net/http"
"regexp" "regexp"
"strconv" "strconv"
"strings" "strings"
@@ -14,9 +13,9 @@ import (
"github.com/mattermost/mattermost-server/v5/store/searchlayer" "github.com/mattermost/mattermost-server/v5/store/searchlayer"
sq "github.com/Masterminds/squirrel"
"github.com/pkg/errors" "github.com/pkg/errors"
sq "github.com/Masterminds/squirrel"
"github.com/mattermost/mattermost-server/v5/einterfaces" "github.com/mattermost/mattermost-server/v5/einterfaces"
"github.com/mattermost/mattermost-server/v5/mlog" "github.com/mattermost/mattermost-server/v5/mlog"
"github.com/mattermost/mattermost-server/v5/model" "github.com/mattermost/mattermost-server/v5/model"
@@ -205,7 +204,7 @@ func (s *SqlPostStore) Save(post *model.Post) (*model.Post, error) {
return posts[0], nil return posts[0], nil
} }
func (s *SqlPostStore) populateReplyCount(posts []*model.Post) *model.AppError { func (s *SqlPostStore) populateReplyCount(posts []*model.Post) error {
rootIds := []string{} rootIds := []string{}
for _, post := range posts { for _, post := range posts {
rootIds = append(rootIds, post.RootId) rootIds = append(rootIds, post.RootId)
@@ -218,11 +217,11 @@ func (s *SqlPostStore) populateReplyCount(posts []*model.Post) *model.AppError {
queryString, args, err := query.ToSql() queryString, args, err := query.ToSql()
if err != nil { if err != nil {
return model.NewAppError("SqlPostStore.populateReplyCount", "store.sql_post.populate_reply_count.app_error", nil, err.Error(), http.StatusInternalServerError) return errors.Wrap(err, "post_tosql")
} }
_, err = s.GetMaster().Select(&countList, queryString, args...) _, err = s.GetMaster().Select(&countList, queryString, args...)
if err != nil { if err != nil {
return model.NewAppError("SqlPostStore.populateReplyCount", "store.sql_post.populate_reply_count.app_error", nil, err.Error(), http.StatusInternalServerError) return errors.Wrap(err, "failed to count Posts")
} }
counts := map[string]int64{} counts := map[string]int64{}
@@ -274,7 +273,7 @@ func (s *SqlPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.
return newPost, nil return newPost, nil
} }
func (s *SqlPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError) { func (s *SqlPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, error) {
updateAt := model.GetMillis() updateAt := model.GetMillis()
maxPostSize := s.GetMaxPostSize() maxPostSize := s.GetMaxPostSize()
for idx, post := range posts { for idx, post := range posts {
@@ -286,27 +285,27 @@ func (s *SqlPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, in
tx, err := s.GetMaster().Begin() tx, err := s.GetMaster().Begin()
if err != nil { if err != nil {
return nil, -1, model.NewAppError("SqlPostStore.Overwrite", "store.sql_post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, -1, errors.Wrap(err, "begin_transaction")
} }
for idx, post := range posts { for idx, post := range posts {
if _, err = tx.Update(post); err != nil { if _, err = tx.Update(post); err != nil {
txErr := tx.Rollback() txErr := tx.Rollback()
if txErr != nil { if txErr != nil {
return nil, idx, model.NewAppError("SqlPostStore.Overwrite", "store.sql_post.overwrite.app_error", nil, txErr.Error(), http.StatusInternalServerError) return nil, idx, errors.Wrap(txErr, "rollback_transaction")
} }
return nil, idx, model.NewAppError("SqlPostStore.Overwrite", "store.sql_post.overwrite.app_error", nil, "id="+post.Id+", "+err.Error(), http.StatusInternalServerError) return nil, idx, errors.Wrap(err, "failed to update Post")
} }
} }
err = tx.Commit() err = tx.Commit()
if err != nil { if err != nil {
return nil, -1, model.NewAppError("SqlPostStore.Overwrite", "store.sql_post.overwrite.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, -1, errors.Wrap(err, "commit_transaction")
} }
return posts, -1, nil return posts, -1, nil
} }
func (s *SqlPostStore) Overwrite(post *model.Post) (*model.Post, *model.AppError) { func (s *SqlPostStore) Overwrite(post *model.Post) (*model.Post, error) {
posts, _, err := s.OverwriteMultiple([]*model.Post{post}) posts, _, err := s.OverwriteMultiple([]*model.Post{post})
if err != nil { if err != nil {
return nil, err return nil, err
@@ -558,36 +557,35 @@ func (s *SqlPostStore) PermanentDeleteByChannel(channelId string) error {
return nil return nil
} }
func (s *SqlPostStore) GetPosts(options model.GetPostsOptions, _ bool) (*model.PostList, *model.AppError) { func (s *SqlPostStore) GetPosts(options model.GetPostsOptions, _ bool) (*model.PostList, error) {
if options.PerPage > 1000 { if options.PerPage > 1000 {
return nil, model.NewAppError("SqlPostStore.GetLinearPosts", "store.sql_post.get_posts.app_error", nil, "channelId="+options.ChannelId, http.StatusBadRequest) return nil, store.NewErrInvalidInput("Post", "<options.PerPage>", options.PerPage)
} }
offset := options.PerPage * options.Page offset := options.PerPage * options.Page
rpc := make(chan store.StoreResult, 1) rpc := make(chan store.StoreResult, 1)
go func() { go func() {
posts, err := s.getRootPosts(options.ChannelId, offset, options.PerPage, options.SkipFetchThreads) posts, err := s.getRootPosts(options.ChannelId, offset, options.PerPage, options.SkipFetchThreads)
rpc <- store.StoreResult{Data: posts, Err: err} rpc <- store.StoreResult{Data: posts, NErr: err}
close(rpc) close(rpc)
}() }()
cpc := make(chan store.StoreResult, 1) cpc := make(chan store.StoreResult, 1)
go func() { go func() {
posts, err := s.getParentsPosts(options.ChannelId, offset, options.PerPage, options.SkipFetchThreads) posts, err := s.getParentsPosts(options.ChannelId, offset, options.PerPage, options.SkipFetchThreads)
cpc <- store.StoreResult{Data: posts, Err: err} cpc <- store.StoreResult{Data: posts, NErr: err}
close(cpc) close(cpc)
}() }()
var err *model.AppError
list := model.NewPostList() list := model.NewPostList()
rpr := <-rpc rpr := <-rpc
if rpr.Err != nil { if rpr.NErr != nil {
return nil, rpr.Err return nil, rpr.NErr
} }
cpr := <-cpc cpr := <-cpc
if cpr.Err != nil { if cpr.NErr != nil {
return nil, cpr.Err return nil, cpr.NErr
} }
posts := rpr.Data.([]*model.Post) posts := rpr.Data.([]*model.Post)
@@ -604,7 +602,7 @@ func (s *SqlPostStore) GetPosts(options model.GetPostsOptions, _ bool) (*model.P
list.MakeNonNil() list.MakeNonNil()
return list, err return list, nil
} }
func (s *SqlPostStore) GetPostsSince(options model.GetPostsSinceOptions, allowFromCache bool) (*model.PostList, error) { func (s *SqlPostStore) GetPostsSince(options model.GetPostsSinceOptions, allowFromCache bool) (*model.PostList, error) {
@@ -661,6 +659,7 @@ func (s *SqlPostStore) GetPostsSince(options model.GetPostsSinceOptions, allowFr
ORDER BY CreateAt DESC` ORDER BY CreateAt DESC`
} }
_, err := s.GetReplica().Select(&posts, query, map[string]interface{}{"ChannelId": options.ChannelId, "Time": options.Time}) _, err := s.GetReplica().Select(&posts, query, map[string]interface{}{"ChannelId": options.ChannelId, "Time": options.Time})
if err != nil { if err != nil {
return nil, errors.Wrapf(err, "failed to find Posts with channelId=%s", options.ChannelId) return nil, errors.Wrapf(err, "failed to find Posts with channelId=%s", options.ChannelId)
} }
@@ -892,7 +891,7 @@ func (s *SqlPostStore) GetPostAfterTime(channelId string, time int64) (*model.Po
return post, nil return post, nil
} }
func (s *SqlPostStore) getRootPosts(channelId string, offset int, limit int, skipFetchThreads bool) ([]*model.Post, *model.AppError) { func (s *SqlPostStore) getRootPosts(channelId string, offset int, limit int, skipFetchThreads bool) ([]*model.Post, error) {
var posts []*model.Post var posts []*model.Post
var fetchQuery string var fetchQuery string
if skipFetchThreads { if skipFetchThreads {
@@ -902,12 +901,12 @@ func (s *SqlPostStore) getRootPosts(channelId string, offset int, limit int, ski
} }
_, err := s.GetReplica().Select(&posts, fetchQuery, map[string]interface{}{"ChannelId": channelId, "Offset": offset, "Limit": limit}) _, err := s.GetReplica().Select(&posts, fetchQuery, map[string]interface{}{"ChannelId": channelId, "Offset": offset, "Limit": limit})
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetLinearPosts", "store.sql_post.get_root_posts.app_error", nil, "channelId="+channelId+err.Error(), http.StatusInternalServerError) return nil, errors.Wrap(err, "failed to find Posts")
} }
return posts, nil return posts, nil
} }
func (s *SqlPostStore) getParentsPosts(channelId string, offset int, limit int, skipFetchThreads bool) ([]*model.Post, *model.AppError) { func (s *SqlPostStore) getParentsPosts(channelId string, offset int, limit int, skipFetchThreads bool) ([]*model.Post, error) {
if s.DriverName() == model.DATABASE_DRIVER_POSTGRES { if s.DriverName() == model.DATABASE_DRIVER_POSTGRES {
return s.getParentsPostsPostgreSQL(channelId, offset, limit, skipFetchThreads) return s.getParentsPostsPostgreSQL(channelId, offset, limit, skipFetchThreads)
} }
@@ -933,7 +932,7 @@ func (s *SqlPostStore) getParentsPosts(channelId string, offset int, limit int,
_, err := s.GetReplica().Select(&roots, rootQuery, map[string]interface{}{"ChannelId": channelId, "Offset": offset, "Limit": limit}) _, err := s.GetReplica().Select(&roots, rootQuery, map[string]interface{}{"ChannelId": channelId, "Offset": offset, "Limit": limit})
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetLinearPosts", "store.sql_post.get_parents_posts.app_error", nil, "channelId="+channelId+" err="+err.Error(), http.StatusInternalServerError) return nil, errors.Wrap(err, "failed to find Posts")
} }
if len(roots) == 0 { if len(roots) == 0 {
return nil, nil return nil, nil
@@ -966,12 +965,12 @@ func (s *SqlPostStore) getParentsPosts(channelId string, offset int, limit int,
ORDER BY CreateAt`, ORDER BY CreateAt`,
params) params)
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetLinearPosts", "store.sql_post.get_parents_posts.app_error", nil, "channelId="+channelId+" err="+err.Error(), http.StatusInternalServerError) return nil, errors.Wrap(err, "failed to find Posts")
} }
return posts, nil return posts, nil
} }
func (s *SqlPostStore) getParentsPostsPostgreSQL(channelId string, offset int, limit int, skipFetchThreads bool) ([]*model.Post, *model.AppError) { func (s *SqlPostStore) getParentsPostsPostgreSQL(channelId string, offset int, limit int, skipFetchThreads bool) ([]*model.Post, error) {
var posts []*model.Post var posts []*model.Post
replyCountQuery := "" replyCountQuery := ""
onStatement := "q1.RootId = q2.Id" onStatement := "q1.RootId = q2.Id"
@@ -1005,7 +1004,7 @@ func (s *SqlPostStore) getParentsPostsPostgreSQL(channelId string, offset int, l
ORDER BY CreateAt`, ORDER BY CreateAt`,
map[string]interface{}{"ChannelId1": channelId, "Offset": offset, "Limit": limit, "ChannelId2": channelId}) map[string]interface{}{"ChannelId1": channelId, "Offset": offset, "Limit": limit, "ChannelId2": channelId})
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetLinearPosts", "store.sql_post.get_parents_posts.app_error", nil, "channelId="+channelId+" err="+err.Error(), http.StatusInternalServerError) return nil, errors.Wrapf(err, "failed to find Posts with channelId=%s", channelId)
} }
return posts, nil return posts, nil
} }
@@ -1151,11 +1150,11 @@ func (s *SqlPostStore) buildSearchPostFilterClause(fromUsers []string, excludedU
return filterQuery, queryParams return filterQuery, queryParams
} }
func (s *SqlPostStore) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, *model.AppError) { func (s *SqlPostStore) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, error) {
return s.search(teamId, userId, params, true, true) return s.search(teamId, userId, params, true, true)
} }
func (s *SqlPostStore) search(teamId string, userId string, params *model.SearchParams, channelsByName bool, userByUsername bool) (*model.PostList, *model.AppError) { func (s *SqlPostStore) search(teamId string, userId string, params *model.SearchParams, channelsByName bool, userByUsername bool) (*model.PostList, error) {
queryParams := map[string]interface{}{ queryParams := map[string]interface{}{
"TeamId": teamId, "TeamId": teamId,
"UserId": userId, "UserId": userId,
@@ -1266,7 +1265,7 @@ func (s *SqlPostStore) search(teamId string, userId string, params *model.Search
var err error var err error
terms, err = removeMysqlStopWordsFromTerms(terms) terms, err = removeMysqlStopWordsFromTerms(terms)
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.search", "store.sql_post.search.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, errors.Wrap(err, "failed to remove Mysql stop-words from terms")
} }
if terms == "" { if terms == "" {
@@ -1338,7 +1337,7 @@ func removeMysqlStopWordsFromTerms(terms string) (string, error) {
return strings.Join(newTerms, " "), nil return strings.Join(newTerms, " "), nil
} }
func (s *SqlPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, *model.AppError) { func (s *SqlPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, error) {
query := query :=
`SELECT DISTINCT `SELECT DISTINCT
DATE(FROM_UNIXTIME(Posts.CreateAt / 1000)) AS Name, DATE(FROM_UNIXTIME(Posts.CreateAt / 1000)) AS Name,
@@ -1383,12 +1382,12 @@ func (s *SqlPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.A
query, query,
map[string]interface{}{"TeamId": teamId, "StartTime": start, "EndTime": end}) map[string]interface{}{"TeamId": teamId, "StartTime": start, "EndTime": end})
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.AnalyticsUserCountsWithPostsByDay", "store.sql_post.analytics_user_counts_posts_by_day.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, errors.Wrapf(err, "failed to find Posts with teamId=%s", teamId)
} }
return rows, nil return rows, nil
} }
func (s *SqlPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, *model.AppError) { func (s *SqlPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, error) {
query := query :=
`SELECT `SELECT
@@ -1447,12 +1446,12 @@ func (s *SqlPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCoun
query, query,
map[string]interface{}{"TeamId": options.TeamId, "StartTime": start, "EndTime": end}) map[string]interface{}{"TeamId": options.TeamId, "StartTime": start, "EndTime": end})
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.AnalyticsPostCountsByDay", "store.sql_post.analytics_posts_count_by_day.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, errors.Wrapf(err, "failed to find Posts with teamId=%s", options.TeamId)
} }
return rows, nil return rows, nil
} }
func (s *SqlPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, *model.AppError) { func (s *SqlPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, error) {
query := query :=
`SELECT `SELECT
COUNT(Posts.Id) AS Value COUNT(Posts.Id) AS Value
@@ -1476,25 +1475,25 @@ func (s *SqlPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, must
v, err := s.GetReplica().SelectInt(query, map[string]interface{}{"TeamId": teamId}) v, err := s.GetReplica().SelectInt(query, map[string]interface{}{"TeamId": teamId})
if err != nil { if err != nil {
return 0, model.NewAppError("SqlPostStore.AnalyticsPostCount", "store.sql_post.analytics_posts_count.app_error", nil, err.Error(), http.StatusInternalServerError) return 0, errors.Wrap(err, "failed to count Posts")
} }
return v, nil return v, nil
} }
func (s *SqlPostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, *model.AppError) { func (s *SqlPostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, error) {
query := `SELECT * FROM Posts WHERE CreateAt = :CreateAt AND ChannelId = :ChannelId` query := `SELECT * FROM Posts WHERE CreateAt = :CreateAt AND ChannelId = :ChannelId`
var posts []*model.Post var posts []*model.Post
_, err := s.GetReplica().Select(&posts, query, map[string]interface{}{"CreateAt": time, "ChannelId": channelId}) _, err := s.GetReplica().Select(&posts, query, map[string]interface{}{"CreateAt": time, "ChannelId": channelId})
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetPostsCreatedAt", "store.sql_post.get_posts_created_att.app_error", nil, "channelId="+channelId+err.Error(), http.StatusInternalServerError) return nil, errors.Wrapf(err, "failed to find Posts with channelId=%s", channelId)
} }
return posts, nil return posts, nil
} }
func (s *SqlPostStore) GetPostsByIds(postIds []string) ([]*model.Post, *model.AppError) { func (s *SqlPostStore) GetPostsByIds(postIds []string) ([]*model.Post, error) {
keys, params := MapStringsToQueryParams(postIds, "Post") keys, params := MapStringsToQueryParams(postIds, "Post")
query := `SELECT p.*, (SELECT count(Posts.Id) FROM Posts WHERE Posts.RootId = (CASE WHEN p.RootId = '' THEN p.Id ELSE p.RootId END) AND Posts.DeleteAt = 0) as ReplyCount FROM Posts p WHERE p.Id IN ` + keys + ` ORDER BY CreateAt DESC` query := `SELECT p.*, (SELECT count(Posts.Id) FROM Posts WHERE Posts.RootId = (CASE WHEN p.RootId = '' THEN p.Id ELSE p.RootId END) AND Posts.DeleteAt = 0) as ReplyCount FROM Posts p WHERE p.Id IN ` + keys + ` ORDER BY CreateAt DESC`
@@ -1503,13 +1502,12 @@ func (s *SqlPostStore) GetPostsByIds(postIds []string) ([]*model.Post, *model.Ap
_, err := s.GetReplica().Select(&posts, query, params) _, err := s.GetReplica().Select(&posts, query, params)
if err != nil { if err != nil {
mlog.Error("Query error getting posts.", mlog.Err(err)) return nil, errors.Wrap(err, "failed to find Posts")
return nil, model.NewAppError("SqlPostStore.GetPostsByIds", "store.sql_post.get_posts_by_ids.app_error", nil, "", http.StatusInternalServerError)
} }
return posts, nil return posts, nil
} }
func (s *SqlPostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, *model.AppError) { func (s *SqlPostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, error) {
var posts []*model.PostForIndexing var posts []*model.PostForIndexing
_, err := s.GetSearchReplica().Select(&posts, _, err := s.GetSearchReplica().Select(&posts,
`SELECT `SELECT
@@ -1541,12 +1539,12 @@ func (s *SqlPostStore) GetPostsBatchForIndexing(startTime int64, endTime int64,
map[string]interface{}{"StartTime": startTime, "EndTime": endTime, "NumPosts": limit}) map[string]interface{}{"StartTime": startTime, "EndTime": endTime, "NumPosts": limit})
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetPostContext", "store.sql_post.get_posts_batch_for_indexing.get.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, errors.Wrap(err, "failed to find Posts")
} }
return posts, nil return posts, nil
} }
func (s *SqlPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, *model.AppError) { func (s *SqlPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) {
var query string var query string
if s.DriverName() == "postgres" { if s.DriverName() == "postgres" {
query = "DELETE from Posts WHERE Id = any (array (SELECT Id FROM Posts WHERE CreateAt < :EndTime LIMIT :Limit))" query = "DELETE from Posts WHERE Id = any (array (SELECT Id FROM Posts WHERE CreateAt < :EndTime LIMIT :Limit))"
@@ -1556,21 +1554,25 @@ func (s *SqlPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64,
sqlResult, err := s.GetMaster().Exec(query, map[string]interface{}{"EndTime": endTime, "Limit": limit}) sqlResult, err := s.GetMaster().Exec(query, map[string]interface{}{"EndTime": endTime, "Limit": limit})
if err != nil { if err != nil {
return 0, model.NewAppError("SqlPostStore.PermanentDeleteBatch", "store.sql_post.permanent_delete_batch.app_error", nil, ""+err.Error(), http.StatusInternalServerError) return 0, errors.Wrap(err, "failed to delete Posts")
} }
rowsAffected, err := sqlResult.RowsAffected() rowsAffected, err := sqlResult.RowsAffected()
if err != nil { if err != nil {
return 0, model.NewAppError("SqlPostStore.PermanentDeleteBatch", "store.sql_post.permanent_delete_batch.app_error", nil, ""+err.Error(), http.StatusInternalServerError) return 0, errors.Wrap(err, "failed to delete Posts")
} }
return rowsAffected, nil return rowsAffected, nil
} }
func (s *SqlPostStore) GetOldest() (*model.Post, *model.AppError) { func (s *SqlPostStore) GetOldest() (*model.Post, error) {
var post model.Post var post model.Post
err := s.GetReplica().SelectOne(&post, "SELECT * FROM Posts ORDER BY CreateAt LIMIT 1") err := s.GetReplica().SelectOne(&post, "SELECT * FROM Posts ORDER BY CreateAt LIMIT 1")
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetOldest", "app.post.get.app_error", nil, err.Error(), http.StatusNotFound) if err == sql.ErrNoRows {
return nil, store.NewErrNotFound("Post", "none")
}
return nil, errors.Wrap(err, "failed to get oldest Post")
} }
return &post, nil return &post, nil
@@ -1591,7 +1593,7 @@ func (s *SqlPostStore) determineMaxPostSize() int {
table_name = 'posts' table_name = 'posts'
AND column_name = 'message' AND column_name = 'message'
`); err != nil { `); err != nil {
mlog.Error("Unable to determine the maximum supported post size", mlog.Err(err)) mlog.Warn("Unable to determine the maximum supported post size", mlog.Err(err))
} }
} else if s.DriverName() == model.DATABASE_DRIVER_MYSQL { } else if s.DriverName() == model.DATABASE_DRIVER_MYSQL {
// The Post.Message column in MySQL has historically been TEXT, with a maximum // The Post.Message column in MySQL has historically been TEXT, with a maximum
@@ -1636,7 +1638,7 @@ func (s *SqlPostStore) GetMaxPostSize() int {
return s.maxPostSizeCached return s.maxPostSizeCached
} }
func (s *SqlPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, *model.AppError) { func (s *SqlPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, error) {
for { for {
var rootIds []string var rootIds []string
_, err := s.GetReplica().Select(&rootIds, _, err := s.GetReplica().Select(&rootIds,
@@ -1652,8 +1654,7 @@ func (s *SqlPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*m
LIMIT :Limit`, LIMIT :Limit`,
map[string]interface{}{"Limit": limit, "AfterId": afterId}) map[string]interface{}{"Limit": limit, "AfterId": afterId})
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetAllAfterForExport", "store.sql_post.get_posts.app_error", return nil, errors.Wrap(err, "failed to find Posts")
nil, err.Error(), http.StatusInternalServerError)
} }
var postsForExport []*model.PostForExport var postsForExport []*model.PostForExport
@@ -1683,8 +1684,7 @@ func (s *SqlPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*m
p1.Id`, p1.Id`,
params) params)
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetAllAfterForExport", "store.sql_post.get_posts.app_error", return nil, errors.Wrap(err, "failed to find Posts")
nil, err.Error(), http.StatusInternalServerError)
} }
if len(postsForExport) == 0 { if len(postsForExport) == 0 {
@@ -1698,7 +1698,7 @@ func (s *SqlPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*m
} }
} }
func (s *SqlPostStore) GetRepliesForExport(rootId string) ([]*model.ReplyForExport, *model.AppError) { func (s *SqlPostStore) GetRepliesForExport(rootId string) ([]*model.ReplyForExport, error) {
var posts []*model.ReplyForExport var posts []*model.ReplyForExport
_, err := s.GetSearchReplica().Select(&posts, ` _, err := s.GetSearchReplica().Select(&posts, `
SELECT SELECT
@@ -1716,13 +1716,13 @@ func (s *SqlPostStore) GetRepliesForExport(rootId string) ([]*model.ReplyForExpo
map[string]interface{}{"RootId": rootId}) map[string]interface{}{"RootId": rootId})
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetAllAfterForExport", "store.sql_post.get_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, errors.Wrap(err, "failed to find Posts")
} }
return posts, nil return posts, nil
} }
func (s *SqlPostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, *model.AppError) { func (s *SqlPostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, error) {
query := s.getQueryBuilder(). query := s.getQueryBuilder().
Select("p.*", "Users.Username as User"). Select("p.*", "Users.Username as User").
From("Posts p"). From("Posts p").
@@ -1741,12 +1741,12 @@ func (s *SqlPostStore) GetDirectPostParentsForExportAfter(limit int, afterId str
queryString, args, err := query.ToSql() queryString, args, err := query.ToSql()
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetDirectPostParentsForExportAfter", "store.sql_post.get_direct_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, errors.Wrap(err, "post_tosql")
} }
var posts []*model.DirectPostForExport var posts []*model.DirectPostForExport
if _, err = s.GetReplica().Select(&posts, queryString, args...); err != nil { if _, err = s.GetReplica().Select(&posts, queryString, args...); err != nil {
return nil, model.NewAppError("SqlPostStore.GetDirectPostParentsForExportAfter", "store.sql_post.get_direct_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, errors.Wrap(err, "failed to find Posts")
} }
var channelIds []string var channelIds []string
for _, post := range posts { for _, post := range posts {
@@ -1762,12 +1762,12 @@ func (s *SqlPostStore) GetDirectPostParentsForExportAfter(limit int, afterId str
queryString, args, err = query.ToSql() queryString, args, err = query.ToSql()
if err != nil { if err != nil {
return nil, model.NewAppError("SqlPostStore.GetDirectPostParentsForExportAfter", "store.sql_post.get_direct_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, errors.Wrap(err, "post_tosql")
} }
var channelMembers []*model.ChannelMemberForExport var channelMembers []*model.ChannelMemberForExport
if _, err := s.GetReplica().Select(&channelMembers, queryString, args...); err != nil { if _, err := s.GetReplica().Select(&channelMembers, queryString, args...); err != nil {
return nil, model.NewAppError("SqlPostStore.GetDirectPostParentsForExportAfter", "store.sql_post.get_direct_posts.app_error", nil, err.Error(), http.StatusInternalServerError) return nil, errors.Wrap(err, "failed to find ChannelMembers")
} }
// Build a map of channels and their posts // Build a map of channels and their posts
@@ -1792,7 +1792,7 @@ func (s *SqlPostStore) GetDirectPostParentsForExportAfter(limit int, afterId str
return posts, nil return posts, nil
} }
func (s *SqlPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId, teamId string, page, perPage int) (*model.PostSearchResults, *model.AppError) { func (s *SqlPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId, teamId string, page, perPage int) (*model.PostSearchResults, error) {
// Since we don't support paging for DB search, we just return nothing for later pages // Since we don't support paging for DB search, we just return nothing for later pages
if page > 0 { if page > 0 {
return model.MakePostSearchResults(model.NewPostList(), nil), nil return model.MakePostSearchResults(model.NewPostList(), nil), nil
@@ -1816,7 +1816,7 @@ func (s *SqlPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams
go func(params *model.SearchParams) { go func(params *model.SearchParams) {
defer wg.Done() defer wg.Done()
postList, err := s.search(teamId, userId, params, false, false) postList, err := s.search(teamId, userId, params, false, false)
pchan <- store.StoreResult{Data: postList, Err: err} pchan <- store.StoreResult{Data: postList, NErr: err}
}(params) }(params)
} }
@@ -1826,8 +1826,8 @@ func (s *SqlPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams
posts := model.NewPostList() posts := model.NewPostList()
for result := range pchan { for result := range pchan {
if result.Err != nil { if result.NErr != nil {
return nil, result.Err return nil, result.NErr
} }
data := result.Data.(*model.PostList) data := result.Data.(*model.PostList)
posts.Extend(data) posts.Extend(data)
@@ -1838,7 +1838,7 @@ func (s *SqlPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams
return model.MakePostSearchResults(posts, nil), nil return model.MakePostSearchResults(posts, nil), nil
} }
func (s *SqlPostStore) GetOldestEntityCreationTime() (int64, *model.AppError) { func (s *SqlPostStore) GetOldestEntityCreationTime() (int64, error) {
query := s.getQueryBuilder().Select("MIN(min_createat) min_createat"). query := s.getQueryBuilder().Select("MIN(min_createat) min_createat").
Suffix(`FROM ( Suffix(`FROM (
(SELECT MIN(createat) min_createat FROM Posts) (SELECT MIN(createat) min_createat FROM Posts)
@@ -1849,14 +1849,12 @@ func (s *SqlPostStore) GetOldestEntityCreationTime() (int64, *model.AppError) {
) entities`) ) entities`)
queryString, _, err := query.ToSql() queryString, _, err := query.ToSql()
if err != nil { if err != nil {
return -1, model.NewAppError("SqlPostStore.GetOldestEntityCreationTime", return -1, errors.Wrap(err, "post_tosql")
"store.sql_post.get_oldest_entity_creation_time.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
row := s.GetReplica().Db.QueryRow(queryString) row := s.GetReplica().Db.QueryRow(queryString)
var oldest int64 var oldest int64
if err := row.Scan(&oldest); err != nil { if err := row.Scan(&oldest); err != nil {
return -1, model.NewAppError("SqlPostStore.GetOldestEntityCreationTime", return -1, errors.Wrap(err, "unable to scan oldest entity creation time")
"store.sql_post.get_oldest_entity_creation_time.app_error", nil, err.Error(), http.StatusInternalServerError)
} }
return oldest, nil return oldest, nil
} }

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

@@ -255,7 +255,7 @@ type PostStore interface {
Delete(postId string, time int64, deleteByID string) error Delete(postId string, time int64, deleteByID string) error
PermanentDeleteByUser(userId string) error PermanentDeleteByUser(userId string) error
PermanentDeleteByChannel(channelId string) error PermanentDeleteByChannel(channelId string) error
GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, *model.AppError) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, error)
GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, error) GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, error)
// @openTracingParams userId, teamId, offset, limit // @openTracingParams userId, teamId, offset, limit
GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, error) GetFlaggedPostsForTeam(userId, teamId string, offset int, limit int) (*model.PostList, error)
@@ -267,25 +267,25 @@ type PostStore interface {
GetPostIdAfterTime(channelId string, time int64) (string, error) GetPostIdAfterTime(channelId string, time int64) (string, error)
GetPostIdBeforeTime(channelId string, time int64) (string, error) GetPostIdBeforeTime(channelId string, time int64) (string, error)
GetEtag(channelId string, allowFromCache bool) string GetEtag(channelId string, allowFromCache bool) string
Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, *model.AppError) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, error)
AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, *model.AppError) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, error)
AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, *model.AppError) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, error)
AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, *model.AppError) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, error)
ClearCaches() ClearCaches()
InvalidateLastPostTimeCache(channelId string) InvalidateLastPostTimeCache(channelId string)
GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, *model.AppError) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, error)
Overwrite(post *model.Post) (*model.Post, *model.AppError) Overwrite(post *model.Post) (*model.Post, error)
OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, error)
GetPostsByIds(postIds []string) ([]*model.Post, *model.AppError) GetPostsByIds(postIds []string) ([]*model.Post, error)
GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, *model.AppError) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, error)
PermanentDeleteBatch(endTime int64, limit int64) (int64, *model.AppError) PermanentDeleteBatch(endTime int64, limit int64) (int64, error)
GetOldest() (*model.Post, *model.AppError) GetOldest() (*model.Post, error)
GetMaxPostSize() int GetMaxPostSize() int
GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, *model.AppError) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, error)
GetRepliesForExport(parentId string) ([]*model.ReplyForExport, *model.AppError) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, error)
GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, *model.AppError) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, error)
SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId, teamId string, page, perPage int) (*model.PostSearchResults, *model.AppError) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId, teamId string, page, perPage int) (*model.PostSearchResults, error)
GetOldestEntityCreationTime() (int64, *model.AppError) GetOldestEntityCreationTime() (int64, error)
} }
type UserStore interface { type UserStore interface {

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

@@ -15,7 +15,7 @@ type PostStore struct {
} }
// AnalyticsPostCount provides a mock function with given fields: teamId, mustHaveFile, mustHaveHashtag // AnalyticsPostCount provides a mock function with given fields: teamId, mustHaveFile, mustHaveHashtag
func (_m *PostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, *model.AppError) { func (_m *PostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, error) {
ret := _m.Called(teamId, mustHaveFile, mustHaveHashtag) ret := _m.Called(teamId, mustHaveFile, mustHaveHashtag)
var r0 int64 var r0 int64
@@ -25,20 +25,18 @@ func (_m *PostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHa
r0 = ret.Get(0).(int64) r0 = ret.Get(0).(int64)
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(string, bool, bool) *model.AppError); ok { if rf, ok := ret.Get(1).(func(string, bool, bool) error); ok {
r1 = rf(teamId, mustHaveFile, mustHaveHashtag) r1 = rf(teamId, mustHaveFile, mustHaveHashtag)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
} }
// AnalyticsPostCountsByDay provides a mock function with given fields: options // AnalyticsPostCountsByDay provides a mock function with given fields: options
func (_m *PostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, *model.AppError) { func (_m *PostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, error) {
ret := _m.Called(options) ret := _m.Called(options)
var r0 model.AnalyticsRows var r0 model.AnalyticsRows
@@ -50,20 +48,18 @@ func (_m *PostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCounts
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(*model.AnalyticsPostCountsOptions) *model.AppError); ok { if rf, ok := ret.Get(1).(func(*model.AnalyticsPostCountsOptions) error); ok {
r1 = rf(options) r1 = rf(options)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
} }
// AnalyticsUserCountsWithPostsByDay provides a mock function with given fields: teamId // AnalyticsUserCountsWithPostsByDay provides a mock function with given fields: teamId
func (_m *PostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, *model.AppError) { func (_m *PostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, error) {
ret := _m.Called(teamId) ret := _m.Called(teamId)
var r0 model.AnalyticsRows var r0 model.AnalyticsRows
@@ -75,13 +71,11 @@ func (_m *PostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.Ana
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { if rf, ok := ret.Get(1).(func(string) error); ok {
r1 = rf(teamId) r1 = rf(teamId)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
@@ -130,7 +124,7 @@ func (_m *PostStore) Get(id string, skipFetchThreads bool) (*model.PostList, err
} }
// GetDirectPostParentsForExportAfter provides a mock function with given fields: limit, afterId // GetDirectPostParentsForExportAfter provides a mock function with given fields: limit, afterId
func (_m *PostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, *model.AppError) { func (_m *PostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, error) {
ret := _m.Called(limit, afterId) ret := _m.Called(limit, afterId)
var r0 []*model.DirectPostForExport var r0 []*model.DirectPostForExport
@@ -142,13 +136,11 @@ func (_m *PostStore) GetDirectPostParentsForExportAfter(limit int, afterId strin
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(int, string) *model.AppError); ok { if rf, ok := ret.Get(1).(func(int, string) error); ok {
r1 = rf(limit, afterId) r1 = rf(limit, afterId)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
@@ -252,7 +244,7 @@ func (_m *PostStore) GetMaxPostSize() int {
} }
// GetOldest provides a mock function with given fields: // GetOldest provides a mock function with given fields:
func (_m *PostStore) GetOldest() (*model.Post, *model.AppError) { func (_m *PostStore) GetOldest() (*model.Post, error) {
ret := _m.Called() ret := _m.Called()
var r0 *model.Post var r0 *model.Post
@@ -264,20 +256,18 @@ func (_m *PostStore) GetOldest() (*model.Post, *model.AppError) {
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func() *model.AppError); ok { if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf() r1 = rf()
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
} }
// GetOldestEntityCreationTime provides a mock function with given fields: // GetOldestEntityCreationTime provides a mock function with given fields:
func (_m *PostStore) GetOldestEntityCreationTime() (int64, *model.AppError) { func (_m *PostStore) GetOldestEntityCreationTime() (int64, error) {
ret := _m.Called() ret := _m.Called()
var r0 int64 var r0 int64
@@ -287,20 +277,18 @@ func (_m *PostStore) GetOldestEntityCreationTime() (int64, *model.AppError) {
r0 = ret.Get(0).(int64) r0 = ret.Get(0).(int64)
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func() *model.AppError); ok { if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf() r1 = rf()
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
} }
// GetParentsForExportAfter provides a mock function with given fields: limit, afterId // GetParentsForExportAfter provides a mock function with given fields: limit, afterId
func (_m *PostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, *model.AppError) { func (_m *PostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, error) {
ret := _m.Called(limit, afterId) ret := _m.Called(limit, afterId)
var r0 []*model.PostForExport var r0 []*model.PostForExport
@@ -312,13 +300,11 @@ func (_m *PostStore) GetParentsForExportAfter(limit int, afterId string) ([]*mod
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(int, string) *model.AppError); ok { if rf, ok := ret.Get(1).(func(int, string) error); ok {
r1 = rf(limit, afterId) r1 = rf(limit, afterId)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
@@ -390,7 +376,7 @@ func (_m *PostStore) GetPostIdBeforeTime(channelId string, time int64) (string,
} }
// GetPosts provides a mock function with given fields: options, allowFromCache // GetPosts provides a mock function with given fields: options, allowFromCache
func (_m *PostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, *model.AppError) { func (_m *PostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, error) {
ret := _m.Called(options, allowFromCache) ret := _m.Called(options, allowFromCache)
var r0 *model.PostList var r0 *model.PostList
@@ -402,13 +388,11 @@ func (_m *PostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(model.GetPostsOptions, bool) *model.AppError); ok { if rf, ok := ret.Get(1).(func(model.GetPostsOptions, bool) error); ok {
r1 = rf(options, allowFromCache) r1 = rf(options, allowFromCache)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
@@ -438,7 +422,7 @@ func (_m *PostStore) GetPostsAfter(options model.GetPostsOptions) (*model.PostLi
} }
// GetPostsBatchForIndexing provides a mock function with given fields: startTime, endTime, limit // GetPostsBatchForIndexing provides a mock function with given fields: startTime, endTime, limit
func (_m *PostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, *model.AppError) { func (_m *PostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, error) {
ret := _m.Called(startTime, endTime, limit) ret := _m.Called(startTime, endTime, limit)
var r0 []*model.PostForIndexing var r0 []*model.PostForIndexing
@@ -450,13 +434,11 @@ func (_m *PostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, li
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(int64, int64, int) *model.AppError); ok { if rf, ok := ret.Get(1).(func(int64, int64, int) error); ok {
r1 = rf(startTime, endTime, limit) r1 = rf(startTime, endTime, limit)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
@@ -486,7 +468,7 @@ func (_m *PostStore) GetPostsBefore(options model.GetPostsOptions) (*model.PostL
} }
// GetPostsByIds provides a mock function with given fields: postIds // GetPostsByIds provides a mock function with given fields: postIds
func (_m *PostStore) GetPostsByIds(postIds []string) ([]*model.Post, *model.AppError) { func (_m *PostStore) GetPostsByIds(postIds []string) ([]*model.Post, error) {
ret := _m.Called(postIds) ret := _m.Called(postIds)
var r0 []*model.Post var r0 []*model.Post
@@ -498,20 +480,18 @@ func (_m *PostStore) GetPostsByIds(postIds []string) ([]*model.Post, *model.AppE
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func([]string) *model.AppError); ok { if rf, ok := ret.Get(1).(func([]string) error); ok {
r1 = rf(postIds) r1 = rf(postIds)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
} }
// GetPostsCreatedAt provides a mock function with given fields: channelId, time // GetPostsCreatedAt provides a mock function with given fields: channelId, time
func (_m *PostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, *model.AppError) { func (_m *PostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, error) {
ret := _m.Called(channelId, time) ret := _m.Called(channelId, time)
var r0 []*model.Post var r0 []*model.Post
@@ -523,13 +503,11 @@ func (_m *PostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.P
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(string, int64) *model.AppError); ok { if rf, ok := ret.Get(1).(func(string, int64) error); ok {
r1 = rf(channelId, time) r1 = rf(channelId, time)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
@@ -559,7 +537,7 @@ func (_m *PostStore) GetPostsSince(options model.GetPostsSinceOptions, allowFrom
} }
// GetRepliesForExport provides a mock function with given fields: parentId // GetRepliesForExport provides a mock function with given fields: parentId
func (_m *PostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, *model.AppError) { func (_m *PostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, error) {
ret := _m.Called(parentId) ret := _m.Called(parentId)
var r0 []*model.ReplyForExport var r0 []*model.ReplyForExport
@@ -571,13 +549,11 @@ func (_m *PostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExpo
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { if rf, ok := ret.Get(1).(func(string) error); ok {
r1 = rf(parentId) r1 = rf(parentId)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
@@ -612,7 +588,7 @@ func (_m *PostStore) InvalidateLastPostTimeCache(channelId string) {
} }
// Overwrite provides a mock function with given fields: post // Overwrite provides a mock function with given fields: post
func (_m *PostStore) Overwrite(post *model.Post) (*model.Post, *model.AppError) { func (_m *PostStore) Overwrite(post *model.Post) (*model.Post, error) {
ret := _m.Called(post) ret := _m.Called(post)
var r0 *model.Post var r0 *model.Post
@@ -624,20 +600,18 @@ func (_m *PostStore) Overwrite(post *model.Post) (*model.Post, *model.AppError)
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(*model.Post) *model.AppError); ok { if rf, ok := ret.Get(1).(func(*model.Post) error); ok {
r1 = rf(post) r1 = rf(post)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
} }
// OverwriteMultiple provides a mock function with given fields: posts // OverwriteMultiple provides a mock function with given fields: posts
func (_m *PostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError) { func (_m *PostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, error) {
ret := _m.Called(posts) ret := _m.Called(posts)
var r0 []*model.Post var r0 []*model.Post
@@ -656,20 +630,18 @@ func (_m *PostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int,
r1 = ret.Get(1).(int) r1 = ret.Get(1).(int)
} }
var r2 *model.AppError var r2 error
if rf, ok := ret.Get(2).(func([]*model.Post) *model.AppError); ok { if rf, ok := ret.Get(2).(func([]*model.Post) error); ok {
r2 = rf(posts) r2 = rf(posts)
} else { } else {
if ret.Get(2) != nil { r2 = ret.Error(2)
r2 = ret.Get(2).(*model.AppError)
}
} }
return r0, r1, r2 return r0, r1, r2
} }
// PermanentDeleteBatch provides a mock function with given fields: endTime, limit // PermanentDeleteBatch provides a mock function with given fields: endTime, limit
func (_m *PostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, *model.AppError) { func (_m *PostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) {
ret := _m.Called(endTime, limit) ret := _m.Called(endTime, limit)
var r0 int64 var r0 int64
@@ -679,13 +651,11 @@ func (_m *PostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, *m
r0 = ret.Get(0).(int64) r0 = ret.Get(0).(int64)
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(int64, int64) *model.AppError); ok { if rf, ok := ret.Get(1).(func(int64, int64) error); ok {
r1 = rf(endTime, limit) r1 = rf(endTime, limit)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
@@ -773,7 +743,7 @@ func (_m *PostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, erro
} }
// Search provides a mock function with given fields: teamId, userId, params // Search provides a mock function with given fields: teamId, userId, params
func (_m *PostStore) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, *model.AppError) { func (_m *PostStore) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, error) {
ret := _m.Called(teamId, userId, params) ret := _m.Called(teamId, userId, params)
var r0 *model.PostList var r0 *model.PostList
@@ -785,20 +755,18 @@ func (_m *PostStore) Search(teamId string, userId string, params *model.SearchPa
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func(string, string, *model.SearchParams) *model.AppError); ok { if rf, ok := ret.Get(1).(func(string, string, *model.SearchParams) error); ok {
r1 = rf(teamId, userId, params) r1 = rf(teamId, userId, params)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1
} }
// SearchPostsInTeamForUser provides a mock function with given fields: paramsList, userId, teamId, page, perPage // SearchPostsInTeamForUser provides a mock function with given fields: paramsList, userId, teamId, page, perPage
func (_m *PostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId string, teamId string, page int, perPage int) (*model.PostSearchResults, *model.AppError) { func (_m *PostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId string, teamId string, page int, perPage int) (*model.PostSearchResults, error) {
ret := _m.Called(paramsList, userId, teamId, page, perPage) ret := _m.Called(paramsList, userId, teamId, page, perPage)
var r0 *model.PostSearchResults var r0 *model.PostSearchResults
@@ -810,13 +778,11 @@ func (_m *PostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams,
} }
} }
var r1 *model.AppError var r1 error
if rf, ok := ret.Get(1).(func([]*model.SearchParams, string, string, int, int) *model.AppError); ok { if rf, ok := ret.Get(1).(func([]*model.SearchParams, string, string, int, int) error); ok {
r1 = rf(paramsList, userId, teamId, page, perPage) r1 = rf(paramsList, userId, teamId, page, perPage)
} else { } else {
if ret.Get(1) != nil { r1 = ret.Error(1)
r1 = ret.Get(1).(*model.AppError)
}
} }
return r0, r1 return r0, r1

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

@@ -2654,8 +2654,8 @@ func testPostStoreGetDirectPostParentsForExportAfter(t *testing.T, ss store.Stor
p1, nErr = ss.Post().Save(p1) p1, nErr = ss.Post().Save(p1)
require.Nil(t, nErr) require.Nil(t, nErr)
r1, err := ss.Post().GetDirectPostParentsForExportAfter(10000, strings.Repeat("0", 26)) r1, nErr := ss.Post().GetDirectPostParentsForExportAfter(10000, strings.Repeat("0", 26))
assert.Nil(t, err) assert.Nil(t, nErr)
assert.Equal(t, p1.Message, r1[0].Message) assert.Equal(t, p1.Message, r1[0].Message)
@@ -2720,8 +2720,8 @@ func testPostStoreGetDirectPostParentsForExportAfterDeleted(t *testing.T, ss sto
_, nErr = ss.Post().Update(o1a, p1) _, nErr = ss.Post().Update(o1a, p1)
require.Nil(t, nErr) require.Nil(t, nErr)
r1, err := ss.Post().GetDirectPostParentsForExportAfter(10000, strings.Repeat("0", 26)) r1, nErr := ss.Post().GetDirectPostParentsForExportAfter(10000, strings.Repeat("0", 26))
assert.Nil(t, err) assert.Nil(t, nErr)
assert.Equal(t, 0, len(r1)) assert.Equal(t, 0, len(r1))

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

@@ -4275,7 +4275,7 @@ func (s *TimerLayerPluginStore) SetWithOptions(pluginId string, key string, valu
return result, err return result, err
} }
func (s *TimerLayerPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, *model.AppError) { func (s *TimerLayerPostStore) AnalyticsPostCount(teamId string, mustHaveFile bool, mustHaveHashtag bool) (int64, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.AnalyticsPostCount(teamId, mustHaveFile, mustHaveHashtag) result, err := s.PostStore.AnalyticsPostCount(teamId, mustHaveFile, mustHaveHashtag)
@@ -4291,7 +4291,7 @@ func (s *TimerLayerPostStore) AnalyticsPostCount(teamId string, mustHaveFile boo
return result, err return result, err
} }
func (s *TimerLayerPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, *model.AppError) { func (s *TimerLayerPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.AnalyticsPostCountsByDay(options) result, err := s.PostStore.AnalyticsPostCountsByDay(options)
@@ -4307,7 +4307,7 @@ func (s *TimerLayerPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsP
return result, err return result, err
} }
func (s *TimerLayerPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, *model.AppError) { func (s *TimerLayerPostStore) AnalyticsUserCountsWithPostsByDay(teamId string) (model.AnalyticsRows, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.AnalyticsUserCountsWithPostsByDay(teamId) result, err := s.PostStore.AnalyticsUserCountsWithPostsByDay(teamId)
@@ -4370,7 +4370,7 @@ func (s *TimerLayerPostStore) Get(id string, skipFetchThreads bool) (*model.Post
return result, err return result, err
} }
func (s *TimerLayerPostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, *model.AppError) { func (s *TimerLayerPostStore) GetDirectPostParentsForExportAfter(limit int, afterId string) ([]*model.DirectPostForExport, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.GetDirectPostParentsForExportAfter(limit, afterId) result, err := s.PostStore.GetDirectPostParentsForExportAfter(limit, afterId)
@@ -4466,7 +4466,7 @@ func (s *TimerLayerPostStore) GetMaxPostSize() int {
return result return result
} }
func (s *TimerLayerPostStore) GetOldest() (*model.Post, *model.AppError) { func (s *TimerLayerPostStore) GetOldest() (*model.Post, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.GetOldest() result, err := s.PostStore.GetOldest()
@@ -4482,7 +4482,7 @@ func (s *TimerLayerPostStore) GetOldest() (*model.Post, *model.AppError) {
return result, err return result, err
} }
func (s *TimerLayerPostStore) GetOldestEntityCreationTime() (int64, *model.AppError) { func (s *TimerLayerPostStore) GetOldestEntityCreationTime() (int64, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.GetOldestEntityCreationTime() result, err := s.PostStore.GetOldestEntityCreationTime()
@@ -4498,7 +4498,7 @@ func (s *TimerLayerPostStore) GetOldestEntityCreationTime() (int64, *model.AppEr
return result, err return result, err
} }
func (s *TimerLayerPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, *model.AppError) { func (s *TimerLayerPostStore) GetParentsForExportAfter(limit int, afterId string) ([]*model.PostForExport, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.GetParentsForExportAfter(limit, afterId) result, err := s.PostStore.GetParentsForExportAfter(limit, afterId)
@@ -4562,7 +4562,7 @@ func (s *TimerLayerPostStore) GetPostIdBeforeTime(channelId string, time int64)
return result, err return result, err
} }
func (s *TimerLayerPostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, *model.AppError) { func (s *TimerLayerPostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.GetPosts(options, allowFromCache) result, err := s.PostStore.GetPosts(options, allowFromCache)
@@ -4594,7 +4594,7 @@ func (s *TimerLayerPostStore) GetPostsAfter(options model.GetPostsOptions) (*mod
return result, err return result, err
} }
func (s *TimerLayerPostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, *model.AppError) { func (s *TimerLayerPostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.GetPostsBatchForIndexing(startTime, endTime, limit) result, err := s.PostStore.GetPostsBatchForIndexing(startTime, endTime, limit)
@@ -4626,7 +4626,7 @@ func (s *TimerLayerPostStore) GetPostsBefore(options model.GetPostsOptions) (*mo
return result, err return result, err
} }
func (s *TimerLayerPostStore) GetPostsByIds(postIds []string) ([]*model.Post, *model.AppError) { func (s *TimerLayerPostStore) GetPostsByIds(postIds []string) ([]*model.Post, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.GetPostsByIds(postIds) result, err := s.PostStore.GetPostsByIds(postIds)
@@ -4642,7 +4642,7 @@ func (s *TimerLayerPostStore) GetPostsByIds(postIds []string) ([]*model.Post, *m
return result, err return result, err
} }
func (s *TimerLayerPostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, *model.AppError) { func (s *TimerLayerPostStore) GetPostsCreatedAt(channelId string, time int64) ([]*model.Post, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.GetPostsCreatedAt(channelId, time) result, err := s.PostStore.GetPostsCreatedAt(channelId, time)
@@ -4674,7 +4674,7 @@ func (s *TimerLayerPostStore) GetPostsSince(options model.GetPostsSinceOptions,
return result, err return result, err
} }
func (s *TimerLayerPostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, *model.AppError) { func (s *TimerLayerPostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExport, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.GetRepliesForExport(parentId) result, err := s.PostStore.GetRepliesForExport(parentId)
@@ -4721,7 +4721,7 @@ func (s *TimerLayerPostStore) InvalidateLastPostTimeCache(channelId string) {
} }
} }
func (s *TimerLayerPostStore) Overwrite(post *model.Post) (*model.Post, *model.AppError) { func (s *TimerLayerPostStore) Overwrite(post *model.Post) (*model.Post, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.Overwrite(post) result, err := s.PostStore.Overwrite(post)
@@ -4737,7 +4737,7 @@ func (s *TimerLayerPostStore) Overwrite(post *model.Post) (*model.Post, *model.A
return result, err return result, err
} }
func (s *TimerLayerPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError) { func (s *TimerLayerPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, error) {
start := timemodule.Now() start := timemodule.Now()
result, resultVar1, err := s.PostStore.OverwriteMultiple(posts) result, resultVar1, err := s.PostStore.OverwriteMultiple(posts)
@@ -4753,7 +4753,7 @@ func (s *TimerLayerPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.P
return result, resultVar1, err return result, resultVar1, err
} }
func (s *TimerLayerPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, *model.AppError) { func (s *TimerLayerPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.PermanentDeleteBatch(endTime, limit) result, err := s.PostStore.PermanentDeleteBatch(endTime, limit)
@@ -4833,7 +4833,7 @@ func (s *TimerLayerPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post,
return result, resultVar1, err return result, resultVar1, err
} }
func (s *TimerLayerPostStore) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, *model.AppError) { func (s *TimerLayerPostStore) Search(teamId string, userId string, params *model.SearchParams) (*model.PostList, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.Search(teamId, userId, params) result, err := s.PostStore.Search(teamId, userId, params)
@@ -4849,7 +4849,7 @@ func (s *TimerLayerPostStore) Search(teamId string, userId string, params *model
return result, err return result, err
} }
func (s *TimerLayerPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId string, teamId string, page int, perPage int) (*model.PostSearchResults, *model.AppError) { func (s *TimerLayerPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userId string, teamId string, page int, perPage int) (*model.PostSearchResults, error) {
start := timemodule.Now() start := timemodule.Now()
result, err := s.PostStore.SearchPostsInTeamForUser(paramsList, userId, teamId, page, perPage) result, err := s.PostStore.SearchPostsInTeamForUser(paramsList, userId, teamId, page, perPage)