fix: preserve the order when migrating the playlists (#115485)
fix: preserve the order
This commit is contained in:
@@ -501,7 +501,7 @@ func (a *dashboardSqlAccess) MigratePlaylists(ctx context.Context, orgId int64,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Group playlist items by playlist ID
|
// Group playlist items by playlist ID while preserving order
|
||||||
type playlistData struct {
|
type playlistData struct {
|
||||||
id int64
|
id int64
|
||||||
uid string
|
uid string
|
||||||
@@ -512,7 +512,8 @@ func (a *dashboardSqlAccess) MigratePlaylists(ctx context.Context, orgId int64,
|
|||||||
updatedAt int64
|
updatedAt int64
|
||||||
}
|
}
|
||||||
|
|
||||||
playlists := make(map[int64]*playlistData)
|
playlistIndex := make(map[int64]int) // maps playlist ID to index in playlists slice
|
||||||
|
playlists := []*playlistData{}
|
||||||
var currentID int64
|
var currentID int64
|
||||||
var orgID int64
|
var orgID int64
|
||||||
var uid, name, interval string
|
var uid, name, interval string
|
||||||
@@ -527,7 +528,8 @@ func (a *dashboardSqlAccess) MigratePlaylists(ctx context.Context, orgId int64,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get or create playlist entry
|
// Get or create playlist entry
|
||||||
pl, exists := playlists[currentID]
|
idx, exists := playlistIndex[currentID]
|
||||||
|
var pl *playlistData
|
||||||
if !exists {
|
if !exists {
|
||||||
pl = &playlistData{
|
pl = &playlistData{
|
||||||
id: currentID,
|
id: currentID,
|
||||||
@@ -538,7 +540,10 @@ func (a *dashboardSqlAccess) MigratePlaylists(ctx context.Context, orgId int64,
|
|||||||
createdAt: createdAt,
|
createdAt: createdAt,
|
||||||
updatedAt: updatedAt,
|
updatedAt: updatedAt,
|
||||||
}
|
}
|
||||||
playlists[currentID] = pl
|
playlistIndex[currentID] = len(playlists)
|
||||||
|
playlists = append(playlists, pl)
|
||||||
|
} else {
|
||||||
|
pl = playlists[idx]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add item if it exists (LEFT JOIN can return NULL for playlists without items)
|
// Add item if it exists (LEFT JOIN can return NULL for playlists without items)
|
||||||
@@ -554,7 +559,7 @@ func (a *dashboardSqlAccess) MigratePlaylists(ctx context.Context, orgId int64,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert to K8s objects and send to stream
|
// Convert to K8s objects and send to stream (order is preserved)
|
||||||
for _, pl := range playlists {
|
for _, pl := range playlists {
|
||||||
playlist := &playlistv0.Playlist{
|
playlist := &playlistv0.Playlist{
|
||||||
TypeMeta: metav1.TypeMeta{
|
TypeMeta: metav1.TypeMeta{
|
||||||
|
|||||||
Reference in New Issue
Block a user