| 
									
										
										
										
											2016-03-06 19:47:39 +08:00
										 |  |  | package sqlstore | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2016-04-02 08:34:30 +08:00
										 |  |  | 	"time" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-06 19:47:39 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/bus" | 
					
						
							|  |  |  | 	m "github.com/grafana/grafana/pkg/models" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func init() { | 
					
						
							| 
									
										
										
										
											2016-03-07 03:42:15 +08:00
										 |  |  | 	bus.AddHandler("sql", GetPreferences) | 
					
						
							| 
									
										
										
										
											2016-03-06 19:47:39 +08:00
										 |  |  | 	bus.AddHandler("sql", SavePreferences) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-07 03:42:15 +08:00
										 |  |  | func GetPreferences(query *m.GetPreferencesQuery) error { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-16 05:49:52 +08:00
										 |  |  | 	var prefs m.Preferences | 
					
						
							|  |  |  | 	exists, err := x.Where("org_id=? AND user_id=?", query.OrgId, query.UserId).Get(&prefs) | 
					
						
							| 
									
										
										
										
											2016-03-07 03:42:15 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-16 05:49:52 +08:00
										 |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							| 
									
										
										
										
											2016-03-07 03:42:15 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-03-07 04:32:22 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-16 05:49:52 +08:00
										 |  |  | 	if exists { | 
					
						
							|  |  |  | 		query.Result = &prefs | 
					
						
							| 
									
										
										
										
											2016-03-07 04:32:22 +08:00
										 |  |  | 	} else { | 
					
						
							|  |  |  | 		query.Result = new(m.Preferences) | 
					
						
							| 
									
										
										
										
											2016-03-07 03:42:15 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-06 19:47:39 +08:00
										 |  |  | func SavePreferences(cmd *m.SavePreferencesCommand) error { | 
					
						
							|  |  |  | 	return inTransaction2(func(sess *session) error { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-16 05:49:52 +08:00
										 |  |  | 		var prefs m.Preferences | 
					
						
							|  |  |  | 		exists, err := sess.Where("org_id=? AND user_id=?", cmd.OrgId, cmd.UserId).Get(&prefs) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if !exists { | 
					
						
							|  |  |  | 			prefs = m.Preferences{ | 
					
						
							|  |  |  | 				UserId:          cmd.UserId, | 
					
						
							|  |  |  | 				OrgId:           cmd.OrgId, | 
					
						
							|  |  |  | 				HomeDashboardId: cmd.HomeDashboardId, | 
					
						
							|  |  |  | 				Timezone:        cmd.Timezone, | 
					
						
							|  |  |  | 				Theme:           cmd.Theme, | 
					
						
							| 
									
										
										
										
											2016-03-17 14:35:06 +08:00
										 |  |  | 				Created:         time.Now(), | 
					
						
							|  |  |  | 				Updated:         time.Now(), | 
					
						
							| 
									
										
										
										
											2016-03-16 05:49:52 +08:00
										 |  |  | 			} | 
					
						
							|  |  |  | 			_, err = sess.Insert(&prefs) | 
					
						
							|  |  |  | 			return err | 
					
						
							| 
									
										
										
										
											2016-03-07 04:32:22 +08:00
										 |  |  | 		} else { | 
					
						
							| 
									
										
										
										
											2016-03-16 05:49:52 +08:00
										 |  |  | 			prefs.HomeDashboardId = cmd.HomeDashboardId | 
					
						
							|  |  |  | 			prefs.Timezone = cmd.Timezone | 
					
						
							|  |  |  | 			prefs.Theme = cmd.Theme | 
					
						
							| 
									
										
										
										
											2016-03-17 14:35:06 +08:00
										 |  |  | 			prefs.Updated = time.Now() | 
					
						
							|  |  |  | 			prefs.Version += 1 | 
					
						
							| 
									
										
										
										
											2016-03-16 05:49:52 +08:00
										 |  |  | 			_, err = sess.Id(prefs.Id).Update(&prefs) | 
					
						
							|  |  |  | 			return err | 
					
						
							| 
									
										
										
										
											2016-03-07 04:32:22 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2016-03-06 19:47:39 +08:00
										 |  |  | 	}) | 
					
						
							|  |  |  | } |