MM-15794 Migrate "Session.Get" to Sync by default (#10990)
Этот коммит содержится в:
@@ -75,32 +75,28 @@ func (me SqlSessionStore) Save(session *model.Session) (*model.Session, *model.A
|
||||
return session, nil
|
||||
}
|
||||
|
||||
func (me SqlSessionStore) Get(sessionIdOrToken string) store.StoreChannel {
|
||||
return store.Do(func(result *store.StoreResult) {
|
||||
var sessions []*model.Session
|
||||
func (me SqlSessionStore) Get(sessionIdOrToken string) (*model.Session, *model.AppError) {
|
||||
var sessions []*model.Session
|
||||
|
||||
if _, err := me.GetReplica().Select(&sessions, "SELECT * FROM Sessions WHERE Token = :Token OR Id = :Id LIMIT 1", map[string]interface{}{"Token": sessionIdOrToken, "Id": sessionIdOrToken}); err != nil {
|
||||
result.Err = model.NewAppError("SqlSessionStore.Get", "store.sql_session.get.app_error", nil, "sessionIdOrToken="+sessionIdOrToken+", "+err.Error(), http.StatusInternalServerError)
|
||||
} else if len(sessions) == 0 {
|
||||
result.Err = model.NewAppError("SqlSessionStore.Get", "store.sql_session.get.app_error", nil, "sessionIdOrToken="+sessionIdOrToken, http.StatusNotFound)
|
||||
} else {
|
||||
result.Data = sessions[0]
|
||||
if _, err := me.GetReplica().Select(&sessions, "SELECT * FROM Sessions WHERE Token = :Token OR Id = :Id LIMIT 1", map[string]interface{}{"Token": sessionIdOrToken, "Id": sessionIdOrToken}); err != nil {
|
||||
return nil, model.NewAppError("SqlSessionStore.Get", "store.sql_session.get.app_error", nil, "sessionIdOrToken="+sessionIdOrToken+", "+err.Error(), http.StatusInternalServerError)
|
||||
} else if len(sessions) == 0 {
|
||||
return nil, model.NewAppError("SqlSessionStore.Get", "store.sql_session.get.app_error", nil, "sessionIdOrToken="+sessionIdOrToken, http.StatusNotFound)
|
||||
}
|
||||
session := sessions[0]
|
||||
|
||||
tcs := me.Team().GetTeamsForUser(sessions[0].UserId)
|
||||
if rtcs := <-tcs; rtcs.Err != nil {
|
||||
result.Err = model.NewAppError("SqlSessionStore.Get", "store.sql_session.get.app_error", nil, "sessionIdOrToken="+sessionIdOrToken+", "+rtcs.Err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
} else {
|
||||
tempMembers := rtcs.Data.([]*model.TeamMember)
|
||||
sessions[0].TeamMembers = make([]*model.TeamMember, 0, len(tempMembers))
|
||||
for _, tm := range tempMembers {
|
||||
if tm.DeleteAt == 0 {
|
||||
sessions[0].TeamMembers = append(sessions[0].TeamMembers, tm)
|
||||
}
|
||||
}
|
||||
}
|
||||
rtcs := <-me.Team().GetTeamsForUser(sessions[0].UserId)
|
||||
if rtcs.Err != nil {
|
||||
return nil, model.NewAppError("SqlSessionStore.Get", "store.sql_session.get.app_error", nil, "sessionIdOrToken="+sessionIdOrToken+", "+rtcs.Err.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
tempMembers := rtcs.Data.([]*model.TeamMember)
|
||||
sessions[0].TeamMembers = make([]*model.TeamMember, 0, len(tempMembers))
|
||||
for _, tm := range tempMembers {
|
||||
if tm.DeleteAt == 0 {
|
||||
sessions[0].TeamMembers = append(sessions[0].TeamMembers, tm)
|
||||
}
|
||||
})
|
||||
}
|
||||
return session, nil
|
||||
}
|
||||
|
||||
func (me SqlSessionStore) GetSessions(userId string) store.StoreChannel {
|
||||
|
||||
@@ -312,8 +312,8 @@ type BotStore interface {
|
||||
}
|
||||
|
||||
type SessionStore interface {
|
||||
Get(sessionIdOrToken string) (*model.Session, *model.AppError)
|
||||
Save(session *model.Session) (*model.Session, *model.AppError)
|
||||
Get(sessionIdOrToken string) StoreChannel
|
||||
GetSessions(userId string) StoreChannel
|
||||
GetSessionsWithActiveDeviceIds(userId string) ([]*model.Session, *model.AppError)
|
||||
Remove(sessionIdOrToken string) StoreChannel
|
||||
|
||||
@@ -42,19 +42,28 @@ func (_m *SessionStore) Cleanup(expiryTime int64, batchSize int64) {
|
||||
}
|
||||
|
||||
// Get provides a mock function with given fields: sessionIdOrToken
|
||||
func (_m *SessionStore) Get(sessionIdOrToken string) store.StoreChannel {
|
||||
func (_m *SessionStore) Get(sessionIdOrToken string) (*model.Session, *model.AppError) {
|
||||
ret := _m.Called(sessionIdOrToken)
|
||||
|
||||
var r0 store.StoreChannel
|
||||
if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok {
|
||||
var r0 *model.Session
|
||||
if rf, ok := ret.Get(0).(func(string) *model.Session); ok {
|
||||
r0 = rf(sessionIdOrToken)
|
||||
} else {
|
||||
if ret.Get(0) != nil {
|
||||
r0 = ret.Get(0).(store.StoreChannel)
|
||||
r0 = ret.Get(0).(*model.Session)
|
||||
}
|
||||
}
|
||||
|
||||
return r0
|
||||
var r1 *model.AppError
|
||||
if rf, ok := ret.Get(1).(func(string) *model.AppError); ok {
|
||||
r1 = rf(sessionIdOrToken)
|
||||
} else {
|
||||
if ret.Get(1) != nil {
|
||||
r1 = ret.Get(1).(*model.AppError)
|
||||
}
|
||||
}
|
||||
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
// GetSessions provides a mock function with given fields: userId
|
||||
|
||||
@@ -429,7 +429,7 @@ func testOAuthStoreDeleteApp(t *testing.T, ss store.Store) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if err := (<-ss.Session().Get(s1.Token)).Err; err == nil {
|
||||
if _, err := ss.Session().Get(s1.Token); err == nil {
|
||||
t.Fatal("should error - session should be deleted")
|
||||
}
|
||||
|
||||
|
||||
@@ -59,10 +59,10 @@ func testSessionGet(t *testing.T, ss store.Store) {
|
||||
s3, err = ss.Session().Save(s3)
|
||||
require.Nil(t, err)
|
||||
|
||||
if rs1 := (<-ss.Session().Get(s1.Id)); rs1.Err != nil {
|
||||
t.Fatal(rs1.Err)
|
||||
if session, err := ss.Session().Get(s1.Id); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if rs1.Data.(*model.Session).Id != s1.Id {
|
||||
if session.Id != s1.Id {
|
||||
t.Fatal("should match")
|
||||
}
|
||||
}
|
||||
@@ -116,17 +116,17 @@ func testSessionRemove(t *testing.T, ss store.Store) {
|
||||
s1, err := ss.Session().Save(s1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if rs1 := (<-ss.Session().Get(s1.Id)); rs1.Err != nil {
|
||||
t.Fatal(rs1.Err)
|
||||
if session, err := ss.Session().Get(s1.Id); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if rs1.Data.(*model.Session).Id != s1.Id {
|
||||
if session.Id != s1.Id {
|
||||
t.Fatal("should match")
|
||||
}
|
||||
}
|
||||
|
||||
store.Must(ss.Session().Remove(s1.Id))
|
||||
|
||||
if rs2 := (<-ss.Session().Get(s1.Id)); rs2.Err == nil {
|
||||
if _, err := ss.Session().Get(s1.Id); err == nil {
|
||||
t.Fatal("should have been removed")
|
||||
}
|
||||
}
|
||||
@@ -138,17 +138,17 @@ func testSessionRemoveAll(t *testing.T, ss store.Store) {
|
||||
s1, err := ss.Session().Save(s1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if rs1 := (<-ss.Session().Get(s1.Id)); rs1.Err != nil {
|
||||
t.Fatal(rs1.Err)
|
||||
if session, err := ss.Session().Get(s1.Id); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if rs1.Data.(*model.Session).Id != s1.Id {
|
||||
if session.Id != s1.Id {
|
||||
t.Fatal("should match")
|
||||
}
|
||||
}
|
||||
|
||||
store.Must(ss.Session().RemoveAllSessions())
|
||||
|
||||
if rs2 := (<-ss.Session().Get(s1.Id)); rs2.Err == nil {
|
||||
if _, err := ss.Session().Get(s1.Id); err == nil {
|
||||
t.Fatal("should have been removed")
|
||||
}
|
||||
}
|
||||
@@ -160,17 +160,17 @@ func testSessionRemoveByUser(t *testing.T, ss store.Store) {
|
||||
s1, err := ss.Session().Save(s1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if rs1 := (<-ss.Session().Get(s1.Id)); rs1.Err != nil {
|
||||
t.Fatal(rs1.Err)
|
||||
if session, err := ss.Session().Get(s1.Id); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if rs1.Data.(*model.Session).Id != s1.Id {
|
||||
if session.Id != s1.Id {
|
||||
t.Fatal("should match")
|
||||
}
|
||||
}
|
||||
|
||||
store.Must(ss.Session().PermanentDeleteSessionsByUser(s1.UserId))
|
||||
|
||||
if rs2 := (<-ss.Session().Get(s1.Id)); rs2.Err == nil {
|
||||
if _, err := ss.Session().Get(s1.Id); err == nil {
|
||||
t.Fatal("should have been removed")
|
||||
}
|
||||
}
|
||||
@@ -182,17 +182,17 @@ func testSessionRemoveToken(t *testing.T, ss store.Store) {
|
||||
s1, err := ss.Session().Save(s1)
|
||||
require.Nil(t, err)
|
||||
|
||||
if rs1 := (<-ss.Session().Get(s1.Id)); rs1.Err != nil {
|
||||
t.Fatal(rs1.Err)
|
||||
if session, err := ss.Session().Get(s1.Id); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if rs1.Data.(*model.Session).Id != s1.Id {
|
||||
if session.Id != s1.Id {
|
||||
t.Fatal("should match")
|
||||
}
|
||||
}
|
||||
|
||||
store.Must(ss.Session().Remove(s1.Token))
|
||||
|
||||
if rs2 := (<-ss.Session().Get(s1.Id)); rs2.Err == nil {
|
||||
if _, err := ss.Session().Get(s1.Id); err == nil {
|
||||
t.Fatal("should have been removed")
|
||||
}
|
||||
|
||||
@@ -260,10 +260,10 @@ func testSessionStoreUpdateLastActivityAt(t *testing.T, ss store.Store) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if r1 := <-ss.Session().Get(s1.Id); r1.Err != nil {
|
||||
t.Fatal(r1.Err)
|
||||
if session, err := ss.Session().Get(s1.Id); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if r1.Data.(*model.Session).LastActivityAt != 1234567890 {
|
||||
if session.LastActivityAt != 1234567890 {
|
||||
t.Fatal("LastActivityAt not updated correctly")
|
||||
}
|
||||
}
|
||||
@@ -320,16 +320,16 @@ func testSessionCleanup(t *testing.T, ss store.Store) {
|
||||
|
||||
ss.Session().Cleanup(now, 1)
|
||||
|
||||
err = (<-ss.Session().Get(s1.Id)).Err
|
||||
_, err = ss.Session().Get(s1.Id)
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = (<-ss.Session().Get(s2.Id)).Err
|
||||
_, err = ss.Session().Get(s2.Id)
|
||||
assert.Nil(t, err)
|
||||
|
||||
err = (<-ss.Session().Get(s3.Id)).Err
|
||||
_, err = ss.Session().Get(s3.Id)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
err = (<-ss.Session().Get(s4.Id)).Err
|
||||
_, err = ss.Session().Get(s4.Id)
|
||||
assert.NotNil(t, err)
|
||||
|
||||
store.Must(ss.Session().Remove(s1.Id))
|
||||
|
||||
@@ -67,7 +67,7 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) {
|
||||
t.Fatal(result.Err)
|
||||
}
|
||||
|
||||
if err = (<-ss.Session().Get(s1.Token)).Err; err == nil {
|
||||
if _, err = ss.Session().Get(s1.Token); err == nil {
|
||||
t.Fatal("should error - session should be deleted")
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) {
|
||||
t.Fatal(result.Err)
|
||||
}
|
||||
|
||||
if err := (<-ss.Session().Get(s2.Token)).Err; err == nil {
|
||||
if _, err := ss.Session().Get(s2.Token); err == nil {
|
||||
t.Fatal("should error - session should be deleted")
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if err = (<-ss.Session().Get(s1.Token)).Err; err == nil {
|
||||
if _, err = ss.Session().Get(s1.Token); err == nil {
|
||||
t.Fatal("should error - session should be deleted")
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user