| 
									
										
										
										
											2015-02-02 18:32:32 +08:00
										 |  |  | package sqlstore | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2015-02-05 17:37:13 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/bus" | 
					
						
							|  |  |  | 	m "github.com/grafana/grafana/pkg/models" | 
					
						
							| 
									
										
										
										
											2015-02-02 18:32:32 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func init() { | 
					
						
							|  |  |  | 	bus.AddHandler("sql", StarDashboard) | 
					
						
							|  |  |  | 	bus.AddHandler("sql", UnstarDashboard) | 
					
						
							|  |  |  | 	bus.AddHandler("sql", GetUserStars) | 
					
						
							|  |  |  | 	bus.AddHandler("sql", IsStarredByUser) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func IsStarredByUser(query *m.IsStarredByUserQuery) error { | 
					
						
							|  |  |  | 	rawSql := "SELECT 1 from star where user_id=? and dashboard_id=?" | 
					
						
							|  |  |  | 	results, err := x.Query(rawSql, query.UserId, query.DashboardId) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-02-04 18:35:59 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-02 18:32:32 +08:00
										 |  |  | 	if len(results) == 0 { | 
					
						
							|  |  |  | 		return nil | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-04 18:35:59 +08:00
										 |  |  | 	query.Result = true | 
					
						
							| 
									
										
										
										
											2015-02-02 18:32:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	return nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func StarDashboard(cmd *m.StarDashboardCommand) error { | 
					
						
							|  |  |  | 	if cmd.DashboardId == 0 || cmd.UserId == 0 { | 
					
						
							|  |  |  | 		return m.ErrCommandValidationFailed | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-23 16:56:23 +08:00
										 |  |  | 	return inTransaction(func(sess *DBSession) error { | 
					
						
							| 
									
										
										
										
											2015-02-02 18:32:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		entity := m.Star{ | 
					
						
							|  |  |  | 			UserId:      cmd.UserId, | 
					
						
							|  |  |  | 			DashboardId: cmd.DashboardId, | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		_, err := sess.Insert(&entity) | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func UnstarDashboard(cmd *m.UnstarDashboardCommand) error { | 
					
						
							|  |  |  | 	if cmd.DashboardId == 0 || cmd.UserId == 0 { | 
					
						
							|  |  |  | 		return m.ErrCommandValidationFailed | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-23 16:56:23 +08:00
										 |  |  | 	return inTransaction(func(sess *DBSession) error { | 
					
						
							| 
									
										
										
										
											2015-02-02 18:32:32 +08:00
										 |  |  | 		var rawSql = "DELETE FROM star WHERE user_id=? and dashboard_id=?" | 
					
						
							|  |  |  | 		_, err := sess.Exec(rawSql, cmd.UserId, cmd.DashboardId) | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func GetUserStars(query *m.GetUserStarsQuery) error { | 
					
						
							| 
									
										
										
										
											2015-02-05 16:49:00 +08:00
										 |  |  | 	var stars = make([]m.Star, 0) | 
					
						
							|  |  |  | 	err := x.Where("user_id=?", query.UserId).Find(&stars) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	query.Result = make(map[int64]bool) | 
					
						
							|  |  |  | 	for _, star := range stars { | 
					
						
							|  |  |  | 		query.Result[star.DashboardId] = true | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-02 18:32:32 +08:00
										 |  |  | 	return err | 
					
						
							|  |  |  | } |