Skip to content

Commit

Permalink
Adds a database migration to restore the fileinfos that are deleted (#…
Browse files Browse the repository at this point in the history
…4815) (#4816)

(cherry picked from commit 257cc5f)

Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
  • Loading branch information
mattermost-build and mgdelacroix committed Jul 21, 2023
1 parent 691a61d commit d8af5c3
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
SELECT 1;
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{{if .plugin}}
UPDATE FileInfo
SET DeleteAt = 0
WHERE CreatorId = 'boards'
AND DeleteAt != 0;
{{else}}
SELECT 1;
{{end}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
INSERT INTO FileInfo
(Id, CreatorId, CreateAt, UpdateAt, DeleteAt)
VALUES
('fileinfo-1', 'user-id', 1, 1, 1000),
('fileinfo-2', 'user-id', 1, 1, 1000),
('fileinfo-3', 'user-id', 1, 1, 0),
('fileinfo-4', 'boards', 1, 1, 2000),
('fileinfo-5', 'boards', 1, 1, 2000),
('fileinfo-6', 'boards', 1, 1, 0);
48 changes: 48 additions & 0 deletions server/services/store/sqlstore/migrationstests/migration40_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package migrationstests

import (
"testing"

"github.com/stretchr/testify/require"
)

func Test40FixFileinfoSoftDeletes(t *testing.T) {
th, tearDown := SetupPluginTestHelper(t)
defer tearDown()

th.f.MigrateToStep(39).
ExecFile("./fixtures/test40FixFileinfoSoftDeletes.sql").
MigrateToStep(40)

type FileInfo struct {
Id string
DeleteAt int
}

getFileInfo := func(t *testing.T, id string) FileInfo {
t.Helper()
fileInfo := FileInfo{}

query := "SELECT id, deleteat FROM FileInfo WHERE id = $1"
if th.IsMySQL() {
query = "SELECT Id as id, DeleteAt as deleteat FROM FileInfo WHERE Id = ?"
}

err := th.f.DB().Get(&fileInfo, query, id)
require.NoError(t, err)

return fileInfo
}

t.Run("the file infos that don't belong to boards will not be restored", func(t *testing.T) {
require.Equal(t, 1000, getFileInfo(t, "fileinfo-1").DeleteAt)
require.Equal(t, 1000, getFileInfo(t, "fileinfo-2").DeleteAt)
require.Empty(t, getFileInfo(t, "fileinfo-3").DeleteAt)
})

t.Run("the file infos that belong to boards should correctly be restored", func(t *testing.T) {
require.Empty(t, getFileInfo(t, "fileinfo-3").DeleteAt)
require.Empty(t, getFileInfo(t, "fileinfo-4").DeleteAt)
require.Empty(t, getFileInfo(t, "fileinfo-5").DeleteAt)
})
}

0 comments on commit d8af5c3

Please sign in to comment.