Преглед изворни кода

remove dashboard from playlist when its destroyed

nikita-graf пре 10 година
родитељ
комит
ee400df930
2 измењених фајлова са 28 додато и 8 уклоњено
  1. 8 8
      pkg/models/playlist.go
  2. 20 0
      pkg/services/sqlstore/dashboard.go

+ 8 - 8
pkg/models/playlist.go

@@ -12,12 +12,12 @@ var (
 
 
 // Playlist model
 // Playlist model
 type Playlist struct {
 type Playlist struct {
-	Id       int64  `json:"id"`
-	Title    string `json:"title"`
-	Type     string `json:"type"`
-	Timespan string `json:"timespan"`
-	Data     []int  `json:"data"`
-	OrgId    int64  `json:"-"`
+	Id       int64   `json:"id"`
+	Title    string  `json:"title"`
+	Type     string  `json:"type"`
+	Timespan string  `json:"timespan"`
+	Data     []int64 `json:"data"`
+	OrgId    int64   `json:"-"`
 }
 }
 
 
 type PlaylistDashboard struct {
 type PlaylistDashboard struct {
@@ -49,7 +49,7 @@ type UpdatePlaylistQuery struct {
 	Title    string
 	Title    string
 	Type     string
 	Type     string
 	Timespan string
 	Timespan string
-	Data     []int
+	Data     []int64
 
 
 	Result *Playlist
 	Result *Playlist
 }
 }
@@ -58,7 +58,7 @@ type CreatePlaylistQuery struct {
 	Title    string
 	Title    string
 	Type     string
 	Type     string
 	Timespan string
 	Timespan string
-	Data     []int
+	Data     []int64
 	OrgId    int64
 	OrgId    int64
 
 
 	Result *Playlist
 	Result *Playlist

+ 20 - 0
pkg/services/sqlstore/dashboard.go

@@ -220,6 +220,26 @@ func DeleteDashboard(cmd *m.DeleteDashboardCommand) error {
 			}
 			}
 		}
 		}
 
 
+		var playlists = make(m.Playlists, 0)
+		err = sess.Where("data LIKE ?", fmt.Sprintf("%%%v%%", dashboard.Id)).Find(&playlists)
+		if err != nil {
+			return err
+		}
+
+		for _, playlist := range playlists {
+			filteredData := make([]int64, 0)
+			for _, plDashboardId := range playlist.Data {
+				if plDashboardId != dashboard.Id {
+					filteredData = append(filteredData, plDashboardId)
+				}
+			}
+			playlist.Data = filteredData
+			_, err = sess.Id(playlist.Id).Cols("data").Update(playlist)
+			if err != nil {
+				return err
+			}
+		}
+
 		return nil
 		return nil
 	})
 	})
 }
 }