mirror of
https://github.com/mattermost/mattermost.git
synced 2026-02-18 18:18:23 -05:00
GetAllForObject, use Master instead of replica
This commit is contained in:
parent
96899133c0
commit
d60f1e6ec4
2 changed files with 72 additions and 1 deletions
|
|
@ -233,7 +233,8 @@ func (s *SqlAutoTranslationStore) GetAllForObject(objectType, objectID string) (
|
|||
Where(sq.Eq{"ObjectType": objectType, "ObjectId": objectID})
|
||||
|
||||
var translations []Translation
|
||||
if err := s.GetReplica().SelectBuilder(&translations, query); err != nil {
|
||||
// Use GetMaster to avoid replica lag issues when workers fetch queued items
|
||||
if err := s.GetMaster().SelectBuilder(&translations, query); err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to get all translations for object_id=%s", objectID)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ func TestAutoTranslationStore(t *testing.T, rctx request.CTX, ss store.Store, s
|
|||
t.Run("IsUserEnabled", func(t *testing.T) { testAutoTranslationIsUserEnabled(t, rctx, ss) })
|
||||
t.Run("GetUserLanguage", func(t *testing.T) { testAutoTranslationGetUserLanguage(t, rctx, ss) })
|
||||
t.Run("GetActiveDestinationLanguages", func(t *testing.T) { testAutoTranslationGetActiveDestinationLanguages(t, rctx, ss) })
|
||||
t.Run("GetAllForObject", func(t *testing.T) { testAutoTranslationGetAllForObject(t, ss) })
|
||||
}
|
||||
|
||||
func testAutoTranslationIsUserEnabled(t *testing.T, rctx request.CTX, ss store.Store) {
|
||||
|
|
@ -376,3 +377,72 @@ func testAutoTranslationGetActiveDestinationLanguages(t *testing.T, rctx request
|
|||
assert.Contains(t, languages, "es")
|
||||
})
|
||||
}
|
||||
|
||||
func testAutoTranslationGetAllForObject(t *testing.T, ss store.Store) {
|
||||
objectID := model.NewId()
|
||||
objectType := model.TranslationObjectTypePost
|
||||
|
||||
t.Run("returns empty for nonexistent object", func(t *testing.T) {
|
||||
results, err := ss.AutoTranslation().GetAllForObject(objectType, model.NewId())
|
||||
require.NoError(t, err)
|
||||
assert.Empty(t, results)
|
||||
})
|
||||
|
||||
t.Run("returns all translations for an object", func(t *testing.T) {
|
||||
// Save translations in two languages
|
||||
err := ss.AutoTranslation().Save(&model.Translation{
|
||||
ObjectID: objectID,
|
||||
ObjectType: objectType,
|
||||
Lang: "es",
|
||||
Provider: "test",
|
||||
Type: model.TranslationTypeString,
|
||||
Text: "hola",
|
||||
State: model.TranslationStateReady,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
err = ss.AutoTranslation().Save(&model.Translation{
|
||||
ObjectID: objectID,
|
||||
ObjectType: objectType,
|
||||
Lang: "fr",
|
||||
Provider: "test",
|
||||
Type: model.TranslationTypeString,
|
||||
Text: "bonjour",
|
||||
State: model.TranslationStateReady,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
results, err := ss.AutoTranslation().GetAllForObject(objectType, objectID)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, results, 2)
|
||||
|
||||
langToText := make(map[string]string)
|
||||
for _, tr := range results {
|
||||
assert.Equal(t, objectID, tr.ObjectID)
|
||||
assert.Equal(t, objectType, tr.ObjectType)
|
||||
langToText[tr.Lang] = tr.Text
|
||||
}
|
||||
assert.Equal(t, "hola", langToText["es"])
|
||||
assert.Equal(t, "bonjour", langToText["fr"])
|
||||
})
|
||||
|
||||
t.Run("does not return translations for other objects", func(t *testing.T) {
|
||||
otherID := model.NewId()
|
||||
err := ss.AutoTranslation().Save(&model.Translation{
|
||||
ObjectID: otherID,
|
||||
ObjectType: objectType,
|
||||
Lang: "de",
|
||||
Provider: "test",
|
||||
Type: model.TranslationTypeString,
|
||||
Text: "hallo",
|
||||
State: model.TranslationStateReady,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
results, err := ss.AutoTranslation().GetAllForObject(objectType, objectID)
|
||||
require.NoError(t, err)
|
||||
for _, tr := range results {
|
||||
assert.Equal(t, objectID, tr.ObjectID)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue