diff --git a/store/sqlstore/session_store.go b/store/sqlstore/session_store.go index 702130217b..c738587fce 100644 --- a/store/sqlstore/session_store.go +++ b/store/sqlstore/session_store.go @@ -249,19 +249,15 @@ func (me SqlSessionStore) UpdateDeviceId(id string, deviceId string, expiresAt i } func (me SqlSessionStore) UpdateProps(session *model.Session) error { - oldSession, err := me.Get(context.Background(), session.Id) - if err != nil { - return err - } - oldSession.Props = session.Props - - count, err := me.GetMaster().Update(oldSession) + _, err := me.GetMaster().Exec(`UPDATE Sessions + SET Props=:Props + WHERE Id=:Id`, map[string]interface{}{ + "Props": model.MapToJson(session.Props), + "Id": session.Id, + }) if err != nil { return errors.Wrap(err, "failed to update Session") } - if count != 1 { - return fmt.Errorf("updated Sessions were %d, expected 1", count) - } return nil } diff --git a/store/storetest/session_store.go b/store/storetest/session_store.go index 841e21cb8c..bf33268fed 100644 --- a/store/storetest/session_store.go +++ b/store/storetest/session_store.go @@ -70,6 +70,15 @@ func testSessionGet(t *testing.T, ss store.Store) { require.NoError(t, err) require.Equal(t, session.Id, s1.Id, "should match") + session.Props[model.SessionPropOs] = "linux" + session.Props[model.SessionPropBrowser] = "Chrome" + err = ss.Session().UpdateProps(session) + require.NoError(t, err) + + session2, err := ss.Session().Get(context.Background(), session.Id) + require.NoError(t, err) + require.Equal(t, session.Props, session2.Props, "should match") + data, err := ss.Session().GetSessions(s1.UserId) require.NoError(t, err) require.Len(t, data, 3, "should match len")