playlist.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package sqlstore
  2. import (
  3. "fmt"
  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", GetPlaylistItem)
  14. }
  15. func CreatePlaylist(cmd *m.CreatePlaylistCommand) error {
  16. playlist := m.Playlist{
  17. Name: cmd.Name,
  18. Interval: cmd.Interval,
  19. OrgId: cmd.OrgId,
  20. }
  21. _, err := x.Insert(&playlist)
  22. fmt.Printf("%v", playlist.Id)
  23. playlistItems := make([]m.PlaylistItem, 0)
  24. for _, item := range cmd.Items {
  25. playlistItems = append(playlistItems, m.PlaylistItem{
  26. PlaylistId: playlist.Id,
  27. Type: item.Type,
  28. Value: item.Value,
  29. Order: item.Order,
  30. Title: item.Title,
  31. })
  32. }
  33. _, err = x.Insert(&playlistItems)
  34. cmd.Result = &playlist
  35. return err
  36. }
  37. func UpdatePlaylist(cmd *m.UpdatePlaylistCommand) error {
  38. playlist := m.Playlist{
  39. Id: cmd.Id,
  40. OrgId: cmd.OrgId,
  41. Name: cmd.Name,
  42. Interval: cmd.Interval,
  43. }
  44. existingPlaylist := x.Where("id = ? AND org_id = ?", cmd.Id, cmd.OrgId).Find(m.Playlist{})
  45. if existingPlaylist == nil {
  46. return m.ErrPlaylistNotFound
  47. }
  48. cmd.Result = &m.PlaylistDTO{
  49. Id: playlist.Id,
  50. OrgId: playlist.OrgId,
  51. Name: playlist.Name,
  52. Interval: playlist.Interval,
  53. }
  54. _, err := x.ID(cmd.Id).Cols("id", "name", "interval").Update(&playlist)
  55. if err != nil {
  56. return err
  57. }
  58. rawSql := "DELETE FROM playlist_item WHERE playlist_id = ?"
  59. _, err = x.Exec(rawSql, cmd.Id)
  60. if err != nil {
  61. return err
  62. }
  63. playlistItems := make([]m.PlaylistItem, 0)
  64. for index, item := range cmd.Items {
  65. playlistItems = append(playlistItems, m.PlaylistItem{
  66. PlaylistId: playlist.Id,
  67. Type: item.Type,
  68. Value: item.Value,
  69. Order: index + 1,
  70. Title: item.Title,
  71. })
  72. }
  73. _, err = x.Insert(&playlistItems)
  74. return err
  75. }
  76. func GetPlaylist(query *m.GetPlaylistByIdQuery) error {
  77. if query.Id == 0 {
  78. return m.ErrCommandValidationFailed
  79. }
  80. playlist := m.Playlist{}
  81. _, err := x.ID(query.Id).Get(&playlist)
  82. query.Result = &playlist
  83. return err
  84. }
  85. func DeletePlaylist(cmd *m.DeletePlaylistCommand) error {
  86. if cmd.Id == 0 {
  87. return m.ErrCommandValidationFailed
  88. }
  89. return inTransaction(func(sess *DBSession) error {
  90. var rawPlaylistSql = "DELETE FROM playlist WHERE id = ? and org_id = ?"
  91. _, err := sess.Exec(rawPlaylistSql, cmd.Id, cmd.OrgId)
  92. if err != nil {
  93. return err
  94. }
  95. var rawItemSql = "DELETE FROM playlist_item WHERE playlist_id = ?"
  96. _, err2 := sess.Exec(rawItemSql, cmd.Id)
  97. return err2
  98. })
  99. }
  100. func SearchPlaylists(query *m.GetPlaylistsQuery) error {
  101. var playlists = make(m.Playlists, 0)
  102. sess := x.Limit(query.Limit)
  103. if query.Name != "" {
  104. sess.Where("name LIKE ?", query.Name)
  105. }
  106. sess.Where("org_id = ?", query.OrgId)
  107. err := sess.Find(&playlists)
  108. query.Result = playlists
  109. return err
  110. }
  111. func GetPlaylistItem(query *m.GetPlaylistItemsByIdQuery) error {
  112. if query.PlaylistId == 0 {
  113. return m.ErrCommandValidationFailed
  114. }
  115. var playlistItems = make([]m.PlaylistItem, 0)
  116. err := x.Where("playlist_id=?", query.PlaylistId).Find(&playlistItems)
  117. query.Result = &playlistItems
  118. return err
  119. }