playlist.go 3.3 KB

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