fix: preserve the order when migrating the playlists (#115485)

fix: preserve the order
This commit is contained in:
Mustafa Sencer Özcan
2025-12-17 13:48:19 +01:00
committed by GitHub
parent fe49ae05c0
commit 40976bb1e4
@@ -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{