star.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package sqlstore
  2. import (
  3. "github.com/go-xorm/xorm"
  4. "github.com/torkelo/grafana-pro/pkg/bus"
  5. m "github.com/torkelo/grafana-pro/pkg/models"
  6. )
  7. func init() {
  8. bus.AddHandler("sql", StarDashboard)
  9. bus.AddHandler("sql", UnstarDashboard)
  10. bus.AddHandler("sql", GetUserStars)
  11. bus.AddHandler("sql", IsStarredByUser)
  12. }
  13. func IsStarredByUser(query *m.IsStarredByUserQuery) error {
  14. rawSql := "SELECT 1 from star where user_id=? and dashboard_id=?"
  15. results, err := x.Query(rawSql, query.UserId, query.DashboardId)
  16. if err != nil {
  17. return err
  18. }
  19. if len(results) == 0 {
  20. return nil
  21. }
  22. query.Result = true
  23. return nil
  24. }
  25. func StarDashboard(cmd *m.StarDashboardCommand) error {
  26. if cmd.DashboardId == 0 || cmd.UserId == 0 {
  27. return m.ErrCommandValidationFailed
  28. }
  29. return inTransaction(func(sess *xorm.Session) error {
  30. entity := m.Star{
  31. UserId: cmd.UserId,
  32. DashboardId: cmd.DashboardId,
  33. }
  34. _, err := sess.Insert(&entity)
  35. return err
  36. })
  37. }
  38. func UnstarDashboard(cmd *m.UnstarDashboardCommand) error {
  39. if cmd.DashboardId == 0 || cmd.UserId == 0 {
  40. return m.ErrCommandValidationFailed
  41. }
  42. return inTransaction(func(sess *xorm.Session) error {
  43. var rawSql = "DELETE FROM star WHERE user_id=? and dashboard_id=?"
  44. _, err := sess.Exec(rawSql, cmd.UserId, cmd.DashboardId)
  45. return err
  46. })
  47. }
  48. func GetUserStars(query *m.GetUserStarsQuery) error {
  49. query.Result = make([]m.Star, 0)
  50. err := x.Where("user_id=?", query.UserId).Find(&query.Result)
  51. return err
  52. }