star.go 1.5 KB

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