From 43b474143cf1c55264ef033299aa253a7c98e618 Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Fri, 11 Mar 2016 06:30:05 -0800 Subject: [PATCH] Preferences model updated --- pkg/api/api.go | 3 +- pkg/api/preferences.go | 23 +++++++------- pkg/models/preferences.go | 30 +++++++++++-------- .../sqlstore/migrations/preferences_mig.go | 9 ++++-- pkg/services/sqlstore/preferences.go | 20 ++++++------- 5 files changed, 48 insertions(+), 37 deletions(-) diff --git a/pkg/api/api.go b/pkg/api/api.go index c02629ddd8f..bbf0fc522c9 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -96,7 +96,6 @@ func Register(r *macaron.Macaron) { r.Delete("/stars/dashboard/:id", wrap(UnstarDashboard)) r.Put("/password", bind(m.ChangeUserPasswordCommand{}), wrap(ChangeUserPassword)) r.Get("/quotas", wrap(GetUserQuotas)) - r.Combo("/prefs").Get(GetUserPreferences).Put(bind(m.SavePreferencesCommand{}), wrap(SaveUserPreferences)) }) // users (admin permission required) @@ -165,6 +164,8 @@ func Register(r *macaron.Macaron) { r.Delete("/:id", wrap(DeleteApiKey)) }, reqOrgAdmin) + r.Combo("/preferences").Get(GetPreferences).Put(bind(m.SavePreferencesCommand{}), wrap(SavePreferences)) + // Data sources r.Group("/datasources", func() { r.Get("/", GetDataSources) diff --git a/pkg/api/preferences.go b/pkg/api/preferences.go index b39d0446a9b..c95bcd46aa2 100644 --- a/pkg/api/preferences.go +++ b/pkg/api/preferences.go @@ -7,32 +7,33 @@ import ( ) // PUT /api/user/prefs -func SaveUserPreferences(c *middleware.Context, cmd m.SavePreferencesCommand) Response { +func SavePreferences(c *middleware.Context, cmd m.SavePreferencesCommand) Response { - cmd.PrefId = c.UserId - cmd.PrefType = `user` + cmd.UserId = c.UserId + cmd.OrgId = c.OrgId if err := bus.Dispatch(&cmd); err != nil { - return ApiError(500, "Failed to saved user preferences", err) + return ApiError(500, "Failed to saved preferences", err) } - return ApiSuccess("User preferences saved") + return ApiSuccess("Preferences saved") } // GET /api/user/prefs -func GetUserPreferences(c *middleware.Context) { +func GetPreferences(c *middleware.Context) { - query := m.GetPreferencesQuery{PrefId: c.UserId, PrefType: `user`} + query := m.GetPreferencesQuery{UserId: c.UserId, OrgId: c.OrgId} if err := bus.Dispatch(&query); err != nil { - c.JsonApiErr(500, "Failed to get preferences for user", err) + c.JsonApiErr(500, "Failed to get preferences", err) } dto := m.PreferencesDTO{ - PrefId: query.Result.PrefId, - PrefType: query.Result.PrefType, - PrefData: query.Result.PrefData, + Id: query.Result.Id, + UserId: query.Result.UserId, + OrgId: query.Result.OrgId, + Preference: query.Result.Preference, } c.JSON(200, dto) diff --git a/pkg/models/preferences.go b/pkg/models/preferences.go index 237e577dbc9..f2a26da4ba9 100644 --- a/pkg/models/preferences.go +++ b/pkg/models/preferences.go @@ -2,6 +2,7 @@ package models import ( "errors" + "time" ) // Typed errors @@ -10,18 +11,22 @@ var ( ) type Preferences struct { - Id int64 - PrefId int64 - PrefType string - PrefData map[string]interface{} + Id int64 + OrgId int64 + UserId int64 + Version int + Preference map[string]interface{} + Created time.Time + Updated time.Time } // --------------------- // QUERIES type GetPreferencesQuery struct { - PrefId int64 - PrefType string + Id int64 + OrgId int64 + UserId int64 Result *Preferences } @@ -30,16 +35,17 @@ type GetPreferencesQuery struct { // COMMANDS type SavePreferencesCommand struct { - PrefData map[string]interface{} `json:"prefData" binding:"Required"` - PrefId int64 `json:"-"` - PrefType string `json:"-"` + Preference map[string]interface{} `json:"Preference" binding:"Required"` + UserId int64 `json:"-"` + OrgId int64 `json:"-"` } // ---------------------- // DTO & Projections type PreferencesDTO struct { - PrefId int64 `json:"prefId"` - PrefType string `json:"prefType"` - PrefData map[string]interface{} `json:"prefData"` + Id int64 `json:"Id"` + UserId int64 `json:"UserId"` + OrgId int64 `json:"OrgId"` + Preference map[string]interface{} `json:"Preference"` } diff --git a/pkg/services/sqlstore/migrations/preferences_mig.go b/pkg/services/sqlstore/migrations/preferences_mig.go index 0ce01857b75..c14e47a8733 100644 --- a/pkg/services/sqlstore/migrations/preferences_mig.go +++ b/pkg/services/sqlstore/migrations/preferences_mig.go @@ -8,9 +8,12 @@ func addPreferencesMigrations(mg *Migrator) { Name: "preferences", Columns: []*Column{ {Name: "id", Type: DB_BigInt, IsPrimaryKey: true, IsAutoIncrement: true}, - {Name: "pref_id", Type: DB_Int, Nullable: false}, - {Name: "pref_type", Type: DB_NVarchar, Length: 255, Nullable: false}, - {Name: "pref_data", Type: DB_Text, Nullable: false}, + {Name: "org_id", Type: DB_Int, Nullable: false}, + {Name: "user_id", Type: DB_NVarchar, Length: 255, Nullable: false}, + {Name: "version", Type: DB_Int, Nullable: false}, + {Name: "preference", Type: DB_Text, Nullable: false}, + {Name: "created", Type: DB_DateTime, Nullable: false}, + {Name: "updated", Type: DB_DateTime, Nullable: false}, }, } diff --git a/pkg/services/sqlstore/preferences.go b/pkg/services/sqlstore/preferences.go index b03463f8089..9d395d95304 100644 --- a/pkg/services/sqlstore/preferences.go +++ b/pkg/services/sqlstore/preferences.go @@ -12,12 +12,12 @@ func init() { func GetPreferences(query *m.GetPreferencesQuery) error { - sql := `SELECT * FROM preferences WHERE pref_id = ? ` + - `AND pref_type = ?` + sql := `SELECT * FROM preferences WHERE user_id = ? ` + + `AND org_id = ?` var prefResults = make([]m.Preferences, 0) - resultsErr := x.Sql(sql, query.PrefId, query.PrefType).Find(&prefResults) + resultsErr := x.Sql(sql, query.UserId, query.OrgId).Find(&prefResults) if resultsErr != nil { return resultsErr @@ -35,12 +35,12 @@ func GetPreferences(query *m.GetPreferencesQuery) error { func SavePreferences(cmd *m.SavePreferencesCommand) error { return inTransaction2(func(sess *session) error { - sql := `SELECT * FROM preferences WHERE pref_id = ? ` + - `AND pref_type = ?` + sql := `SELECT * FROM preferences WHERE user_id = ? ` + + `AND org_id = ?` var prefResults = make([]m.Preferences, 0) - resultsErr := sess.Sql(sql, cmd.PrefId, cmd.PrefType).Find(&prefResults) + resultsErr := sess.Sql(sql, cmd.UserId, cmd.OrgId).Find(&prefResults) if resultsErr != nil { return resultsErr @@ -51,13 +51,13 @@ func SavePreferences(cmd *m.SavePreferencesCommand) error { var saveErr error if len(prefResults) == 0 { - savePref.PrefId = cmd.PrefId - savePref.PrefType = cmd.PrefType - savePref.PrefData = cmd.PrefData + savePref.UserId = cmd.UserId + savePref.OrgId = cmd.OrgId + savePref.Preference = cmd.Preference affectedRows, saveErr = sess.Insert(&savePref) } else { savePref = prefResults[0] - savePref.PrefData = cmd.PrefData + savePref.Preference = cmd.Preference affectedRows, saveErr = sess.Id(savePref.Id).Update(&savePref) }