коммит произвёл
GitHub
родитель
d9ee26a47b
Коммит
5566395032
@@ -2330,7 +2330,7 @@ func (a *App) ViewChannel(view *model.ChannelView, userId string, currentSession
|
||||
|
||||
func (a *App) PermanentDeleteChannel(channel *model.Channel) *model.AppError {
|
||||
if err := a.Srv().Store.Post().PermanentDeleteByChannel(channel.Id); err != nil {
|
||||
return err
|
||||
return model.NewAppError("PermanentDeleteChannel", "app.post.permanent_delete_by_channel.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
if err := a.Srv().Store.Channel().PermanentDeleteMembersByChannel(channel.Id); err != nil {
|
||||
|
||||
11
app/file.go
11
app/file.go
@@ -291,12 +291,13 @@ func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
|
||||
fileMigrationLock.Lock()
|
||||
defer fileMigrationLock.Unlock()
|
||||
|
||||
result, err := a.Srv().Store.Post().Get(post.Id, false)
|
||||
if err != nil {
|
||||
mlog.Error("Unable to get post when migrating post to use FileInfos", mlog.Err(err), mlog.String("post_id", post.Id))
|
||||
result, nErr := a.Srv().Store.Post().Get(post.Id, false)
|
||||
if nErr != nil {
|
||||
mlog.Error("Unable to get post when migrating post to use FileInfos", mlog.Err(nErr), mlog.String("post_id", post.Id))
|
||||
return []*model.FileInfo{}
|
||||
}
|
||||
|
||||
var err *model.AppError
|
||||
if newPost := result.Posts[post.Id]; len(newPost.Filenames) != len(post.Filenames) {
|
||||
// Another thread has already created FileInfos for this post, so just return those
|
||||
var fileInfos []*model.FileInfo
|
||||
@@ -337,13 +338,13 @@ func (a *App) MigrateFilenamesToFileInfos(post *model.Post) []*model.FileInfo {
|
||||
newPost.FileIds = fileIds
|
||||
|
||||
// Update Posts to clear Filenames and set FileIds
|
||||
if _, err = a.Srv().Store.Post().Update(newPost, post); err != nil {
|
||||
if _, nErr = a.Srv().Store.Post().Update(newPost, post); nErr != nil {
|
||||
mlog.Error(
|
||||
"Unable to save migrated post when migrating to use FileInfos",
|
||||
mlog.String("new_file_ids", strings.Join(newPost.FileIds, ",")),
|
||||
mlog.String("old_filenames", strings.Join(post.Filenames, ",")),
|
||||
mlog.String("post_id", post.Id),
|
||||
mlog.Err(err),
|
||||
mlog.Err(nErr),
|
||||
)
|
||||
return []*model.FileInfo{}
|
||||
}
|
||||
|
||||
@@ -1038,7 +1038,16 @@ func (a *App) importReplies(data []ReplyImportData, post *model.Post, teamId str
|
||||
|
||||
if len(postsForCreateList) > 0 {
|
||||
if _, _, err := a.Srv().Store.Post().SaveMultiple(postsForCreateList); err != nil {
|
||||
return err
|
||||
var appErr *model.AppError
|
||||
var invErr *store.ErrInvalidInput
|
||||
switch {
|
||||
case errors.As(err, &appErr):
|
||||
return appErr
|
||||
case errors.As(err, &invErr):
|
||||
return model.NewAppError("importReplies", "app.post.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest)
|
||||
default:
|
||||
return model.NewAppError("importReplies", "app.post.save.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1229,9 +1238,9 @@ func (a *App) importMultiplePostLines(lines []LineImportWorkerData, dryRun bool)
|
||||
user := users[*line.Post.User]
|
||||
|
||||
// Check if this post already exists.
|
||||
posts, err := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *line.Post.CreateAt)
|
||||
if err != nil {
|
||||
return line.LineNumber, err
|
||||
posts, appErr := a.Srv().Store.Post().GetPostsCreatedAt(channel.Id, *line.Post.CreateAt)
|
||||
if appErr != nil {
|
||||
return line.LineNumber, appErr
|
||||
}
|
||||
|
||||
var post *model.Post
|
||||
@@ -1256,9 +1265,9 @@ func (a *App) importMultiplePostLines(lines []LineImportWorkerData, dryRun bool)
|
||||
post.Props = *line.Post.Props
|
||||
}
|
||||
|
||||
fileIds, err := a.uploadAttachments(line.Post.Attachments, post, team.Id, dryRun)
|
||||
if err != nil {
|
||||
return line.LineNumber, err
|
||||
fileIds, appErr := a.uploadAttachments(line.Post.Attachments, post, team.Id, dryRun)
|
||||
if appErr != nil {
|
||||
return line.LineNumber, appErr
|
||||
}
|
||||
for _, fileID := range post.FileIds {
|
||||
if _, ok := fileIds[fileID]; !ok {
|
||||
@@ -1281,14 +1290,26 @@ func (a *App) importMultiplePostLines(lines []LineImportWorkerData, dryRun bool)
|
||||
}
|
||||
|
||||
if len(postsForCreateList) > 0 {
|
||||
if _, idx, err := a.Srv().Store.Post().SaveMultiple(postsForCreateList); err != nil {
|
||||
if _, idx, nErr := a.Srv().Store.Post().SaveMultiple(postsForCreateList); nErr != nil {
|
||||
var appErr *model.AppError
|
||||
var invErr *store.ErrInvalidInput
|
||||
var retErr *model.AppError
|
||||
switch {
|
||||
case errors.As(nErr, &appErr):
|
||||
retErr = appErr
|
||||
case errors.As(nErr, &invErr):
|
||||
retErr = model.NewAppError("importMultiplePostLines", "app.post.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest)
|
||||
default:
|
||||
retErr = model.NewAppError("importMultiplePostLines", "app.post.save.app_error", nil, nErr.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
if idx != -1 && idx < len(postsForCreateList) {
|
||||
post := postsForCreateList[idx]
|
||||
if lineNumber, ok := postsForCreateMap[getPostStrID(post)]; ok {
|
||||
return lineNumber, err
|
||||
return lineNumber, retErr
|
||||
}
|
||||
}
|
||||
return 0, err
|
||||
return 0, retErr
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1566,13 +1587,25 @@ func (a *App) importMultipleDirectPostLines(lines []LineImportWorkerData, dryRun
|
||||
|
||||
if len(postsForCreateList) > 0 {
|
||||
if _, idx, err := a.Srv().Store.Post().SaveMultiple(postsForCreateList); err != nil {
|
||||
var appErr *model.AppError
|
||||
var invErr *store.ErrInvalidInput
|
||||
var retErr *model.AppError
|
||||
switch {
|
||||
case errors.As(err, &appErr):
|
||||
retErr = appErr
|
||||
case errors.As(err, &invErr):
|
||||
retErr = model.NewAppError("importMultiplePostLines", "app.post.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest)
|
||||
default:
|
||||
retErr = model.NewAppError("importMultiplePostLines", "app.post.save.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
if idx != -1 && idx < len(postsForCreateList) {
|
||||
post := postsForCreateList[idx]
|
||||
if lineNumber, ok := postsForCreateMap[getPostStrID(post)]; ok {
|
||||
return lineNumber, err
|
||||
return lineNumber, retErr
|
||||
}
|
||||
}
|
||||
return 0, err
|
||||
return 0, retErr
|
||||
}
|
||||
}
|
||||
if _, idx, err := a.Srv().Store.Post().OverwriteMultiple(postsForOverwriteList); err != nil {
|
||||
|
||||
@@ -71,7 +71,7 @@ func (a *App) DoPostActionWithCookie(postId, actionId, userId, selectedOption st
|
||||
pchan := make(chan store.StoreResult, 1)
|
||||
go func() {
|
||||
post, err := a.Srv().Store.Post().GetSingle(postId)
|
||||
pchan <- store.StoreResult{Data: post, Err: err}
|
||||
pchan <- store.StoreResult{Data: post, NErr: err}
|
||||
close(pchan)
|
||||
}()
|
||||
|
||||
@@ -90,16 +90,22 @@ func (a *App) DoPostActionWithCookie(postId, actionId, userId, selectedOption st
|
||||
}()
|
||||
|
||||
result := <-pchan
|
||||
if result.Err != nil {
|
||||
if result.NErr != nil {
|
||||
if cookie == nil {
|
||||
return "", result.Err
|
||||
var nfErr *store.ErrNotFound
|
||||
switch {
|
||||
case errors.As(result.NErr, &nfErr):
|
||||
return "", model.NewAppError("DoPostActionWithCookie", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound)
|
||||
default:
|
||||
return "", model.NewAppError("DoPostActionWithCookie", "app.post.get.app_error", nil, result.NErr.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
if cookie.Integration == nil {
|
||||
return "", model.NewAppError("DoPostAction", "api.post.do_action.action_integration.app_error", nil, "no Integration in action cookie", http.StatusBadRequest)
|
||||
return "", model.NewAppError("DoPostActionWithCookie", "api.post.do_action.action_integration.app_error", nil, "no Integration in action cookie", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if postId != cookie.PostId {
|
||||
return "", model.NewAppError("DoPostAction", "api.post.do_action.action_integration.app_error", nil, "postId doesn't match", http.StatusBadRequest)
|
||||
return "", model.NewAppError("DoPostActionWithCookie", "api.post.do_action.action_integration.app_error", nil, "postId doesn't match", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
channel, err := a.Srv().Store.Channel().Get(cookie.ChannelId, true)
|
||||
|
||||
@@ -419,8 +419,8 @@ func TestPostActionProps(t *testing.T) {
|
||||
require.Nil(t, err)
|
||||
assert.True(t, len(clientTriggerId) == 26)
|
||||
|
||||
newPost, err := th.App.Srv().Store.Post().GetSingle(post.Id)
|
||||
require.Nil(t, err)
|
||||
newPost, nErr := th.App.Srv().Store.Post().GetSingle(post.Id)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
assert.True(t, newPost.IsPinned)
|
||||
assert.False(t, newPost.HasReactions)
|
||||
|
||||
118
app/post.go
118
app/post.go
@@ -180,7 +180,7 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
|
||||
pchan = make(chan store.StoreResult, 1)
|
||||
go func() {
|
||||
r, pErr := a.Srv().Store.Post().Get(post.RootId, false)
|
||||
pchan <- store.StoreResult{Data: r, Err: pErr}
|
||||
pchan <- store.StoreResult{Data: r, NErr: pErr}
|
||||
close(pchan)
|
||||
}()
|
||||
}
|
||||
@@ -221,7 +221,7 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
|
||||
var parentPostList *model.PostList
|
||||
if pchan != nil {
|
||||
result := <-pchan
|
||||
if result.Err != nil {
|
||||
if result.NErr != nil {
|
||||
return nil, model.NewAppError("createPost", "api.post.create_post.root_id.app_error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
parentPostList = result.Data.(*model.PostList)
|
||||
@@ -290,9 +290,18 @@ func (a *App) CreatePost(post *model.Post, channel *model.Channel, triggerWebhoo
|
||||
}
|
||||
}
|
||||
|
||||
rpost, err := a.Srv().Store.Post().Save(post)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
rpost, nErr := a.Srv().Store.Post().Save(post)
|
||||
if nErr != nil {
|
||||
var appErr *model.AppError
|
||||
var invErr *store.ErrInvalidInput
|
||||
switch {
|
||||
case errors.As(nErr, &appErr):
|
||||
return nil, appErr
|
||||
case errors.As(nErr, &invErr):
|
||||
return nil, model.NewAppError("CreatePost", "app.post.save.existing.app_error", nil, invErr.Error(), http.StatusBadRequest)
|
||||
default:
|
||||
return nil, model.NewAppError("CreatePost", "app.post.save.app_error", nil, nErr.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
// Update the mapping from pending post id to the actual post id, for any clients that
|
||||
@@ -512,12 +521,22 @@ func (a *App) DeleteEphemeralPost(userId, postId string) {
|
||||
func (a *App) UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model.AppError) {
|
||||
post.SanitizeProps()
|
||||
|
||||
postLists, err := a.Srv().Store.Post().Get(post.Id, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
postLists, nErr := a.Srv().Store.Post().Get(post.Id, false)
|
||||
if nErr != nil {
|
||||
var nfErr *store.ErrNotFound
|
||||
var invErr *store.ErrInvalidInput
|
||||
switch {
|
||||
case errors.As(nErr, &invErr):
|
||||
return nil, model.NewAppError("UpdatePost", "app.post.get.app_error", nil, invErr.Error(), http.StatusBadRequest)
|
||||
case errors.As(nErr, &nfErr):
|
||||
return nil, model.NewAppError("UpdatePost", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound)
|
||||
default:
|
||||
return nil, model.NewAppError("UpdatePost", "app.post.get.app_error", nil, nErr.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
oldPost := postLists.Posts[post.Id]
|
||||
|
||||
var err *model.AppError
|
||||
if oldPost == nil {
|
||||
err = model.NewAppError("UpdatePost", "api.post.update_post.find.app_error", nil, "id="+post.Id, http.StatusBadRequest)
|
||||
return nil, err
|
||||
@@ -586,9 +605,15 @@ func (a *App) UpdatePost(post *model.Post, safeUpdate bool) (*model.Post, *model
|
||||
}
|
||||
}
|
||||
|
||||
rpost, err := a.Srv().Store.Post().Update(newPost, oldPost)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
rpost, nErr := a.Srv().Store.Post().Update(newPost, oldPost)
|
||||
if nErr != nil {
|
||||
var appErr *model.AppError
|
||||
switch {
|
||||
case errors.As(nErr, &appErr):
|
||||
return nil, appErr
|
||||
default:
|
||||
return nil, model.NewAppError("UpdatePost", "app.post.update.app_error", nil, nErr.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
if pluginsEnvironment := a.GetPluginsEnvironment(); pluginsEnvironment != nil {
|
||||
@@ -659,11 +684,36 @@ func (a *App) GetPostsSince(options model.GetPostsSinceOptions) (*model.PostList
|
||||
}
|
||||
|
||||
func (a *App) GetSinglePost(postId string) (*model.Post, *model.AppError) {
|
||||
return a.Srv().Store.Post().GetSingle(postId)
|
||||
post, err := a.Srv().Store.Post().GetSingle(postId)
|
||||
if err != nil {
|
||||
var nfErr *store.ErrNotFound
|
||||
switch {
|
||||
case errors.As(err, &nfErr):
|
||||
return nil, model.NewAppError("GetSinglePost", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound)
|
||||
default:
|
||||
return nil, model.NewAppError("GetSinglePost", "app.post.get.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
return post, nil
|
||||
}
|
||||
|
||||
func (a *App) GetPostThread(postId string, skipFetchThreads bool) (*model.PostList, *model.AppError) {
|
||||
return a.Srv().Store.Post().Get(postId, skipFetchThreads)
|
||||
posts, err := a.Srv().Store.Post().Get(postId, skipFetchThreads)
|
||||
if err != nil {
|
||||
var nfErr *store.ErrNotFound
|
||||
var invErr *store.ErrInvalidInput
|
||||
switch {
|
||||
case errors.As(err, &invErr):
|
||||
return nil, model.NewAppError("GetPostThread", "app.post.get.app_error", nil, invErr.Error(), http.StatusBadRequest)
|
||||
case errors.As(err, &nfErr):
|
||||
return nil, model.NewAppError("GetPostThread", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound)
|
||||
default:
|
||||
return nil, model.NewAppError("GetPostThread", "app.post.get.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
return posts, nil
|
||||
}
|
||||
|
||||
func (a *App) GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError) {
|
||||
@@ -679,9 +729,18 @@ func (a *App) GetFlaggedPostsForChannel(userId, channelId string, offset int, li
|
||||
}
|
||||
|
||||
func (a *App) GetPermalinkPost(postId string, userId string) (*model.PostList, *model.AppError) {
|
||||
list, err := a.Srv().Store.Post().Get(postId, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
list, nErr := a.Srv().Store.Post().Get(postId, false)
|
||||
if nErr != nil {
|
||||
var nfErr *store.ErrNotFound
|
||||
var invErr *store.ErrInvalidInput
|
||||
switch {
|
||||
case errors.As(nErr, &invErr):
|
||||
return nil, model.NewAppError("GetPermalinkPost", "app.post.get.app_error", nil, invErr.Error(), http.StatusBadRequest)
|
||||
case errors.As(nErr, &nfErr):
|
||||
return nil, model.NewAppError("GetPermalinkPost", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound)
|
||||
default:
|
||||
return nil, model.NewAppError("GetPermalinkPost", "app.post.get.app_error", nil, nErr.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
if len(list.Order) != 1 {
|
||||
@@ -842,10 +901,9 @@ func (a *App) GetPostsForChannelAroundLastUnread(channelId, userId string, limit
|
||||
}
|
||||
|
||||
func (a *App) DeletePost(postId, deleteByID string) (*model.Post, *model.AppError) {
|
||||
post, err := a.Srv().Store.Post().GetSingle(postId)
|
||||
if err != nil {
|
||||
err.StatusCode = http.StatusBadRequest
|
||||
return nil, err
|
||||
post, nErr := a.Srv().Store.Post().GetSingle(postId)
|
||||
if nErr != nil {
|
||||
return nil, model.NewAppError("DeletePost", "app.post.get.app_error", nil, nErr.Error(), http.StatusBadRequest)
|
||||
}
|
||||
|
||||
channel, err := a.GetChannel(post.ChannelId)
|
||||
@@ -859,7 +917,13 @@ func (a *App) DeletePost(postId, deleteByID string) (*model.Post, *model.AppErro
|
||||
}
|
||||
|
||||
if err := a.Srv().Store.Post().Delete(postId, model.GetMillis(), deleteByID); err != nil {
|
||||
return nil, err
|
||||
var nfErr *store.ErrNotFound
|
||||
switch {
|
||||
case errors.As(err, &nfErr):
|
||||
return nil, model.NewAppError("DeletePost", "app.post.delete.app_error", nil, nfErr.Error(), http.StatusNotFound)
|
||||
default:
|
||||
return nil, model.NewAppError("DeletePost", "app.post.delete.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_POST_DELETED, "", post.ChannelId, "", nil)
|
||||
@@ -1047,7 +1111,7 @@ func (a *App) GetFileInfosForPostWithMigration(postId string) ([]*model.FileInfo
|
||||
pchan := make(chan store.StoreResult, 1)
|
||||
go func() {
|
||||
post, err := a.Srv().Store.Post().GetSingle(postId)
|
||||
pchan <- store.StoreResult{Data: post, Err: err}
|
||||
pchan <- store.StoreResult{Data: post, NErr: err}
|
||||
close(pchan)
|
||||
}()
|
||||
|
||||
@@ -1059,8 +1123,14 @@ func (a *App) GetFileInfosForPostWithMigration(postId string) ([]*model.FileInfo
|
||||
if len(infos) == 0 {
|
||||
// No FileInfos were returned so check if they need to be created for this post
|
||||
result := <-pchan
|
||||
if result.Err != nil {
|
||||
return nil, result.Err
|
||||
if result.NErr != nil {
|
||||
var nfErr *store.ErrNotFound
|
||||
switch {
|
||||
case errors.As(result.NErr, &nfErr):
|
||||
return nil, model.NewAppError("GetFileInfosForPostWithMigration", "app.post.get.app_error", nil, nfErr.Error(), http.StatusNotFound)
|
||||
default:
|
||||
return nil, model.NewAppError("GetFileInfosForPostWithMigration", "app.post.get.app_error", nil, result.NErr.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
post := result.Data.(*model.Post)
|
||||
|
||||
|
||||
@@ -1489,7 +1489,7 @@ func (a *App) PermanentDeleteUser(user *model.User) *model.AppError {
|
||||
}
|
||||
|
||||
if err := a.Srv().Store.Post().PermanentDeleteByUser(user.Id); err != nil {
|
||||
return err
|
||||
return model.NewAppError("PermanentDeleteUser", "app.post.permanent_delete_by_user.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
if err := a.Srv().Store.Bot().PermanentDelete(user.Id); err != nil {
|
||||
|
||||
68
i18n/en.json
68
i18n/en.json
@@ -4246,6 +4246,34 @@
|
||||
"id": "app.plugin.write_file.saving.app_error",
|
||||
"translation": "An error occurred while saving the file."
|
||||
},
|
||||
{
|
||||
"id": "app.post.delete.app_error",
|
||||
"translation": "Unable to delete the post."
|
||||
},
|
||||
{
|
||||
"id": "app.post.get.app_error",
|
||||
"translation": "Unable to get the post."
|
||||
},
|
||||
{
|
||||
"id": "app.post.permanent_delete_by_channel.app_error",
|
||||
"translation": "Unable to delete the posts by channel."
|
||||
},
|
||||
{
|
||||
"id": "app.post.permanent_delete_by_user.app_error",
|
||||
"translation": "Unable to select the posts to delete for the user."
|
||||
},
|
||||
{
|
||||
"id": "app.post.save.app_error",
|
||||
"translation": "Unable to save the Post."
|
||||
},
|
||||
{
|
||||
"id": "app.post.save.existing.app_error",
|
||||
"translation": "You cannot update an existing Post."
|
||||
},
|
||||
{
|
||||
"id": "app.post.update.app_error",
|
||||
"translation": "Unable to update the Post."
|
||||
},
|
||||
{
|
||||
"id": "app.preference.delete.app_error",
|
||||
"translation": "We encountered an error while deleting preferences."
|
||||
@@ -7174,14 +7202,6 @@
|
||||
"id": "store.sql_post.analytics_user_counts_posts_by_day.app_error",
|
||||
"translation": "Unable to get user counts with posts."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.delete.app_error",
|
||||
"translation": "Unable to delete the post."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.get.app_error",
|
||||
"translation": "Unable to get the post."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.get_direct_posts.app_error",
|
||||
"translation": "Unable to get direct posts."
|
||||
@@ -7242,50 +7262,18 @@
|
||||
"id": "store.sql_post.overwrite.app_error",
|
||||
"translation": "Unable to overwrite the Post."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.permanent_delete.app_error",
|
||||
"translation": "Unable to delete the post."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.permanent_delete_all_comments_by_user.app_error",
|
||||
"translation": "Unable to delete the comments for user."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.permanent_delete_batch.app_error",
|
||||
"translation": "We encountered an error permanently deleting the batch of posts."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.permanent_delete_by_channel.app_error",
|
||||
"translation": "Unable to delete the posts by channel."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.permanent_delete_by_user.app_error",
|
||||
"translation": "Unable to select the posts to delete for the user."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.permanent_delete_by_user.too_many.app_error",
|
||||
"translation": "Unable to select the posts to delete for the user (too many), please re-run."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.populate_reply_count.app_error",
|
||||
"translation": "Unable to get the post replies count"
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.save.app_error",
|
||||
"translation": "Unable to save the Post."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.save.existing.app_error",
|
||||
"translation": "You cannot update an existing Post."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.search.disabled",
|
||||
"translation": "Searching has been disabled on this server. Please contact your System Administrator."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_post.update.app_error",
|
||||
"translation": "Unable to update the Post."
|
||||
},
|
||||
{
|
||||
"id": "store.sql_status.get.app_error",
|
||||
"translation": "Encountered an error retrieving the status."
|
||||
|
||||
@@ -4742,7 +4742,7 @@ func (s *OpenTracingLayerPostStore) ClearCaches() {
|
||||
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerPostStore) Delete(postId string, time int64, deleteByID string) *model.AppError {
|
||||
func (s *OpenTracingLayerPostStore) Delete(postId string, time int64, deleteByID string) error {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.Delete")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
@@ -4760,7 +4760,7 @@ func (s *OpenTracingLayerPostStore) Delete(postId string, time int64, deleteByID
|
||||
return resultVar0
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerPostStore) Get(id string, skipFetchThreads bool) (*model.PostList, *model.AppError) {
|
||||
func (s *OpenTracingLayerPostStore) Get(id string, skipFetchThreads bool) (*model.PostList, error) {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.Get")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
@@ -5136,7 +5136,7 @@ func (s *OpenTracingLayerPostStore) GetRepliesForExport(parentId string) ([]*mod
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerPostStore) GetSingle(id string) (*model.Post, *model.AppError) {
|
||||
func (s *OpenTracingLayerPostStore) GetSingle(id string) (*model.Post, error) {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.GetSingle")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
@@ -5221,7 +5221,7 @@ func (s *OpenTracingLayerPostStore) PermanentDeleteBatch(endTime int64, limit in
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerPostStore) PermanentDeleteByChannel(channelId string) *model.AppError {
|
||||
func (s *OpenTracingLayerPostStore) PermanentDeleteByChannel(channelId string) error {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.PermanentDeleteByChannel")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
@@ -5239,7 +5239,7 @@ func (s *OpenTracingLayerPostStore) PermanentDeleteByChannel(channelId string) *
|
||||
return resultVar0
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerPostStore) PermanentDeleteByUser(userId string) *model.AppError {
|
||||
func (s *OpenTracingLayerPostStore) PermanentDeleteByUser(userId string) error {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.PermanentDeleteByUser")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
@@ -5257,7 +5257,7 @@ func (s *OpenTracingLayerPostStore) PermanentDeleteByUser(userId string) *model.
|
||||
return resultVar0
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerPostStore) Save(post *model.Post) (*model.Post, *model.AppError) {
|
||||
func (s *OpenTracingLayerPostStore) Save(post *model.Post) (*model.Post, error) {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.Save")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
@@ -5275,7 +5275,7 @@ func (s *OpenTracingLayerPostStore) Save(post *model.Post) (*model.Post, *model.
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError) {
|
||||
func (s *OpenTracingLayerPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, error) {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.SaveMultiple")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
@@ -5329,7 +5329,7 @@ func (s *OpenTracingLayerPostStore) SearchPostsInTeamForUser(paramsList []*model
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *OpenTracingLayerPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, *model.AppError) {
|
||||
func (s *OpenTracingLayerPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, error) {
|
||||
origCtx := s.Root.Store.Context()
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(s.Root.Store.Context(), "PostStore.Update")
|
||||
s.Root.Store.SetContext(newCtx)
|
||||
|
||||
@@ -75,7 +75,7 @@ func (s SearchPostStore) deleteUserPostsIndex(userID string) {
|
||||
}
|
||||
}
|
||||
|
||||
func (s SearchPostStore) Update(newPost, oldPost *model.Post) (*model.Post, *model.AppError) {
|
||||
func (s SearchPostStore) Update(newPost, oldPost *model.Post) (*model.Post, error) {
|
||||
post, err := s.PostStore.Update(newPost, oldPost)
|
||||
|
||||
if err == nil {
|
||||
@@ -92,7 +92,7 @@ func (s *SearchPostStore) Overwrite(post *model.Post) (*model.Post, *model.AppEr
|
||||
return post, err
|
||||
}
|
||||
|
||||
func (s SearchPostStore) Save(post *model.Post) (*model.Post, *model.AppError) {
|
||||
func (s SearchPostStore) Save(post *model.Post) (*model.Post, error) {
|
||||
npost, err := s.PostStore.Save(post)
|
||||
|
||||
if err == nil {
|
||||
@@ -101,7 +101,7 @@ func (s SearchPostStore) Save(post *model.Post) (*model.Post, *model.AppError) {
|
||||
return npost, err
|
||||
}
|
||||
|
||||
func (s SearchPostStore) Delete(postId string, date int64, deletedByID string) *model.AppError {
|
||||
func (s SearchPostStore) Delete(postId string, date int64, deletedByID string) error {
|
||||
err := s.PostStore.Delete(postId, date, deletedByID)
|
||||
|
||||
if err == nil {
|
||||
@@ -115,7 +115,7 @@ func (s SearchPostStore) Delete(postId string, date int64, deletedByID string) *
|
||||
return err
|
||||
}
|
||||
|
||||
func (s SearchPostStore) PermanentDeleteByUser(userID string) *model.AppError {
|
||||
func (s SearchPostStore) PermanentDeleteByUser(userID string) error {
|
||||
err := s.PostStore.PermanentDeleteByUser(userID)
|
||||
if err == nil {
|
||||
s.deleteUserPostsIndex(userID)
|
||||
@@ -123,7 +123,7 @@ func (s SearchPostStore) PermanentDeleteByUser(userID string) *model.AppError {
|
||||
return err
|
||||
}
|
||||
|
||||
func (s SearchPostStore) PermanentDeleteByChannel(channelID string) *model.AppError {
|
||||
func (s SearchPostStore) PermanentDeleteByChannel(channelID string) error {
|
||||
err := s.PostStore.PermanentDeleteByChannel(channelID)
|
||||
if err == nil {
|
||||
s.deleteChannelPostsIndex(channelID)
|
||||
|
||||
@@ -12,6 +12,8 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
sq "github.com/Masterminds/squirrel"
|
||||
"github.com/mattermost/mattermost-server/v5/einterfaces"
|
||||
"github.com/mattermost/mattermost-server/v5/mlog"
|
||||
@@ -99,14 +101,14 @@ func (s *SqlPostStore) createIndexesIfNotExists() {
|
||||
s.CreateFullTextIndexIfNotExists("idx_posts_hashtags_txt", "Posts", "Hashtags")
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError) {
|
||||
func (s *SqlPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, error) {
|
||||
channelNewPosts := make(map[string]int)
|
||||
maxDateNewPosts := make(map[string]int64)
|
||||
rootIds := make(map[string]int)
|
||||
maxDateRootIds := make(map[string]int64)
|
||||
for idx, post := range posts {
|
||||
if len(post.Id) > 0 {
|
||||
return nil, idx, model.NewAppError("SqlPostStore.Save", "store.sql_post.save.existing.app_error", nil, "id="+post.Id, http.StatusBadRequest)
|
||||
return nil, idx, store.NewErrInvalidInput("Post", "id", post.Id)
|
||||
}
|
||||
post.PreSave()
|
||||
maxPostSize := s.GetMaxPostSize()
|
||||
@@ -147,17 +149,17 @@ func (s *SqlPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, *m
|
||||
}
|
||||
}
|
||||
|
||||
query := s.getQueryBuilder().Insert("Posts").Columns(postSliceColumns()...)
|
||||
builder := s.getQueryBuilder().Insert("Posts").Columns(postSliceColumns()...)
|
||||
for _, post := range posts {
|
||||
query = query.Values(postToSlice(post)...)
|
||||
builder = builder.Values(postToSlice(post)...)
|
||||
}
|
||||
sql, args, err := query.ToSql()
|
||||
query, args, err := builder.ToSql()
|
||||
if err != nil {
|
||||
return nil, -1, model.NewAppError("SqlPostStore.Save", "store.sql_post.save.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
return nil, -1, errors.Wrap(err, "post_tosql")
|
||||
}
|
||||
|
||||
if _, err := s.GetMaster().Exec(sql, args...); err != nil {
|
||||
return nil, -1, model.NewAppError("SqlPostStore.Save", "store.sql_post.save.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||
if _, err := s.GetMaster().Exec(query, args...); err != nil {
|
||||
return nil, -1, errors.Wrap(err, "failed to save Post")
|
||||
}
|
||||
|
||||
for channelId, count := range channelNewPosts {
|
||||
@@ -193,7 +195,7 @@ func (s *SqlPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, *m
|
||||
return posts, -1, nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) Save(post *model.Post) (*model.Post, *model.AppError) {
|
||||
func (s *SqlPostStore) Save(post *model.Post) (*model.Post, error) {
|
||||
posts, _, err := s.SaveMultiple([]*model.Post{post})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -237,7 +239,7 @@ func (s *SqlPostStore) populateReplyCount(posts []*model.Post) *model.AppError {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, *model.AppError) {
|
||||
func (s *SqlPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, error) {
|
||||
newPost.UpdateAt = model.GetMillis()
|
||||
newPost.PreCommit()
|
||||
|
||||
@@ -254,7 +256,7 @@ func (s *SqlPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.
|
||||
}
|
||||
|
||||
if _, err := s.GetMaster().Update(newPost); err != nil {
|
||||
return nil, model.NewAppError("SqlPostStore.Update", "store.sql_post.update.app_error", nil, "id="+newPost.Id+", "+err.Error(), http.StatusInternalServerError)
|
||||
return nil, errors.Wrapf(err, "failed to update Post with id=%s", newPost.Id)
|
||||
}
|
||||
|
||||
time := model.GetMillis()
|
||||
@@ -396,18 +398,22 @@ func (s *SqlPostStore) GetFlaggedPostsForChannel(userId, channelId string, offse
|
||||
return pl, nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) Get(id string, skipFetchThreads bool) (*model.PostList, *model.AppError) {
|
||||
func (s *SqlPostStore) Get(id string, skipFetchThreads bool) (*model.PostList, error) {
|
||||
pl := model.NewPostList()
|
||||
|
||||
if len(id) == 0 {
|
||||
return nil, model.NewAppError("SqlPostStore.GetPost", "store.sql_post.get.app_error", nil, "id="+id, http.StatusBadRequest)
|
||||
return nil, store.NewErrInvalidInput("Post", "id", id)
|
||||
}
|
||||
|
||||
var post model.Post
|
||||
postFetchQuery := "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 = :Id AND p.DeleteAt = 0"
|
||||
err := s.GetReplica().SelectOne(&post, postFetchQuery, map[string]interface{}{"Id": id})
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlPostStore.GetPost", "store.sql_post.get.app_error", nil, "id="+id+err.Error(), http.StatusNotFound)
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, store.NewErrNotFound("Post", id)
|
||||
}
|
||||
|
||||
return nil, errors.Wrapf(err, "failed to get Post with id=%s", id)
|
||||
}
|
||||
pl.AddPost(&post)
|
||||
pl.AddOrder(id)
|
||||
@@ -419,13 +425,13 @@ func (s *SqlPostStore) Get(id string, skipFetchThreads bool) (*model.PostList, *
|
||||
}
|
||||
|
||||
if len(rootId) == 0 {
|
||||
return nil, model.NewAppError("SqlPostStore.GetPost", "store.sql_post.get.app_error", nil, "root_id="+rootId, http.StatusInternalServerError)
|
||||
return nil, errors.Wrapf(err, "invalid rootId with value=%s", rootId)
|
||||
}
|
||||
|
||||
var posts []*model.Post
|
||||
_, err = s.GetReplica().Select(&posts, "SELECT *, (SELECT count(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 (Id = :Id OR RootId = :RootId) AND DeleteAt = 0", map[string]interface{}{"Id": rootId, "RootId": rootId})
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlPostStore.GetPost", "store.sql_post.get.app_error", nil, "root_id="+rootId+err.Error(), http.StatusInternalServerError)
|
||||
return nil, errors.Wrap(err, "failed to find Posts")
|
||||
}
|
||||
|
||||
for _, p := range posts {
|
||||
@@ -436,11 +442,15 @@ func (s *SqlPostStore) Get(id string, skipFetchThreads bool) (*model.PostList, *
|
||||
return pl, nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) GetSingle(id string) (*model.Post, *model.AppError) {
|
||||
func (s *SqlPostStore) GetSingle(id string) (*model.Post, error) {
|
||||
var post model.Post
|
||||
err := s.GetReplica().SelectOne(&post, "SELECT * FROM Posts WHERE Id = :Id AND DeleteAt = 0", map[string]interface{}{"Id": id})
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlPostStore.GetSingle", "store.sql_post.get.app_error", nil, "id="+id+err.Error(), http.StatusNotFound)
|
||||
if err == sql.ErrNoRows {
|
||||
return nil, store.NewErrNotFound("Post", id)
|
||||
}
|
||||
|
||||
return nil, errors.Wrapf(err, "failed to get Post with id=%s", id)
|
||||
}
|
||||
return &post, nil
|
||||
}
|
||||
@@ -466,45 +476,44 @@ func (s *SqlPostStore) GetEtag(channelId string, allowFromCache bool) string {
|
||||
return result
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) Delete(postId string, time int64, deleteByID string) *model.AppError {
|
||||
|
||||
appErr := func(errMsg string) *model.AppError {
|
||||
return model.NewAppError("SqlPostStore.Delete", "store.sql_post.delete.app_error", nil, "id="+postId+", err="+errMsg, http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) Delete(postId string, time int64, deleteByID string) error {
|
||||
var post model.Post
|
||||
err := s.GetReplica().SelectOne(&post, "SELECT * FROM Posts WHERE Id = :Id AND DeleteAt = 0", map[string]interface{}{"Id": postId})
|
||||
if err != nil {
|
||||
return appErr(err.Error())
|
||||
if err == sql.ErrNoRows {
|
||||
return store.NewErrNotFound("Post", postId)
|
||||
}
|
||||
|
||||
return errors.Wrapf(err, "failed to delete Post with id=%s", postId)
|
||||
}
|
||||
|
||||
post.AddProp(model.POST_PROPS_DELETE_BY, deleteByID)
|
||||
|
||||
_, err = s.GetMaster().Exec("UPDATE Posts SET DeleteAt = :DeleteAt, UpdateAt = :UpdateAt, Props = :Props WHERE Id = :Id OR RootId = :RootId", map[string]interface{}{"DeleteAt": time, "UpdateAt": time, "Id": postId, "RootId": postId, "Props": model.StringInterfaceToJson(post.GetProps())})
|
||||
if err != nil {
|
||||
return appErr(err.Error())
|
||||
return errors.Wrap(err, "failed to update Posts")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) permanentDelete(postId string) *model.AppError {
|
||||
func (s *SqlPostStore) permanentDelete(postId string) error {
|
||||
_, err := s.GetMaster().Exec("DELETE FROM Posts WHERE Id = :Id OR RootId = :RootId", map[string]interface{}{"Id": postId, "RootId": postId})
|
||||
if err != nil {
|
||||
return model.NewAppError("SqlPostStore.Delete", "store.sql_post.permanent_delete.app_error", nil, "id="+postId+", err="+err.Error(), http.StatusInternalServerError)
|
||||
return errors.Wrapf(err, "failed to delete Post with id=%s", postId)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) permanentDeleteAllCommentByUser(userId string) *model.AppError {
|
||||
func (s *SqlPostStore) permanentDeleteAllCommentByUser(userId string) error {
|
||||
_, err := s.GetMaster().Exec("DELETE FROM Posts WHERE UserId = :UserId AND RootId != ''", map[string]interface{}{"UserId": userId})
|
||||
if err != nil {
|
||||
return model.NewAppError("SqlPostStore.permanentDeleteAllCommentByUser", "store.sql_post.permanent_delete_all_comments_by_user.app_error", nil, "userId="+userId+", err="+err.Error(), http.StatusInternalServerError)
|
||||
return errors.Wrapf(err, "failed to delete Posts with userId=%s", userId)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) PermanentDeleteByUser(userId string) *model.AppError {
|
||||
func (s *SqlPostStore) PermanentDeleteByUser(userId string) error {
|
||||
// First attempt to delete all the comments for a user
|
||||
if err := s.permanentDeleteAllCommentByUser(userId); err != nil {
|
||||
return err
|
||||
@@ -519,13 +528,13 @@ func (s *SqlPostStore) PermanentDeleteByUser(userId string) *model.AppError {
|
||||
var ids []string
|
||||
_, err := s.GetMaster().Select(&ids, "SELECT Id FROM Posts WHERE UserId = :UserId LIMIT 1000", map[string]interface{}{"UserId": userId})
|
||||
if err != nil {
|
||||
return model.NewAppError("SqlPostStore.PermanentDeleteByUser.select", "store.sql_post.permanent_delete_by_user.app_error", nil, "userId="+userId+", err="+err.Error(), http.StatusInternalServerError)
|
||||
return errors.Wrapf(err, "failed to find Posts with userId=%s", userId)
|
||||
}
|
||||
|
||||
found = false
|
||||
for _, id := range ids {
|
||||
found = true
|
||||
if err := s.permanentDelete(id); err != nil {
|
||||
if err = s.permanentDelete(id); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -533,16 +542,16 @@ func (s *SqlPostStore) PermanentDeleteByUser(userId string) *model.AppError {
|
||||
// This is a fail safe, give up if more than 10k messages
|
||||
count++
|
||||
if count >= 10 {
|
||||
return model.NewAppError("SqlPostStore.PermanentDeleteByUser.toolarge", "store.sql_post.permanent_delete_by_user.too_many.app_error", nil, "userId="+userId, http.StatusInternalServerError)
|
||||
return errors.Wrapf(err, "too many Posts to delete with userId=%s", userId)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *SqlPostStore) PermanentDeleteByChannel(channelId string) *model.AppError {
|
||||
func (s *SqlPostStore) PermanentDeleteByChannel(channelId string) error {
|
||||
if _, err := s.GetMaster().Exec("DELETE FROM Posts WHERE ChannelId = :ChannelId", map[string]interface{}{"ChannelId": channelId}); err != nil {
|
||||
return model.NewAppError("SqlPostStore.PermanentDeleteByChannel", "store.sql_post.permanent_delete_by_channel.app_error", nil, "channel_id="+channelId+", "+err.Error(), http.StatusInternalServerError)
|
||||
return errors.Wrapf(err, "failed to delete Posts with channelId=%s", channelId)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -1541,7 +1550,7 @@ func (s *SqlPostStore) GetOldest() (*model.Post, *model.AppError) {
|
||||
var post model.Post
|
||||
err := s.GetReplica().SelectOne(&post, "SELECT * FROM Posts ORDER BY CreateAt LIMIT 1")
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("SqlPostStore.GetOldest", "store.sql_post.get.app_error", nil, err.Error(), http.StatusNotFound)
|
||||
return nil, model.NewAppError("SqlPostStore.GetOldest", "app.post.get.app_error", nil, err.Error(), http.StatusNotFound)
|
||||
}
|
||||
|
||||
return &post, nil
|
||||
|
||||
@@ -249,14 +249,14 @@ type ChannelMemberHistoryStore interface {
|
||||
}
|
||||
|
||||
type PostStore interface {
|
||||
SaveMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError)
|
||||
Save(post *model.Post) (*model.Post, *model.AppError)
|
||||
Update(newPost *model.Post, oldPost *model.Post) (*model.Post, *model.AppError)
|
||||
Get(id string, skipFetchThreads bool) (*model.PostList, *model.AppError)
|
||||
GetSingle(id string) (*model.Post, *model.AppError)
|
||||
Delete(postId string, time int64, deleteByID string) *model.AppError
|
||||
PermanentDeleteByUser(userId string) *model.AppError
|
||||
PermanentDeleteByChannel(channelId string) *model.AppError
|
||||
SaveMultiple(posts []*model.Post) ([]*model.Post, int, error)
|
||||
Save(post *model.Post) (*model.Post, error)
|
||||
Update(newPost *model.Post, oldPost *model.Post) (*model.Post, error)
|
||||
Get(id string, skipFetchThreads bool) (*model.PostList, error)
|
||||
GetSingle(id string) (*model.Post, error)
|
||||
Delete(postId string, time int64, deleteByID string) error
|
||||
PermanentDeleteByUser(userId string) error
|
||||
PermanentDeleteByChannel(channelId string) error
|
||||
GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, *model.AppError)
|
||||
GetFlaggedPosts(userId string, offset int, limit int) (*model.PostList, *model.AppError)
|
||||
// @openTracingParams userId, teamId, offset, limit
|
||||
|
||||
@@ -4311,12 +4311,12 @@ func testChannelStoreGetMemberForPost(t *testing.T, ss store.Store) {
|
||||
})
|
||||
require.Nil(t, err)
|
||||
|
||||
p1, err := ss.Post().Save(&model.Post{
|
||||
p1, nErr := ss.Post().Save(&model.Post{
|
||||
UserId: model.NewId(),
|
||||
ChannelId: o1.Id,
|
||||
Message: "test",
|
||||
})
|
||||
require.Nil(t, err)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
r1, err := ss.Channel().GetMemberForPost(p1.Id, m1.UserId)
|
||||
require.Nil(t, err, err)
|
||||
|
||||
@@ -23,8 +23,8 @@ func cleanupStoreState(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err, "failed cleaning up test user %s", u.Username)
|
||||
|
||||
//remove all posts by this user
|
||||
err = ss.Post().PermanentDeleteByUser(u.Id)
|
||||
require.Nil(t, err, "failed cleaning all posts of test user %s", u.Username)
|
||||
nErr := ss.Post().PermanentDeleteByUser(u.Id)
|
||||
require.Nil(t, nErr, "failed cleaning all posts of test user %s", u.Username)
|
||||
}
|
||||
|
||||
//remove existing channels
|
||||
@@ -135,32 +135,32 @@ func testComplianceExport(t *testing.T, ss store.Store) {
|
||||
o1.UserId = u1.Id
|
||||
o1.CreateAt = model.GetMillis()
|
||||
o1.Message = "zz" + model.NewId() + "b"
|
||||
o1, err = ss.Post().Save(o1)
|
||||
require.Nil(t, err)
|
||||
o1, nErr = ss.Post().Save(o1)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o1a := &model.Post{}
|
||||
o1a.ChannelId = c1.Id
|
||||
o1a.UserId = u1.Id
|
||||
o1a.CreateAt = o1.CreateAt + 10
|
||||
o1a.Message = "zz" + model.NewId() + "b"
|
||||
_, err = ss.Post().Save(o1a)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(o1a)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o2 := &model.Post{}
|
||||
o2.ChannelId = c1.Id
|
||||
o2.UserId = u1.Id
|
||||
o2.CreateAt = o1.CreateAt + 20
|
||||
o2.Message = "zz" + model.NewId() + "b"
|
||||
_, err = ss.Post().Save(o2)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(o2)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o2a := &model.Post{}
|
||||
o2a.ChannelId = c1.Id
|
||||
o2a.UserId = u2.Id
|
||||
o2a.CreateAt = o1.CreateAt + 30
|
||||
o2a.Message = "zz" + model.NewId() + "b"
|
||||
o2a, err = ss.Post().Save(o2a)
|
||||
require.Nil(t, err)
|
||||
o2a, nErr = ss.Post().Save(o2a)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
@@ -246,40 +246,40 @@ func testComplianceExportDirectMessages(t *testing.T, ss store.Store) {
|
||||
o1.UserId = u1.Id
|
||||
o1.CreateAt = model.GetMillis()
|
||||
o1.Message = "zz" + model.NewId() + "b"
|
||||
o1, err = ss.Post().Save(o1)
|
||||
require.Nil(t, err)
|
||||
o1, nErr = ss.Post().Save(o1)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o1a := &model.Post{}
|
||||
o1a.ChannelId = c1.Id
|
||||
o1a.UserId = u1.Id
|
||||
o1a.CreateAt = o1.CreateAt + 10
|
||||
o1a.Message = "zz" + model.NewId() + "b"
|
||||
_, err = ss.Post().Save(o1a)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(o1a)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o2 := &model.Post{}
|
||||
o2.ChannelId = c1.Id
|
||||
o2.UserId = u1.Id
|
||||
o2.CreateAt = o1.CreateAt + 20
|
||||
o2.Message = "zz" + model.NewId() + "b"
|
||||
_, err = ss.Post().Save(o2)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(o2)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o2a := &model.Post{}
|
||||
o2a.ChannelId = c1.Id
|
||||
o2a.UserId = u2.Id
|
||||
o2a.CreateAt = o1.CreateAt + 30
|
||||
o2a.Message = "zz" + model.NewId() + "b"
|
||||
_, err = ss.Post().Save(o2a)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(o2a)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o3 := &model.Post{}
|
||||
o3.ChannelId = cDM.Id
|
||||
o3.UserId = u1.Id
|
||||
o3.CreateAt = o1.CreateAt + 40
|
||||
o3.Message = "zz" + model.NewId() + "b"
|
||||
o3, err = ss.Post().Save(o3)
|
||||
require.Nil(t, err)
|
||||
o3, nErr = ss.Post().Save(o3)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
|
||||
@@ -93,23 +93,21 @@ func (_m *PostStore) ClearCaches() {
|
||||
}
|
||||
|
||||
// Delete provides a mock function with given fields: postId, time, deleteByID
|
||||
func (_m *PostStore) Delete(postId string, time int64, deleteByID string) *model.AppError {
|
||||
func (_m *PostStore) Delete(postId string, time int64, deleteByID string) error {
|
||||
ret := _m.Called(postId, time, deleteByID)
|
||||
|
||||
var r0 *model.AppError
|
||||
if rf, ok := ret.Get(0).(func(string, int64, string) *model.AppError); ok {
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(string, int64, string) error); ok {
|
||||
r0 = rf(postId, time, deleteByID)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*model.AppError)
|
||||
}
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Get provides a mock function with given fields: id, skipFetchThreads
|
||||
func (_m *PostStore) Get(id string, skipFetchThreads bool) (*model.PostList, *model.AppError) {
|
||||
func (_m *PostStore) Get(id string, skipFetchThreads bool) (*model.PostList, error) {
|
||||
ret := _m.Called(id, skipFetchThreads)
|
||||
|
||||
var r0 *model.PostList
|
||||
@@ -121,13 +119,11 @@ func (_m *PostStore) Get(id string, skipFetchThreads bool) (*model.PostList, *mo
|
||||
}
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string, bool) *model.AppError); ok {
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(string, bool) error); ok {
|
||||
r1 = rf(id, skipFetchThreads)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
@@ -606,7 +602,7 @@ func (_m *PostStore) GetRepliesForExport(parentId string) ([]*model.ReplyForExpo
|
||||
}
|
||||
|
||||
// GetSingle provides a mock function with given fields: id
|
||||
func (_m *PostStore) GetSingle(id string) (*model.Post, *model.AppError) {
|
||||
func (_m *PostStore) GetSingle(id string) (*model.Post, error) {
|
||||
ret := _m.Called(id)
|
||||
|
||||
var r0 *model.Post
|
||||
@@ -618,13 +614,11 @@ func (_m *PostStore) GetSingle(id string) (*model.Post, *model.AppError) {
|
||||
}
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok {
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(string) error); ok {
|
||||
r1 = rf(id)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
@@ -716,39 +710,35 @@ func (_m *PostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, *m
|
||||
}
|
||||
|
||||
// PermanentDeleteByChannel provides a mock function with given fields: channelId
|
||||
func (_m *PostStore) PermanentDeleteByChannel(channelId string) *model.AppError {
|
||||
func (_m *PostStore) PermanentDeleteByChannel(channelId string) error {
|
||||
ret := _m.Called(channelId)
|
||||
|
||||
var r0 *model.AppError
|
||||
if rf, ok := ret.Get(0).(func(string) *model.AppError); ok {
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(string) error); ok {
|
||||
r0 = rf(channelId)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*model.AppError)
|
||||
}
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// PermanentDeleteByUser provides a mock function with given fields: userId
|
||||
func (_m *PostStore) PermanentDeleteByUser(userId string) *model.AppError {
|
||||
func (_m *PostStore) PermanentDeleteByUser(userId string) error {
|
||||
ret := _m.Called(userId)
|
||||
|
||||
var r0 *model.AppError
|
||||
if rf, ok := ret.Get(0).(func(string) *model.AppError); ok {
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(string) error); ok {
|
||||
r0 = rf(userId)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(*model.AppError)
|
||||
}
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// Save provides a mock function with given fields: post
|
||||
func (_m *PostStore) Save(post *model.Post) (*model.Post, *model.AppError) {
|
||||
func (_m *PostStore) Save(post *model.Post) (*model.Post, error) {
|
||||
ret := _m.Called(post)
|
||||
|
||||
var r0 *model.Post
|
||||
@@ -760,20 +750,18 @@ func (_m *PostStore) Save(post *model.Post) (*model.Post, *model.AppError) {
|
||||
}
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(*model.Post) *model.AppError); ok {
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(*model.Post) error); ok {
|
||||
r1 = rf(post)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// SaveMultiple provides a mock function with given fields: posts
|
||||
func (_m *PostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError) {
|
||||
func (_m *PostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, error) {
|
||||
ret := _m.Called(posts)
|
||||
|
||||
var r0 []*model.Post
|
||||
@@ -792,13 +780,11 @@ func (_m *PostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, *mod
|
||||
r1 = ret.Get(1).(int)
|
||||
}
|
||||
|
||||
var r2 *model.AppError
|
||||
if rf, ok := ret.Get(2).(func([]*model.Post) *model.AppError); ok {
|
||||
var r2 error
|
||||
if rf, ok := ret.Get(2).(func([]*model.Post) error); ok {
|
||||
r2 = rf(posts)
|
||||
} else {
|
||||
if ret.Get(2) != nil {
|
||||
r2 = ret.Get(2).(*model.AppError)
|
||||
}
|
||||
r2 = ret.Error(2)
|
||||
}
|
||||
|
||||
return r0, r1, r2
|
||||
@@ -855,7 +841,7 @@ func (_m *PostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams,
|
||||
}
|
||||
|
||||
// Update provides a mock function with given fields: newPost, oldPost
|
||||
func (_m *PostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, *model.AppError) {
|
||||
func (_m *PostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, error) {
|
||||
ret := _m.Called(newPost, oldPost)
|
||||
|
||||
var r0 *model.Post
|
||||
@@ -867,13 +853,11 @@ func (_m *PostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Po
|
||||
}
|
||||
}
|
||||
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(*model.Post, *model.Post) *model.AppError); ok {
|
||||
var r1 error
|
||||
if rf, ok := ret.Get(1).(func(*model.Post, *model.Post) error); ok {
|
||||
r1 = rf(newPost, oldPost)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
r1 = ret.Error(1)
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
|
||||
@@ -1543,32 +1543,32 @@ func testUserCountsWithPostsByDay(t *testing.T, ss store.Store) {
|
||||
o1.UserId = model.NewId()
|
||||
o1.CreateAt = utils.MillisFromTime(utils.Yesterday())
|
||||
o1.Message = "zz" + model.NewId() + "b"
|
||||
o1, err = ss.Post().Save(o1)
|
||||
require.Nil(t, err)
|
||||
o1, nErr = ss.Post().Save(o1)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o1a := &model.Post{}
|
||||
o1a.ChannelId = c1.Id
|
||||
o1a.UserId = model.NewId()
|
||||
o1a.CreateAt = o1.CreateAt
|
||||
o1a.Message = "zz" + model.NewId() + "b"
|
||||
_, err = ss.Post().Save(o1a)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(o1a)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o2 := &model.Post{}
|
||||
o2.ChannelId = c1.Id
|
||||
o2.UserId = model.NewId()
|
||||
o2.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24)
|
||||
o2.Message = "zz" + model.NewId() + "b"
|
||||
o2, err = ss.Post().Save(o2)
|
||||
require.Nil(t, err)
|
||||
o2, nErr = ss.Post().Save(o2)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o2a := &model.Post{}
|
||||
o2a.ChannelId = c1.Id
|
||||
o2a.UserId = o2.UserId
|
||||
o2a.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24)
|
||||
o2a.Message = "zz" + model.NewId() + "b"
|
||||
_, err = ss.Post().Save(o2a)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(o2a)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
r1, err := ss.Post().AnalyticsUserCountsWithPostsByDay(t1.Id)
|
||||
require.Nil(t, err)
|
||||
@@ -1602,32 +1602,32 @@ func testPostCountsByDay(t *testing.T, ss store.Store) {
|
||||
o1.UserId = model.NewId()
|
||||
o1.CreateAt = utils.MillisFromTime(utils.Yesterday())
|
||||
o1.Message = "zz" + model.NewId() + "b"
|
||||
o1, err = ss.Post().Save(o1)
|
||||
require.Nil(t, err)
|
||||
o1, nErr = ss.Post().Save(o1)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o1a := &model.Post{}
|
||||
o1a.ChannelId = c1.Id
|
||||
o1a.UserId = model.NewId()
|
||||
o1a.CreateAt = o1.CreateAt
|
||||
o1a.Message = "zz" + model.NewId() + "b"
|
||||
_, err = ss.Post().Save(o1a)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(o1a)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o2 := &model.Post{}
|
||||
o2.ChannelId = c1.Id
|
||||
o2.UserId = model.NewId()
|
||||
o2.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24 * 2)
|
||||
o2.Message = "zz" + model.NewId() + "b"
|
||||
o2, err = ss.Post().Save(o2)
|
||||
require.Nil(t, err)
|
||||
o2, nErr = ss.Post().Save(o2)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o2a := &model.Post{}
|
||||
o2a.ChannelId = c1.Id
|
||||
o2a.UserId = o2.UserId
|
||||
o2a.CreateAt = o1.CreateAt - (1000 * 60 * 60 * 24 * 2)
|
||||
o2a.Message = "zz" + model.NewId() + "b"
|
||||
_, err = ss.Post().Save(o2a)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(o2a)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
bot1 := &model.Bot{
|
||||
Username: "username",
|
||||
@@ -1643,16 +1643,16 @@ func testPostCountsByDay(t *testing.T, ss store.Store) {
|
||||
b1.ChannelId = c1.Id
|
||||
b1.UserId = bot1.UserId
|
||||
b1.CreateAt = utils.MillisFromTime(utils.Yesterday())
|
||||
_, err = ss.Post().Save(b1)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(b1)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
b1a := &model.Post{}
|
||||
b1a.Message = "bot message two"
|
||||
b1a.ChannelId = c1.Id
|
||||
b1a.UserId = bot1.UserId
|
||||
b1a.CreateAt = utils.MillisFromTime(utils.Yesterday()) - (1000 * 60 * 60 * 24 * 2)
|
||||
_, err = ss.Post().Save(b1a)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(b1a)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
@@ -2163,16 +2163,16 @@ func testPostStoreOverwriteMultiple(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, -1, errIdx)
|
||||
|
||||
r1, err = ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
r1, nErr := ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, nErr)
|
||||
ro1a := r1.Posts[o1.Id]
|
||||
|
||||
r2, err = ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, err)
|
||||
r2, nErr = ss.Post().Get(o1.Id, false)
|
||||
require.Nil(t, nErr)
|
||||
ro2a := r2.Posts[o2.Id]
|
||||
|
||||
r3, err = ss.Post().Get(o3.Id, false)
|
||||
require.Nil(t, err)
|
||||
r3, nErr = ss.Post().Get(o3.Id, false)
|
||||
require.Nil(t, nErr)
|
||||
ro3a := r3.Posts[o3.Id]
|
||||
|
||||
assert.Equal(t, ro1a.Message, o1a.Message, "Failed to overwrite/get")
|
||||
@@ -2193,12 +2193,12 @@ func testPostStoreOverwriteMultiple(t *testing.T, ss store.Store) {
|
||||
require.Nil(t, err)
|
||||
require.Equal(t, -1, errIdx)
|
||||
|
||||
r4, err = ss.Post().Get(o4.Id, false)
|
||||
require.Nil(t, err)
|
||||
r4, nErr := ss.Post().Get(o4.Id, false)
|
||||
require.Nil(t, nErr)
|
||||
ro4a := r4.Posts[o4.Id]
|
||||
|
||||
r5, err = ss.Post().Get(o5.Id, false)
|
||||
require.Nil(t, err)
|
||||
r5, nErr = ss.Post().Get(o5.Id, false)
|
||||
require.Nil(t, nErr)
|
||||
ro5a := r5.Posts[o5.Id]
|
||||
|
||||
require.Empty(t, ro4a.Filenames, "Failed to clear Filenames")
|
||||
@@ -2522,8 +2522,8 @@ func testPostStoreGetParentsForExportAfter(t *testing.T, ss store.Store) {
|
||||
p1.UserId = u1.Id
|
||||
p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
|
||||
p1.CreateAt = 1000
|
||||
p1, err = ss.Post().Save(p1)
|
||||
require.Nil(t, err)
|
||||
p1, nErr = ss.Post().Save(p1)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
posts, err := ss.Post().GetParentsForExportAfter(10000, strings.Repeat("0", 26))
|
||||
assert.Nil(t, err)
|
||||
@@ -2570,8 +2570,8 @@ func testPostStoreGetRepliesForExport(t *testing.T, ss store.Store) {
|
||||
p1.UserId = u1.Id
|
||||
p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
|
||||
p1.CreateAt = 1000
|
||||
p1, err = ss.Post().Save(p1)
|
||||
require.Nil(t, err)
|
||||
p1, nErr = ss.Post().Save(p1)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
p2 := &model.Post{}
|
||||
p2.ChannelId = c1.Id
|
||||
@@ -2580,8 +2580,8 @@ func testPostStoreGetRepliesForExport(t *testing.T, ss store.Store) {
|
||||
p2.CreateAt = 1001
|
||||
p2.ParentId = p1.Id
|
||||
p2.RootId = p1.Id
|
||||
p2, err = ss.Post().Save(p2)
|
||||
require.Nil(t, err)
|
||||
p2, nErr = ss.Post().Save(p2)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
r1, err := ss.Post().GetRepliesForExport(p1.Id)
|
||||
assert.Nil(t, err)
|
||||
@@ -2652,8 +2652,8 @@ func testPostStoreGetDirectPostParentsForExportAfter(t *testing.T, ss store.Stor
|
||||
p1.UserId = u1.Id
|
||||
p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
|
||||
p1.CreateAt = 1000
|
||||
p1, err = ss.Post().Save(p1)
|
||||
require.Nil(t, err)
|
||||
p1, nErr := ss.Post().Save(p1)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
r1, err := ss.Post().GetDirectPostParentsForExportAfter(10000, strings.Repeat("0", 26))
|
||||
assert.Nil(t, err)
|
||||
@@ -2712,14 +2712,14 @@ func testPostStoreGetDirectPostParentsForExportAfterDeleted(t *testing.T, ss sto
|
||||
p1.UserId = u1.Id
|
||||
p1.Message = "zz" + model.NewId() + "BBBBBBBBBBBB"
|
||||
p1.CreateAt = 1000
|
||||
p1, err = ss.Post().Save(p1)
|
||||
require.Nil(t, err)
|
||||
p1, nErr = ss.Post().Save(p1)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
o1a := p1.Clone()
|
||||
o1a.DeleteAt = 1
|
||||
o1a.Message = p1.Message + "BBBBBBBBBB"
|
||||
_, err = ss.Post().Update(o1a, p1)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Update(o1a, p1)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
r1, err := ss.Post().GetDirectPostParentsForExportAfter(10000, strings.Repeat("0", 26))
|
||||
assert.Nil(t, err)
|
||||
@@ -2774,8 +2774,8 @@ func testPostStoreGetDirectPostParentsForExportAfterBatched(t *testing.T, ss sto
|
||||
p1.UserId = u1.Id
|
||||
p1.Message = "zz" + model.NewId() + "AAAAAAAAAAA"
|
||||
p1.CreateAt = 1000
|
||||
p1, err = ss.Post().Save(p1)
|
||||
require.Nil(t, err)
|
||||
p1, nErr := ss.Post().Save(p1)
|
||||
require.Nil(t, nErr)
|
||||
postIds = append(postIds, p1.Id)
|
||||
}
|
||||
sort.Slice(postIds, func(i, j int) bool { return postIds[i] < postIds[j] })
|
||||
|
||||
@@ -2042,8 +2042,8 @@ func testUserUnreadCount(t *testing.T, ss store.Store) {
|
||||
p1.Message = "this is a message for @" + u2.Username
|
||||
|
||||
// Post one message with mention to open channel
|
||||
_, err = ss.Post().Save(&p1)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(&p1)
|
||||
require.Nil(t, nErr)
|
||||
err = ss.Channel().IncrementMentionCount(c1.Id, u2.Id)
|
||||
require.Nil(t, err)
|
||||
|
||||
@@ -2053,8 +2053,8 @@ func testUserUnreadCount(t *testing.T, ss store.Store) {
|
||||
p2.UserId = u1.Id
|
||||
p2.Message = "first message"
|
||||
|
||||
_, err = ss.Post().Save(&p2)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(&p2)
|
||||
require.Nil(t, nErr)
|
||||
err = ss.Channel().IncrementMentionCount(c2.Id, u2.Id)
|
||||
require.Nil(t, err)
|
||||
|
||||
@@ -2062,8 +2062,8 @@ func testUserUnreadCount(t *testing.T, ss store.Store) {
|
||||
p3.ChannelId = c2.Id
|
||||
p3.UserId = u1.Id
|
||||
p3.Message = "second message"
|
||||
_, err = ss.Post().Save(&p3)
|
||||
require.Nil(t, err)
|
||||
_, nErr = ss.Post().Save(&p3)
|
||||
require.Nil(t, nErr)
|
||||
|
||||
err = ss.Channel().IncrementMentionCount(c2.Id, u2.Id)
|
||||
require.Nil(t, err)
|
||||
|
||||
@@ -4302,7 +4302,7 @@ func (s *TimerLayerPostStore) ClearCaches() {
|
||||
}
|
||||
}
|
||||
|
||||
func (s *TimerLayerPostStore) Delete(postId string, time int64, deleteByID string) *model.AppError {
|
||||
func (s *TimerLayerPostStore) Delete(postId string, time int64, deleteByID string) error {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0 := s.PostStore.Delete(postId, time, deleteByID)
|
||||
@@ -4318,7 +4318,7 @@ func (s *TimerLayerPostStore) Delete(postId string, time int64, deleteByID strin
|
||||
return resultVar0
|
||||
}
|
||||
|
||||
func (s *TimerLayerPostStore) Get(id string, skipFetchThreads bool) (*model.PostList, *model.AppError) {
|
||||
func (s *TimerLayerPostStore) Get(id string, skipFetchThreads bool) (*model.PostList, error) {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0, resultVar1 := s.PostStore.Get(id, skipFetchThreads)
|
||||
@@ -4654,7 +4654,7 @@ func (s *TimerLayerPostStore) GetRepliesForExport(parentId string) ([]*model.Rep
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *TimerLayerPostStore) GetSingle(id string) (*model.Post, *model.AppError) {
|
||||
func (s *TimerLayerPostStore) GetSingle(id string) (*model.Post, error) {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0, resultVar1 := s.PostStore.GetSingle(id)
|
||||
@@ -4733,7 +4733,7 @@ func (s *TimerLayerPostStore) PermanentDeleteBatch(endTime int64, limit int64) (
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *TimerLayerPostStore) PermanentDeleteByChannel(channelId string) *model.AppError {
|
||||
func (s *TimerLayerPostStore) PermanentDeleteByChannel(channelId string) error {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0 := s.PostStore.PermanentDeleteByChannel(channelId)
|
||||
@@ -4749,7 +4749,7 @@ func (s *TimerLayerPostStore) PermanentDeleteByChannel(channelId string) *model.
|
||||
return resultVar0
|
||||
}
|
||||
|
||||
func (s *TimerLayerPostStore) PermanentDeleteByUser(userId string) *model.AppError {
|
||||
func (s *TimerLayerPostStore) PermanentDeleteByUser(userId string) error {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0 := s.PostStore.PermanentDeleteByUser(userId)
|
||||
@@ -4765,7 +4765,7 @@ func (s *TimerLayerPostStore) PermanentDeleteByUser(userId string) *model.AppErr
|
||||
return resultVar0
|
||||
}
|
||||
|
||||
func (s *TimerLayerPostStore) Save(post *model.Post) (*model.Post, *model.AppError) {
|
||||
func (s *TimerLayerPostStore) Save(post *model.Post) (*model.Post, error) {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0, resultVar1 := s.PostStore.Save(post)
|
||||
@@ -4781,7 +4781,7 @@ func (s *TimerLayerPostStore) Save(post *model.Post) (*model.Post, *model.AppErr
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *TimerLayerPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, *model.AppError) {
|
||||
func (s *TimerLayerPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, error) {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0, resultVar1, resultVar2 := s.PostStore.SaveMultiple(posts)
|
||||
@@ -4829,7 +4829,7 @@ func (s *TimerLayerPostStore) SearchPostsInTeamForUser(paramsList []*model.Searc
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (s *TimerLayerPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, *model.AppError) {
|
||||
func (s *TimerLayerPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, error) {
|
||||
start := timemodule.Now()
|
||||
|
||||
resultVar0, resultVar1 := s.PostStore.Update(newPost, oldPost)
|
||||
|
||||
Ссылка в новой задаче
Block a user