mirror of
https://github.com/mattermost/focalboard.git
synced 2024-12-21 13:38:56 +02:00
Cherrypicking 22606 to old focalboard (#4673)
This commit is contained in:
parent
0192ef6f3f
commit
2634924150
@ -868,10 +868,8 @@ func (s *SQLStore) doesDuplicateCategoryBoardsExist() (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *SQLStore) runMySQLDeDuplicateCategoryBoardsMigration() error {
|
func (s *SQLStore) runMySQLDeDuplicateCategoryBoardsMigration() error {
|
||||||
query := "WITH duplicates AS (SELECT id, ROW_NUMBER() OVER(PARTITION BY user_id, board_id) AS rownum " +
|
query := "DELETE FROM " + s.tablePrefix + "category_boards WHERE id NOT IN " +
|
||||||
"FROM " + s.tablePrefix + "category_boards) " +
|
"(SELECT * FROM ( SELECT min(id) FROM " + s.tablePrefix + "category_boards GROUP BY user_id, board_id ) as data)"
|
||||||
"DELETE " + s.tablePrefix + "category_boards FROM " + s.tablePrefix + "category_boards " +
|
|
||||||
"JOIN duplicates USING(id) WHERE duplicates.rownum > 1;"
|
|
||||||
if _, err := s.db.Exec(query); err != nil {
|
if _, err := s.db.Exec(query); err != nil {
|
||||||
s.logger.Error("Failed to de-duplicate data in category_boards table", mlog.Err(err))
|
s.logger.Error("Failed to de-duplicate data in category_boards table", mlog.Err(err))
|
||||||
}
|
}
|
||||||
|
@ -246,6 +246,9 @@ func (bm *BoardsMigrator) MigrateToStep(step int) error {
|
|||||||
func (bm *BoardsMigrator) Interceptors() map[int]foundation.Interceptor {
|
func (bm *BoardsMigrator) Interceptors() map[int]foundation.Interceptor {
|
||||||
return map[int]foundation.Interceptor{
|
return map[int]foundation.Interceptor{
|
||||||
18: bm.store.RunDeletedMembershipBoardsMigration,
|
18: bm.store.RunDeletedMembershipBoardsMigration,
|
||||||
|
35: func() error {
|
||||||
|
return bm.store.RunDeDuplicateCategoryBoardsMigration(35)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
package migrationstests
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestRunDeDuplicateCategoryBoardsMigration(t *testing.T) {
|
||||||
|
th, tearDown := SetupTestHelper(t)
|
||||||
|
defer tearDown()
|
||||||
|
|
||||||
|
if th.IsSQLite() {
|
||||||
|
t.Skip("SQLite is not supported for this")
|
||||||
|
}
|
||||||
|
|
||||||
|
th.f.MigrateToStepSkippingLastInterceptor(35).
|
||||||
|
ExecFile("./fixtures/testDeDuplicateCategoryBoardsMigration.sql")
|
||||||
|
|
||||||
|
th.f.RunInterceptor(35)
|
||||||
|
|
||||||
|
// verifying count of rows
|
||||||
|
var count int
|
||||||
|
countQuery := "SELECT COUNT(*) FROM focalboard_category_boards"
|
||||||
|
row := th.f.DB().QueryRow(countQuery)
|
||||||
|
err := row.Scan(&count)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, 4, count)
|
||||||
|
}
|
@ -1,6 +1,8 @@
|
|||||||
INSERT INTO focalboard_category_boards values
|
INSERT INTO focalboard_category_boards
|
||||||
|
(id, user_id, category_id, board_id, create_at, update_at, delete_at, sort_order)
|
||||||
|
values
|
||||||
('id-1', 'user_id-1', 'category-id-1', 'board-id-1', 1672988834402, 1672988834402, 0, 0),
|
('id-1', 'user_id-1', 'category-id-1', 'board-id-1', 1672988834402, 1672988834402, 0, 0),
|
||||||
('id-2', 'user_id-1', 'category-id-2', 'board-id-1', 1672988834402, 1672988834402, 0, 0),
|
('id-2', 'user_id-1', 'category-id-2', 'board-id-1', 1672988834402, 1672988834402, 0, 0),
|
||||||
('id-3', 'user_id-2', 'category-id-3', 'board-id-2', 1672988834402, 1672988834402, 1672988834402, 0),
|
('id-3', 'user_id-2', 'category-id-3', 'board-id-2', 1672988834402, 1672988834402, 1672988834402, 0),
|
||||||
('id-4', 'user_id-2', 'category-id-3', 'board-id-4', 1672988834402, 1672988834402, 0, 0),
|
('id-4', 'user_id-2', 'category-id-3', 'board-id-4', 1672988834402, 1672988834402, 0, 0),
|
||||||
('id-5', 'user_id-3', 'category-id-4', 'board-id-3', 1672988834402, 1672988834402, 1672988834402, 0);
|
('id-5', 'user_id-3', 'category-id-4', 'board-id-3', 1672988834402, 1672988834402, 1672988834402, 0);
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
INSERT INTO focalboard_category_boards values
|
INSERT INTO focalboard_category_boards
|
||||||
|
(id, user_id, category_id, board_id, create_at, update_at, delete_at, sort_order)
|
||||||
|
values
|
||||||
('id-1', 'user_id-1', 'category-id-1', 'board-id-1', 1672988834402, 1672988834402, 0, 0),
|
('id-1', 'user_id-1', 'category-id-1', 'board-id-1', 1672988834402, 1672988834402, 0, 0),
|
||||||
('id-2', 'user_id-1', 'category-id-2', 'board-id-1', 1672988834402, 1672988834402, 0, 0),
|
('id-2', 'user_id-1', 'category-id-2', 'board-id-1', 1672988834402, 1672988834402, 0, 0),
|
||||||
('id-3', 'user_id-2', 'category-id-3', 'board-id-2', 1672988834402, 1672988834402, 0, 0),
|
('id-3', 'user_id-2', 'category-id-3', 'board-id-2', 1672988834402, 1672988834402, 0, 0),
|
||||||
('id-4', 'user_id-2', 'category-id-3', 'board-id-4', 1672988834402, 1672988834402, 0, 0),
|
('id-4', 'user_id-2', 'category-id-3', 'board-id-4', 1672988834402, 1672988834402, 0, 0),
|
||||||
('id-5', 'user_id-3', 'category-id-4', 'board-id-3', 1672988834402, 1672988834402, 0, 0);
|
('id-5', 'user_id-3', 'category-id-4', 'board-id-3', 1672988834402, 1672988834402, 0, 0);
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
INSERT INTO focalboard_category_boards VALUES
|
INSERT INTO focalboard_category_boards
|
||||||
|
(id, user_id, category_id, board_id, create_at, update_at, sort_order, hidden)
|
||||||
|
VALUES
|
||||||
('id-1', 'user-id-1', 'category-id-1', 'board-id-1', 1672889246832, 1672889246832, 0, false),
|
('id-1', 'user-id-1', 'category-id-1', 'board-id-1', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-2', 'user-id-1', 'category-id-2', 'board-id-2', 1672889246832, 1672889246832, 0, false),
|
('id-2', 'user-id-1', 'category-id-2', 'board-id-2', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-3', 'user-id-2', 'category-id-3', 'board-id-3', 1672889246832, 1672889246832, 0, false),
|
('id-3', 'user-id-2', 'category-id-3', 'board-id-3', 1672889246832, 1672889246832, 0, false),
|
||||||
@ -7,4 +9,4 @@ INSERT INTO focalboard_category_boards VALUES
|
|||||||
|
|
||||||
INSERT INTO Preferences VALUES
|
INSERT INTO Preferences VALUES
|
||||||
('user-id-1', 'focalboard', 'hiddenBoardIDs', '["board-id-1"]'),
|
('user-id-1', 'focalboard', 'hiddenBoardIDs', '["board-id-1"]'),
|
||||||
('user-id-2', 'focalboard', 'hiddenBoardIDs', '["board-id-3", "board-id-4"]');
|
('user-id-2', 'focalboard', 'hiddenBoardIDs', '["board-id-3", "board-id-4"]');
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
INSERT INTO focalboard_category_boards VALUES
|
INSERT INTO focalboard_category_boards
|
||||||
|
(id, user_id, category_id, board_id, create_at, update_at, sort_order, hidden)
|
||||||
|
VALUES
|
||||||
('id-1', 'user-id-1', 'category-id-1', 'board-id-1', 1672889246832, 1672889246832, 0, false),
|
('id-1', 'user-id-1', 'category-id-1', 'board-id-1', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-2', 'user-id-1', 'category-id-2', 'board-id-2', 1672889246832, 1672889246832, 0, false),
|
('id-2', 'user-id-1', 'category-id-2', 'board-id-2', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-3', 'user-id-2', 'category-id-3', 'board-id-3', 1672889246832, 1672889246832, 0, false),
|
('id-3', 'user-id-2', 'category-id-3', 'board-id-3', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-4', 'user-id-2', 'category-id-3', 'board-id-4', 1672889246832, 1672889246832, 0, false),
|
('id-4', 'user-id-2', 'category-id-3', 'board-id-4', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-5', 'user-id-3', 'category-id-4', 'board-id-5', 1672889246832, 1672889246832, 0, false);
|
('id-5', 'user-id-3', 'category-id-4', 'board-id-5', 1672889246832, 1672889246832, 0, false);
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
INSERT INTO focalboard_category_boards VALUES
|
INSERT INTO focalboard_category_boards
|
||||||
|
(id, user_id, category_id, board_id, create_at, update_at, sort_order, hidden)
|
||||||
|
VALUES
|
||||||
('id-1', 'user-id-1', 'category-id-1', 'board-id-1', 1672889246832, 1672889246832, 0, false),
|
('id-1', 'user-id-1', 'category-id-1', 'board-id-1', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-2', 'user-id-1', 'category-id-2', 'board-id-2', 1672889246832, 1672889246832, 0, false),
|
('id-2', 'user-id-1', 'category-id-2', 'board-id-2', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-3', 'user-id-2', 'category-id-3', 'board-id-3', 1672889246832, 1672889246832, 0, false),
|
('id-3', 'user-id-2', 'category-id-3', 'board-id-3', 1672889246832, 1672889246832, 0, false),
|
||||||
@ -7,4 +9,4 @@ INSERT INTO focalboard_category_boards VALUES
|
|||||||
|
|
||||||
INSERT INTO Preferences VALUES
|
INSERT INTO Preferences VALUES
|
||||||
('user-id-1', 'focalboard', 'hiddenBoardIDs', ''),
|
('user-id-1', 'focalboard', 'hiddenBoardIDs', ''),
|
||||||
('user-id-2', 'focalboard', 'hiddenBoardIDs', '');
|
('user-id-2', 'focalboard', 'hiddenBoardIDs', '');
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
INSERT INTO focalboard_category_boards VALUES
|
INSERT INTO focalboard_category_boards
|
||||||
|
(id, user_id, category_id, board_id, create_at, update_at, sort_order, hidden)
|
||||||
|
VALUES
|
||||||
('id-1', 'user-id-1', 'category-id-1', 'board-id-1', 1672889246832, 1672889246832, 0, false),
|
('id-1', 'user-id-1', 'category-id-1', 'board-id-1', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-2', 'user-id-1', 'category-id-2', 'board-id-2', 1672889246832, 1672889246832, 0, false),
|
('id-2', 'user-id-1', 'category-id-2', 'board-id-2', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-3', 'user-id-2', 'category-id-3', 'board-id-3', 1672889246832, 1672889246832, 0, false),
|
('id-3', 'user-id-2', 'category-id-3', 'board-id-3', 1672889246832, 1672889246832, 0, false),
|
||||||
@ -7,4 +9,4 @@ INSERT INTO focalboard_category_boards VALUES
|
|||||||
|
|
||||||
INSERT INTO focalboard_preferences VALUES
|
INSERT INTO focalboard_preferences VALUES
|
||||||
('user-id-1', 'focalboard', 'hiddenBoardIDs', '["board-id-1"]'),
|
('user-id-1', 'focalboard', 'hiddenBoardIDs', '["board-id-1"]'),
|
||||||
('user-id-2', 'focalboard', 'hiddenBoardIDs', '["board-id-3", "board-id-4"]');
|
('user-id-2', 'focalboard', 'hiddenBoardIDs', '["board-id-3", "board-id-4"]');
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
INSERT INTO focalboard_category_boards VALUES
|
INSERT INTO focalboard_category_boards
|
||||||
|
(id, user_id, category_id, board_id, create_at, update_at, sort_order, hidden)
|
||||||
|
VALUES
|
||||||
('id-1', 'user-id-1', 'category-id-1', 'board-id-1', 1672889246832, 1672889246832, 0, false),
|
('id-1', 'user-id-1', 'category-id-1', 'board-id-1', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-2', 'user-id-1', 'category-id-2', 'board-id-2', 1672889246832, 1672889246832, 0, false),
|
('id-2', 'user-id-1', 'category-id-2', 'board-id-2', 1672889246832, 1672889246832, 0, false),
|
||||||
('id-3', 'user-id-2', 'category-id-3', 'board-id-3', 1672889246832, 1672889246832, 0, false),
|
('id-3', 'user-id-2', 'category-id-3', 'board-id-3', 1672889246832, 1672889246832, 0, false),
|
||||||
@ -7,4 +9,4 @@ INSERT INTO focalboard_category_boards VALUES
|
|||||||
|
|
||||||
INSERT INTO focalboard_preferences VALUES
|
INSERT INTO focalboard_preferences VALUES
|
||||||
('user-id-1', 'focalboard', 'hiddenBoardIDs', ''),
|
('user-id-1', 'focalboard', 'hiddenBoardIDs', ''),
|
||||||
('user-id-2', 'focalboard', 'hiddenBoardIDs', '');
|
('user-id-2', 'focalboard', 'hiddenBoardIDs', '');
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
INSERT INTO focalboard_category_boards(id, user_id, category_id, board_id, create_at, update_at, sort_order)
|
||||||
|
VALUES
|
||||||
|
('id_1', 'user_id_1', 'category_id_1', 'board_id_1', 0, 0, 0),
|
||||||
|
('id_2', 'user_id_1', 'category_id_2', 'board_id_1', 0, 0, 0),
|
||||||
|
('id_3', 'user_id_1', 'category_id_3', 'board_id_1', 0, 0, 0),
|
||||||
|
('id_4', 'user_id_2', 'category_id_4', 'board_id_2', 0, 0, 0),
|
||||||
|
('id_5', 'user_id_2', 'category_id_5', 'board_id_2', 0, 0, 0),
|
||||||
|
('id_6', 'user_id_3', 'category_id_6', 'board_id_3', 0, 0, 0),
|
||||||
|
('id_7', 'user_id_4', 'category_id_6', 'board_id_4', 0, 0, 0);
|
Loading…
Reference in New Issue
Block a user