playlist.go 3.3 KB

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