playlist.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package sqlstore
  2. import (
  3. "github.com/go-xorm/xorm"
  4. "github.com/grafana/grafana/pkg/bus"
  5. m "github.com/grafana/grafana/pkg/models"
  6. )
  7. func init() {
  8. bus.AddHandler("sql", CreatePlaylist)
  9. bus.AddHandler("sql", UpdatePlaylist)
  10. bus.AddHandler("sql", DeletePlaylist)
  11. bus.AddHandler("sql", SearchPlaylists)
  12. bus.AddHandler("sql", GetPlaylist)
  13. bus.AddHandler("sql", GetPlaylistDashboards)
  14. }
  15. func CreatePlaylist(query *m.CreatePlaylistQuery) error {
  16. var err error
  17. playlist := m.Playlist{
  18. Title: query.Title,
  19. Type: query.Type,
  20. Data: query.Data,
  21. Timespan: query.Timespan,
  22. OrgId: query.OrgId,
  23. }
  24. _, err = x.Insert(&playlist)
  25. query.Result = &playlist
  26. return err
  27. }
  28. func UpdatePlaylist(query *m.UpdatePlaylistQuery) error {
  29. var err error
  30. x.Logger.SetLevel(5)
  31. playlist := m.Playlist{
  32. Id: query.Id,
  33. Title: query.Title,
  34. Type: query.Type,
  35. Data: query.Data,
  36. Timespan: query.Timespan,
  37. }
  38. existingPlaylist := x.Where("id = ?", query.Id).Find(m.Playlist{})
  39. if existingPlaylist == nil {
  40. return m.ErrPlaylistNotFound
  41. }
  42. _, err = x.Id(query.Id).Cols("id", "title", "data", "timespan").Update(&playlist)
  43. query.Result = &playlist
  44. return err
  45. }
  46. func GetPlaylist(query *m.GetPlaylistByIdQuery) error {
  47. if query.Id == 0 {
  48. return m.ErrCommandValidationFailed
  49. }
  50. playlist := m.Playlist{}
  51. _, err := x.Id(query.Id).Get(&playlist)
  52. query.Result = &playlist
  53. return err
  54. }
  55. func DeletePlaylist(query *m.DeletePlaylistQuery) error {
  56. if query.Id == 0 {
  57. return m.ErrCommandValidationFailed
  58. }
  59. return inTransaction(func(sess *xorm.Session) error {
  60. var rawSql = "DELETE FROM playlist WHERE id = ?"
  61. _, err := sess.Exec(rawSql, query.Id)
  62. return err
  63. })
  64. }
  65. func SearchPlaylists(query *m.PlaylistQuery) error {
  66. var playlists = make(m.Playlists, 0)
  67. sess := x.Limit(query.Limit)
  68. if query.Title != "" {
  69. sess.Where("title LIKE ?", query.Title)
  70. }
  71. sess.Where("org_id = ?", query.OrgId)
  72. err := sess.Find(&playlists)
  73. query.Result = playlists
  74. return err
  75. }
  76. func GetPlaylistDashboards(query *m.GetPlaylistDashboardsQuery) error {
  77. if query.Id == 0 {
  78. return m.ErrCommandValidationFailed
  79. }
  80. var dashboards = make(m.PlaylistDashboards, 0)
  81. var playlist = m.Playlist{}
  82. hasPlaylist, err := x.Id(query.Id).Get(&playlist)
  83. query.Result = &dashboards
  84. if err != nil {
  85. return err
  86. }
  87. if !hasPlaylist || len(playlist.Data) == 0 {
  88. return nil
  89. }
  90. err = x.In("id", playlist.Data).Find(&dashboards)
  91. if err != nil {
  92. return err
  93. }
  94. return nil
  95. }